详解HTTPS 的原理和 NodeJS 的实现

2020-06-17 06:30:33易采站长站整理

# 自己对证书进行签名,签名的有效期是365天
openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

# 去除证书文件的password
cp server.key server.key.orig
openssl rsa -in server.key.orig -out server.key

最终在建立HTTPS链接中使用的文件是

server.crt
server.key

NodeJS建立一个HTTPS的Server


var httpsModule = require('https');
var fs = require('fs');

var https = httpsModule.Server({
key: fs.readFileSync('/path/to/server.key'),
cert: fs.readFileSync('/path/to/server.crt')
}, function(req, res){
res.writeHead(200);
res.end("hello worldn");
});

//https默认de监听端口时443,启动1000以下的端口时需要sudo权限
https.listen(443, function(err){
console.log("https listening on port: 443");
});

这里使用的fs.readFileSync方法会阻塞其他进程直到文件的读取完毕,在读取关键的配置文件的时候这样的方法是比较适宜的。