【发布时间】:2016-09-05 12:02:50
【问题描述】:
我在我的应用程序中使用 iojs 和 koa,最近我决定将 iojs 更新到 nodejs v4.4.4。更新非常顺利,我的应用程序立即运行。问题是我在我的开发机器上使用自签名 SSL 证书,在我更新到 nodejs 后,当我尝试访问该网站时收到以下消息:
此站点无法提供安全连接
localhost 使用不受支持的协议。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
客户端和服务器不支持通用的 SSL 协议版本或 密码套件。这很可能是服务器需要RC4时造成的, 这不再被认为是安全的。
我正在使用nvm,所以我尝试切换到 iojs 并且网站再次运行。
经过阅读后,我发现我必须将openssl 更新为版本1.0.2g,而不是我用来创建.key 和.crt 文件的1.0.1g。所以我更新了openssl 并生成了新的密钥和证书文件,如下所示:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
遗憾的是,这并没有解决问题。
这是我用来在服务器上设置 https 的代码:
let sslOptions = {
key: fs.readFileSync('/etc/apache2/ssl/apache.key'),
cert: fs.readFileSync('/etc/apache2/ssl/apache.crt')
};
let server = require('https').createServer(sslOptions, app.callback())
我做错了吗?为什么对iojs有效,对nodejs无效?
【问题讨论】:
-
错误消息显示在浏览器中,对吗?哪一个?
-
它在 Chrome 中显示,但我在 Firefox 中也收到一条错误消息。在 Firefox 中是
Error code: SSL_ERROR_INAPPROPRIATE_FALLBACK_ALERT -
如果它仅用于开发目的,我建议添加一个例外。请参阅此处的 cmets gaboesquivel.com/blog/2014/… 了解 chrome。如果不行,你有没有想过让我们加密?或者更残酷的this
-
我已经尝试了第一个链接。它几乎与我上面描述的相同。
-
为什么不试试 nginx 可以帮助 SSL 便宜而且不需要购买 SSL。
标签: node.js ssl openssl koa iojs