首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自签名SSL从iojs升级到nodejs v4.4.4后无法工作

自签名SSL从iojs升级到nodejs v4.4.4后无法工作
EN

Stack Overflow用户
提问于 2016-05-10 13:17:22
回答 4查看 4.9K关注 0票数 6

我在我的应用程序中使用了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的代码:

代码语言:javascript
复制
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?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2017-08-07 11:14:36

谢谢你的回答!

正如我所怀疑的,这个问题与openssl无关。

在我的应用程序中,我有一个带有应用程序配置的config.js文件。在其中,我读取证书文件并将它们添加到javascript对象中。

问题是,我正在使用lodash模块合并两个javascript对象(其中一个包含证书文件)。

我使用的是lodash模块的旧版本,它似乎使用了一个Buffer来合并这些文件。该版本中的Buffer实现与新Node.js版本中的Buffer实现不匹配。这会导致证书文件的不正确合并,并导致ERR_SSL_VERSION_OR_CIPHER_MISMATCH错误消息。

长话短说,在将lodash模块更新到最新版本之后,证书开始按预期工作。

票数 1
EN

Stack Overflow用户

发布于 2016-06-20 13:12:46

将有一个信任存储(keystore)文件,其中需要注册所有受信任的证书。您必须在那里注册这个新创建的证书。客户端使用该信任存储文件来检查证书是否可信。

欲知更多详情,请参阅以下连结:

创建自签名证书(openssl和keytool)

希望能帮上忙。

票数 3
EN

Stack Overflow用户

发布于 2016-06-21 11:54:14

从错误信息判断,自签名证书没有任何问题。但是提供ssl连接的“服务器”不支持协议版本的适当组合--密码套件。

代码语言:javascript
复制
openssl s_client -connect localhost:443

或者更冗长

代码语言:javascript
复制
openssl s_client -connect localhost:443 -debug

可能会告诉你ssl握手过程中出了什么问题。

您还可以找到一个名为sslscan的工具提供了哪些组合。

代码语言:javascript
复制
apt-get install sslscan
sslscan localhost:443
sslscan localhost:443 | grep Accepted

最后,您将希望通过提供更多‘ll选项来配置https服务器提供的密码套件。

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

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37139718

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档