我在两台运行带有 PM2 的 SailsJS 的服务器前面有一个 AWS LoadBalancer。 LB 运行良好,并将传入的 HTTP 请求路由到服务器,这是完美的。
现在,我需要添加对 HTTPS 的支持,所以我遵循了这个指南: AWS Create a Classic Load Balancer with an HTTPS Listener ,使用自行生成的 SSL 证书,并将此配置用于端口
LB Port 80 - Instance 80
LB Port 443 - Instance 80
并且安全组打开了这些端口:
22,
80,
443
所以,如果我没理解错的话,LB 会在端口 443 上接收到 HTTPS 请求,并将其转发到实例的端口 80。当然,我的实例正在监听端口 80。
问题是,这行不通!我可以向 LB 发出 HTTP 请求,所有请求都完美地路由到 Sails 实例,响应也很完美。但是,如果我使用完全相同的 URL 但使用 HTTPS,则它不起作用并且我得到“ERR_SSL_PROTOCOL_ERROR”。
我做错了什么,我错过了什么?
谢谢!
编辑 1 如果我尝试 curl -v https://example.com,这就是我得到的结果
* Trying xx.xx.xx.xx...
* Connected to example.com (xx.xx.xx.xx) port 443 (#0)
* Unknown SSL protocol error in connection to example.com:-9838
* Closing connection 0
curl: (35) Unknown SSL protocol error in connection to mydomain.com:-9838
编辑 2
找到另一个线程 which suggested a different way of creating the certificate .所以我试了一下,但是现在AWS甚至不接受私钥和证书
Server Certificate not found for the key: arn:aws:iam::111111111:server-certificate/CertificateMyName
编辑 3
好的,所以找到了更多关于为什么我 couldn't load the certificates to AWS 的信息在尝试了几次之后,我设法加载并使用了它。
在这些之后,它似乎可以正常工作(带有不是有效证书的警告和 bla、bla、bla,这是预期的)
* Trying XXX.XXX.XXX.XXX...
* Connected to example.com (XXX.XXX.XXX.XXX) port 443 (#0)
* SSL certificate problem: Invalid certificate chain
* Closing connection 0
curl: (60) SSL certificate problem: Invalid certificate chain
所以它似乎在工作,而且看起来,正如@MarkB 所建议的那样,证书是错误的。使用在 EDIT 2 上找到的信息,我创建了一个新的,并上传了它(使用 EDIT 3 的信息),它似乎可以正常工作。
我将执行更多测试以 100% 确保这有效,并会尽快报告。
最佳答案
好的,所以问题是错误生成的证书。我使用了我发现的第一种方法,但它不起作用,所以只需使用这些:
openssl genrsa -out client-key.pem 2048
openssl req -new -key client-key.pem -out client.csr
openssl x509 -req -in client.csr -signkey client-key.pem -out client-cert.pem
甚至在那之后,AWS 告诉我:
Server Certificate not found for the key: arn:aws:iam::111111111:server-certificate/CertificateMyName
但是最后一个错误是错误的,即使有错误证书被添加到 ACM,我在我的 HTTPS 443 监听器中使用它,再次测试服务并且一切正常。因此,只需按照上述说明创建证书,将其导入 ACM,如果出现上述错误,请忽略它,您的证书将就位并可以使用。
希望这对其他人有帮助!
关于node.js - AWS Load Balancer,为 HTTPS 启用监听器并路由到 80,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39398879/