微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

node.js – 从iojs升级到nodejs v4.4.4后,自签名SSL不起作用

我在我的应用程序中使用iojs和koa,最近我决定将iojs更新为nodejs v4.4.4.更新非常顺利,我的应用程序立即运行.问题是我在我的开发机器上使用自签名SSL证书,在我更新到nodejs后,当我尝试访问网站时收到以下消息:

This site can’t provide a secure connection

localhost uses an unsupported protocol.

ERR_SSL_VERSION_OR_CIPHER_MISMATCH

The client and server don’t support a common SSL protocol version or
cipher suite. This is likely to be caused when the server needs RC4,
which is no longer considered secure.

我正在使用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一起使用?

解决方法

根据错误消息判断自签名证书没有任何问题.但是提供ssl连接的“服务器”不支持协议版本和密码套件的合适组合.
openssl s_client -connect localhost:443

或者更详细

openssl s_client -connect localhost:443 -debug

可能会告诉你在ssl握手期间出了什么问题.

您还可以找到使用名为sslscan的工具提供的组合

apt-get install sslscan
sslscan localhost:443
sslscan localhost:443 | grep Accepted

最后,您需要通过提供更多的ssloptions来配置您的https服务器提供的密码套件.

见这里https://certsimple.com/blog/a-plus-node-js-ssl

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐