备忘录:使用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;
}