我在我的应用程序中使用了 iojs 和 koa,最近我决定将 iojs 更新到 nodejs v4.4.4。更新非常顺利,我的应用程序立即运行。问题是我在我的开发机器上使用自签名 SSL 证书,并且在我更新到 nodejs 后,当我尝试访问该网站时收到以下消息:
此站点无法提供安全连接
localhost 使用不受支持的协议。
ERR_SSL_VERSION_OR_CIPHER_MISMATCH
客户端和服务器不支持通用 SSL 协议版本或密码套件。这很可能是在服务器需要 RC4 时引起的,RC4 不再被认为是安全的。
我正在使用nvm
,所以我尝试切换到 iojs 并且网站再次运行。
经过一番阅读,我发现我必须更新openssl
到版本1.0.2g
而不是1.0.1g
我用来创建.key
和.crt
文件的版本。所以我更新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?