申请数字证书
首先需要申请一个免费的数字证书,前提是有个域名,申请起来还是很方便的。例如可以在腾讯云申请:https://www.qcloud.com/product/ssl,具体申请步骤请参考腾讯云文档,本文不再详细介绍。当然还有收费的数字证书,土豪随意。
数字证书申请成功后,下载下来,文件包含一个私钥(.key)和一个数字证书(.crt)。
申请证书时需要制定域名,例如我自己的域名是gw2.vsgames.cn,为了方便在本地上调试,需要配置HOSTS将域名映射到localhost:
127.0.0.1 gw2.vsgames.cn
这样本地启动服务,可以通过域名gw2.vsgames.cn在浏览器访问HTTPS网站。
接下来分别在Nginx和Node.js上试试HTTPS。
Nginx配置
server {
listen 443 ssl;
server_name gw2.vsgames.cn;
ssl_certificate /Users/wucao/Desktop/gw2.vsgames.cn/Nginx/1_gw2.vsgames.cn_bundle.crt; # 证书文件
ssl_certificate_key /Users/wucao/Desktop/gw2.vsgames.cn/Nginx/2_gw2.vsgames.cn.key; # 私钥文件
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers HIGH:!aNULL:!MD5;
location / {
root /usr/share/nginx/html;
}
}
配置好重启Nginx,试试:https://gw2.vsgames.cn/
Node.js配置
const https = require('https');
const fs = require('fs');
const options = {
key: fs.readFileSync('/Users/wucao/Desktop/gw2.vsgames.cn/Nginx/2_gw2.vsgames.cn.key'),
cert: fs.readFileSync('/Users/wucao/Desktop/gw2.vsgames.cn/Nginx/1_gw2.vsgames.cn_bundle.crt')
};
https.createServer(options, function(req, res) {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
}).listen(8000);
试试:https://gw2.vsgames.cn:8000/