文章类网站,wordpress 需要php,有什么免费开发网站建设软件有哪些,百度资源最近需要创建WebSocket服务器并使用SSL证书#xff0c;由于是内网测试#xff0c;所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书#xff0c;这…最近需要创建WebSocket服务器并使用SSL证书由于是内网测试所以需要使用指定IP的自签SSL证书。 其实笔者前面博文 使用nexus3作为Docker镜像仓库 解决nexus3登录x509: certificate has expired or is not yet valid 中有创建过相应的证书这里再记录一下
以下命令都在Windows命令行下或者Linux终端下输入运行。
一、生成CA根证书私钥
$ openssl genrsa -out ca.key 2048二、生成CA证书
$ openssl req -x509 -new -nodes -key ca.key -days 365 -out ca.crt如果不想交互输入证书的国家城市组织名等等信息可以在上面的命令加上参数-subj /CN*
三、生成服务器私钥
与生成CA证书私钥一样
$ openssl genrsa -out server.key 2048四、生成服务器证书签名请求文件
证书签名请求文件即CSR(Certificate Signing Request)文件这里直接使用参数-subj /CN*跳过交互输入信息
$ openssl req -new -key server.key -subj /CN* -out server.csr当然也可以像前面一样来使用参数-subj /CN*手动输入各信息。
五、使用CA证书生成服务器签名证书
1. 创建辅助文件
为了使用IP进行自签名需要创建一个辅助文件
$ echo subjectAltNameIP:192.168.0.8 extfile.cnf这样做只能允许一个IP地址如果需要有多个IP地址需要编辑extfile.cnf
subjectAltName alt_names[alt_names]
IP.1 192.168.0.8
IP.2 127.0.0.1还可以设置DNS
subjectAltName alt_names[alt_names]
IP.1 192.168.0.8
IP.2 127.0.0.1
DNS.1 localhost2. 生成服务器签名证书
$ openssl x509 -req -in server.csr -CA ca.crt -CAkey ca.key -CAcreateserial -extfile extfile.cnf -out server.crt -days 365六、测试
在服务器中需要使用server.key和server.crt文件启动https或者wss服务客户端则需要使用ca.crt证书来连接服务器这样就可以正常通信了。
下面给出一个JS的wss客户端代码main.js
const fs require(fs);
const ca fs.readFileSync(ca.crt,utf8);
const WebSocket require(ws);
//const url wss://192.168.0.8:8300;
const url wss://127.0.0.1:8300;
//const url wss://localhost:8300;
const client new WebSocket(url,{ca: ca}
);client.on(connectFailed, function (error) {console.log(连接失败:, error.toString());
});client.on(error, function (error) {console.log(连接错误:, error.toString());
});client.on(close, function () {console.log(连接关闭);
});client.on(message, function (message) {if (message.type utf8) {console.log(接收到消息:, message.utf8Data);}
});client.on(open, function () {console.log(WebSocket 客户端已连接);
});需要先使用npm安装ws库
npm install ws如果对你有帮助欢迎点赞收藏