第一步、安装OpenSSL
(1)下载OpenSSL软件包
地址:https://slproweb.com/products/Win32OpenSSL.html
OpenSSL版本说明:
Win64 OpenSSL v1.1.1wLight,安装Win64 OpenSSL v1.1.1w最常用的软件包
Win64 OpenSSL v1.1.1w,安装Win64 OpenSSL v1.1.1w完整软件包
Win32 OpenSSL v1.1.1w Light,安装Win32 OpenSSL v1.1.1w最常用的软件包
Win32 OpenSSL v1.1.1w,安装Win32 OpenSSL v1.1.1w完整软件包
(2)、安装
选择安装目录
注意⚠️ 这一步,“Select Additional Tasks”,选择第二项 The OpenSSL binaries(/bin) directory。
原因:如果选择第一项,拷贝到系统目录,当其他软件使用的OpenSSL版本我们安装这个版本不同时,可能导致该软件无法使用。
所以选择将dll安装在OpenSSL安装目录下即可。
取消赞助,直接点完成即可。
(3)、验证安装
直接在cmd中,输入命令,查看OpenSSL版本
openssl version -a
如果你和我一样,并不是我们安装的OpenSSL 1.1.1w版本, 该怎么办呢?
如图:
解决方法:
在系统环境变量 path 字段中,将我们新安装的openssl目录移动到顶部即可。
再次验证,查看OpenSSL版本正确。
第二步、使用 OpenSSL 生成 SSL Key 和 CSR 文件
openssl req -new -newkey rsa:2048 -sha256 -nodes -out game_123.csr -keyout game_123.key -subj "/C=CN/ST=Sichuan/L=Chengdu/O=Nubomed Inc./OU=Web Security/CN=test.game.com"
下面是上述命令相关字段含义:
-new:指定生成一个新的CSR文件。
-nodes:指定密钥文件不被加密。
-sha256:指定摘要算法。
-newkey rsa:2048:指定密钥类型和长度。
-subj :相关字段含义
-
C:Country ,单位所在国家,为两位数的国家缩写,如: CN 是中国
-
ST 字段: State/Province ,单位所在州或省
-
L 字段: Locality ,单位所在城市 / 或县区
-
O 字段: Organization ,单位名称
-
OU 字段: Organization Unit,下属部门名称,也常用于显示证书相关信息,如证书类型、证书产品名称、身份验证类型、验证内容等
-
CN 字段: Common Name ,网站域名
第三步、生成crt文件
openssl x509 -trustout -req -days 3650 -in game_123.csr -signkey game_123.key -out game_123.crt
第四步、下载nginx
下载地址:http://nginx.org/en/download.html
第五步、解压nginx-1.18.0.zip,在根目录下创建ssl文件夹,将上面生成的crt证书和key文件,复制到该目录下
第六步、修改配置文件nginx.conf
http内添加:
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
upstream websocket{
server localhost:123;
}
server添加:
server {
listen 123;
server_name game.123.com;
ssl on;
ssl_certificate D:/nginx-1.18.0/ssl/game_123.crt;
ssl_certificate_key D:/nginx-1.18.0/ssl/game_123.key;
ssl_session_timeout 30m;
ssl_verify_client off;
location / {
proxy_pass http://websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
如图:
第七步,启动 nginx 服务
第八步、测试wss连接方式
wss://game.123:123/