我正在尝试在我的node.js应用程序上启用HTTPS。我made progress on this创建包含certAccess
和root
的{{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!');
});
),我没有得到服务器的响应。
我进去看看我的私钥和证书的权限,并看到:
位于<yourDomain>:8080
的私钥和证书配置如下:
但是,当我在浏览器中进行测试时(甚至在URL前面输入/etc/httpd/conf.d/ssl.conf
,我不应该这样做),我得不到服务器的响应。
我该怎么办?!?!?
答案 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。