node.js - 使用 Node.js 加密发送的内容

标签 node.js ssl amazon-ec2

我正在尝试在我的 node.js 应用程序上启用 HTTPS。我 made progress on this通过创建 certAccess包含 root 的组和 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 ),我没有收到服务器的响应。

我进去查看我的私钥和证书的权限,看到这个:

Permissions for key,certificate

私钥和证书配置,位于/etc/httpd/conf.d/ssl.conf看起来像:enter image description here

但是,当我在浏览器中进行测试时(甚至在 URL 前键入 https://,我本不应该这样做),我没有收到服务器的响应。

我该怎么办?!?!?

最佳答案

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

我将 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。

关于node.js - 使用 Node.js 加密发送的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38794383/

相关文章:

mysql - 如何在 Windows 中的 MySQL 服务器上启用 SSL 连接

amazon-web-services - Boto3:获取我拥有的EC2图像

amazon-web-services - 如何允许代入角色从 EC2 连接到 AWS 上的 EKS?

AWS EC2 上的 Node.js RESTful API 服务器与 AWS API 网关

html - 将缓存 list 添加到 Meteor 应用程序的简单方法?

javascript - 使用 lodash 将 JSON 转换为对象数组

macos - 仅当应用程序从 cron 的打开命令打开时处理证书时应用程序出现不合理的系统错误

java - 如何配置 Reactive WebClient 以使用 2-way TLS?

javascript - 将服务器的回调集成到 Meteor/Node 方法中

node.js - Readline 输出到文件 Node.js