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

标签 node.js ssl openssl koa iojs

我在我的应用程序中使用了 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 而不是我的 1.0.1g用于创建 .key.crt 文件。所以我更新了 openssl 并生成了新的 key 和证书文件,如下所示:

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 连接的“服务器”不支持协议(protocol)版本和密码套件的适当组合。

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

关于node.js - 从 iojs 升级到 nodejs v4.4.4 后,自签名 SSL 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37139718/

相关文章:

javascript - node.js mysql通配符搜索无法执行

c++ - 测试 TCP 套接字服务器?

javascript - Node JSON https 请求变得未定义

node.js - Node JS : What's the difference between a Duplex stream and a Transform stream?

java - 如何使用 Smack XMPP 库创建 SSL 连接?

networking - 具有完整转储时解密 SSL 连接

python - 使用 python 从 Windows 商店访问特定证书

javascript - 使用 CryptoJS (JAVASCRIPT) 和 OpenSSL (PHP) 实现相同的加密

python - urllib2:读取 https url 失败

node.js - 谷歌云中的 Cron 作业