【问题标题】:Running a simple HTTPS Node JS Server on Amazon EC2在 Amazon EC2 上运行一个简单的 HTTPS 节点 JS 服务器
【发布时间】:2016-08-14 22:38:37
【问题描述】:

我正在尝试在 Amazon EC2 上创建一个简单的 https 服务器来测试第三方 API。

以下是我遵循的步骤:

  1. 创建了一个 Amazon EC2 实例,并打开了 HTTP 和 HTTPS 端口:

  1. 使用创建简单的 ssl 凭据

openssl genrsa 2048 > privatekey.pem

openssl req -new -key privatekey.pem -out csr.pem

openssl x509 -req -days 365 -in csr.pem -signkey privatekey.pem -out 服务器.crt

  1. 创建了一个简单的 node js 服务器
var https = require('https');
var fs = require('fs');
var options = {
  key: fs.readFileSync('./privatekey.pem'),
  cert: fs.readFileSync('./server.crt')
};

https.createServer(options, function (req, res) {
  res.writeHead(200);
  res.end("hello world\n");
}).listen(8080);

当我运行服务器并尝试使用 url https://ec2-XX-XXX-XXX-XXX.compute-1.amazonaws.com/ 连接到它时,我不断收到连接被拒绝。

telnet 测试也会产生:

Trying XX.XXX.XXX.XXX...
telnet: connect to address XX.XXX.XXX.XXX: Connection refused
telnet: Unable to connect to remote host

谁能告诉我我需要解决什么问题才能在此 EC2 实例上启用 https?

【问题讨论】:

    标签: node.js amazon-web-services ssl amazon-ec2


    【解决方案1】:

    将您的listen(8080) 更改为listen(443),除非您有一个 Web 服务器在 443 上侦听并向 8080 上的节点发送请求。

    【讨论】:

    • 哇。真的就是这么简单。必须使用 sudo 运行服务器(收到错误,因为端口号低于 1024),但对我来说不是一个障碍。非常感谢!
    • 我正在尝试同样的事情,但似乎无法让它发挥作用。 pem 和 crt 做得很好并且在同一个目录中 - 我从服务器页面将它们记录在控制台中,它们就在那里。我在 443 上将默认 EC2 安全组设置为 https。我可以使用 sudo 运行上面的示例 nodejs 服务器并运行它。但是当我尝试连接 https:// 时,它就会挂起。如果我删除选项并使用端口 80 在 http 上运行,它工作正常。我没有负载平衡可以干扰。有什么想法吗?
    • 我按照 dpigera 的步骤,运行 sudo,听 443,在 Chrome 中打开地址,我得到:“NET::ERR_CERT_AUTHORITY_INVALID”。我可以输入“thisisunsafe”并解决这个问题,但你通常如何解决这个问题?
    猜你喜欢
    • 1970-01-01
    • 2017-09-21
    • 1970-01-01
    • 1970-01-01
    • 2020-07-12
    • 2012-12-05
    • 2011-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多