加密使用Node.js

时间:2016-08-05 16:59:38

标签: node.js ssl amazon-ec2

我正在尝试在我的node.js应用程序上启用HTTPS。我made progress on this创建包含certAccessroot的{​​{1}}组,然后说ec2-user。但是,当我运行这个虚拟代码时:

sudo chown ec2-user.certAccess /etc/pki/tls/private/serverKey.key

并在我的浏览器中测试(使用var fs = require('fs'); var https = require('https'); var app = require('express')(); var options = { key : fs.readFileSync('/etc/pki/tls/private/serverKey.key').toString(), cert : fs.readFileSync('/etc/pki/tls/certs/2_mikewarren.me.crt').toString() }; app.get('/', function (req, res) { res.send('Hello World!'); }); https.createServer(options, app).listen(8080, function () { console.log(JSON.stringify(options, null, '\t')); console.log('Started!'); }); ),我没有得到服务器的响应。

我进去看看我的私钥和证书的权限,并看到:

Permissions for key,certificate

位于<yourDomain>:8080的私钥和证书配置如下:enter image description here

但是,当我在浏览器中进行测试时(甚至在URL前面输入/etc/httpd/conf.d/ssl.conf,我不应该这样做),我得不到服务器的响应。

我该怎么办?!?!?

1 个答案:

答案 0 :(得分:0)

我提出了解决方案。这是我做的:

我将ca成员添加到options并指向该链证书,如下所示:ca : fs.readFileSync('/etc/pki/tls/certs/1_root_bundle.crt', 'utf8')。这解决了证书问题。至于下一部分,我只是简单地在BASH中编写了一行,将https(端口443)重定向到我正在使用的端口(出于方便,我改为8443,因为我已经将http重定向到8080)。

这让它工作了,但我仍然需要使用https://前缀URL,这仍然很糟糕。我不应该!我认为解决方案是做我已经做过的事情,但是将http重定向到端口8443,或者将代理端口8080重定向到端口8443。