备忘录:使用Node.js和Nginx进行https(自签证书)。备忘录:用Node.js和Nginx设置https(使用自签名证书)
为了测试WebRTC,我使用Node.js进行了HTTPS加密,暂时保留。使用OpenSSH进行自签名。
制作证书
从DL页面下载并安装Light版。
使用以下命令创建证书和密钥。
openssl genrsa 2024 > server.key
openssl req -new -key server.key > server.csr
openssl x509 -req -days 3650 -signkey server.key < server.csr > server.crt
尽管上述的命令在3650天内生成,但即使在浏览器端信任,我们没有尝试过超过13个月有效期限会发生什么。
对于 Windows Server,也可以使用 PowerShell 以如下方式创建证书:
New-SelfSignedCertificate -DnsName “*.xxx.com” -CertStoreLocation “cert:\LocalMachine\My”。
但要注意的是,这种情况下只能以 pfx 格式与私钥一起导出,所以除非需要在 IIS 等地方使用,否则似乎 OpenSSH 更适合。
Node.js 是一种能够运行 JavaScript 的开发平台。
只需使用已创建的密钥进行https设置。
但实际上,只需在创建服务器时将文件读取并指定为第一个参数。
const fs = require('fs');
const sslOptions = {
key: fs.readFileSync('server.key'),
cert: fs.readFileSync('server.crt')
};
const express = require('express');
const app = express();
const server = require('https').Server(sslOptions,app);
server.listen(3000);
在Mac上的Chrome会出现NET::ERR_CERT_INVALID错误导致无法访问的情况下,似乎只需要键入”thisisunsafe”即可。
nginx – 使用nginx
如果要将证书放入nginx,请参考这里的方法。
这个方法是将中间CA证书与证书结合在一起,但如果是自制证书,就保持不变。
由于是Windows系统,因此配置文件位于G:\apps\nginx-1.20\conf\nginx.conf。
请在以下内容中添加ssl到监听端口,并设置证书相关文件。
server {
listen 443 ssl;
ssl_certificate G:\apps\nginx-1.20\conf\server.crt;
ssl_certificate_key G:\apps\nginx-1.20\conf\server.key;
}