加密使用Node.js发送的内容
我正在尝试在node.js应用程序上安装HTTPS。通过创建同时包含加密使用Node.js发送的内容,node.js,ssl,amazon-ec2,Node.js,Ssl,Amazon Ec2,我正在尝试在node.js应用程序上安装HTTPS。通过创建同时包含root和ec2 user的certAccess组,然后说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
root
和ec2 user
的certAccess
组,然后说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!');
});
在我的浏览器中进行测试(使用:8080
),我没有收到服务器的响应
我进入查看私钥和证书的权限,并看到以下内容:
位于/etc/httpd/conf.d/ssl.conf
中的私钥和证书配置如下所示:
然而,当我在浏览器中进行测试时(即使在URL前面键入https://
,我也不必这样做),服务器也没有响应
我该怎么办 我想出了解决办法。以下是我所做的: 我将
ca
成员添加到options
中,并将其指向链证书,如下所示:ca:fs.readFileSync('/etc/pki/tls/certs/1\u root\u bundle.crt',utf8')
。这就解决了证书问题。至于下一部分,我只是在BASH中编写了一行代码,将https(端口443)重定向到我正在使用的端口(出于方便,我将该端口更改为8443,因为我已经将http重定向到8080)
这让它工作起来了,但我仍然必须在URL前面加上
https://
,这仍然很糟糕。我不该这么做!我认为解决这个问题的方法是做我已经做过的事情,但将http重定向到端口8443,或将代理端口8080重定向到端口8443。我想出了解决方案。以下是我所做的:
我将ca
成员添加到options
中,并将其指向链证书,如下所示:ca:fs.readFileSync('/etc/pki/tls/certs/1\u root\u bundle.crt',utf8')
。这就解决了证书问题。至于下一部分,我只是在BASH中编写了一行代码,将https(端口443)重定向到我正在使用的端口(出于方便,我将该端口更改为8443,因为我已经将http重定向到8080)
这让它工作起来了,但我仍然必须在URL前面加上
https://
,这仍然很糟糕。我不该这么做!我认为解决这个问题的方法是做我已经做过的事情,但将http重定向到端口8443,或将代理端口8080重定向到端口8443。我不知道这是否是问题的根源,但我看到两件事。1) 你不能只做:8080。您必须像在https://yourdomain.com:8080
。并且,2)在调用readFileSync()
之后删除.toString()
。证书不是字符串。否。没用。它只是像服务器关闭一样请求内容。是的。这些都是有效的修复方法。很明显,你有更多的错误。你显然在某个地方出了差错。您必须进行一些调试,以确切地了解服务器和客户端上发生了什么,从而了解为什么没有建立连接。我认为在你的问题中没有足够的信息让我们知道发生了什么。几个月前,我按照[这些说明][1]安装了证书(证书是通过StartCOM的某个友好代理获得的),前几天,当我最终让node.js代码可以访问此内容时,我更改了权限(如上所述)。代码本身来自Marc Wandschneider的Learning Node.js书,也可以访问[此处][2][1]:[2]:[2]:怎么回事?它不会正确超链接!!我不知道这是否是你问题的根源,但我看到两件事。1)你不能只做:8080。您必须像在https://yourdomain.com:8080
。并且,2)在调用readFileSync()
之后删除.toString()
。证书不是字符串。否。没用。它只是像服务器关闭一样请求内容。是的。这些都是有效的修复方法。很明显,你有更多的错误。你显然在某个地方出了差错。您必须进行一些调试,以确切地了解服务器和客户端上发生了什么,从而了解为什么没有建立连接。我认为在你的问题中没有足够的信息让我们知道发生了什么。几个月前,我按照[这些说明][1]安装了证书(证书是通过StartCOM的某个友好代理获得的),前几天,当我最终让node.js代码可以访问此内容时,我更改了权限(如上所述)。代码本身来自Marc Wandschneider的Learning Node.js书,也可以访问[此处][2][1]:[2]:怎么回事?它不会正确超链接!!