CNode

本地生成SSL证书,NodeJS同时支持http和https连接

分享
Ggocpplua发布于5 年前最后回复5 年前8 回复4969 浏览0 收藏

socketio:2.3.0 node:14.16.1

1、生成证书

 openssl genrsa -des3 -out server.pass.key 2048
openssl rsa -in server.pass.key -out server.key
openssl req -new -key server.key -out server.csr -subj “/C=CN/ST=HangZhou/L=XIAOSHAN/O=localhost/OU=localhost/CN=localshot”
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt #生成证书

2、Coding

const port = 3000
const sport = 3001
const option = {
“key”: fs.readFileSync(’./ts_output/pem/server.key’, ‘utf8’),
“cert”: fs.readFileSync(’./ts_output/pem/server.crt’, ‘utf8’)
};

var httpServer = require(‘http’).createServer();
var httpsServer = require(‘https’).createServer(option);
var sio = require(‘socket.io’)(httpServer);
var ssio = require(‘socket.io’)(httpsServer);

sio.on(‘connection’, function(client){
console.log(’-----------no ssl-----------------’)
});
});

ssio.on(‘connection’, function(client){
console.log(’-----------ssl-----------------’)
});
});

httpServer.listen(port);
httpsServer.listen(sport)
console.log(‘sio Server listening at port %d’, port);
console.log(‘ssio Server listening at port %d’, sport);
// Uncaught exception handler
process.on(‘uncaughtException’, function(err) {
	console.error(’ Caught exception: ’ + err.stack);
});

3、通过socketio client 访问:socketio 2.x

因为https需要对浏览器添加信任,所以操作前请现在浏览器输入: http://127.0.0.1:3001

查看回复

回复 (8)

L
leizongmin#1·5 年前

如果是在线上使用 HTTPS,可以试试 certbot https://certbot.eff.org/ 让它自动配置 Nginx 和定期刷新证书(避免过期),然后 Nginx 将 HTTP 和 HTTPS 请求反向代理到 Node.js 应用,Node.js 应用只需要提供 HTTP 即可。

I
i5ting#5·5 年前
G
gocpplua#6·5 年前
引用 zengming00https://github.com/FiloSottile/mkcert

@zengming00 这个我可以认为是使用脚本,自动添加了信任吧?

G
gocpplua#7·5 年前
引用 i5tinghttps://github.com/acmesh official/acme.sh 这个更简单一些

@i5ting 感谢!!  letsencrypt这个我看过,可以免费生成证书,网页操作还方便。 acme.sh支持这个多功能,真是一个利器,哈哈。 当前我目前还是在本地玩玩的,暂时还用不到。

G
gocpplua#8·5 年前
引用 daGaiGuanYuhttps://blog.csdn.net/csdn372301467/article/details/113107817

@daGaiGuanYu 感谢,还是比较详细的

参与回复
登录后即可参与回复。登录