我有一个在 EC2 实例上运行的 Node 实例。我刚刚获得了 SSL 证书、私钥和 ca-bundle。因此我将它们放入 Nodejs 中,如下所示:
var options = {
key: fs.readFileSync("/path/to/private/key"),
crt: fs.readFileSync("/path/to/crt"),
ca: fs.readFileSync("/path/to/ca")
}
var server = require("https").createServer(options, app).listen(443)
但这种方法不起作用。浏览器一直说ERR_SSL_VERSION_OR_CIPHER_MISMATCH。我认为这应该是启动 https 服务器的正确方法。
几个小时没有找到任何线索后,我转向 Nginx。我运行 Nginx 并将其配置设置为通过密钥和 crt 文件接受 ssl。令人惊讶的是,Nginx 处理得很好,并成功将流量传递到我的 Node 服务器(现在正在监听端口 3000 作为代理端口)。浏览器也可以通过 443 顺利获取内容,并且 https 安全图标亮起。
因此密钥文件绝对没问题,因为 Nginx 使用这些文件来确保一切正常。那么 Node 服务器怎么可能不启用 SSL?这和 EC2 或 AWS 有什么关系吗?