https在AWS EC2 Ubuntu实例中引发ERR_SSL_PROTOCOL_ERROR错误

4

我设置了EC2 Ubuntu实例,分配了一个弹性IP地址,通过Route53将example.com(域名)指向了EC2实例。使用ACM(证书管理器)添加了一个SSL证书,状态显示为“已颁发”。

然而,https://example.com 出现了ERR_SSL_PROTOCL_ERROR错误,而http://example.com可以正常访问。

安全组已经开启了HTTPS端口。

这是怎么回事?为什么无法正常工作?有线索吗?执行curl https://localhost -k会显示本地端口443被拒绝。

2个回答

3
您不能直接将公共ACM证书部署到实例上。 "已签发"状态只意味着它已经准备好在某个地方应用。 它需要被应用于支持ACM的服务,例如ELB、API Gateway或CloudFront分配,这些服务可以用于卸载SSL处理。请参阅常见问题解答以获得如何使用它们的概述。
对于直接放在实例上的证书,您可以使用letsencrypt来发布免费、可信赖的证书。
此外,这假定您已配置Web服务器以侦听443端口。

我已经尝试安装LetsEncrypt,但是它似乎没有起作用。有没有好的youtube视频或逐步指南适用于ec2 ubuntu 16.04?在设置SSL方面有些忙碌。先行感谢。 - elle
我希望在 EC2 实例中有一个 Let's Encrypt 点击按钮,以便 DevOps 能够快速设置。 - elle
1
如果你前往这里,你可以从下拉列表中选择你的Web服务器和操作系统,然后它会给你一组非常直观的指令。 - semipermeable
最好在此实例前使用ELB并在那里安装ACM证书。如果您目前不需要更多,请使用自动缩放组并将其设置为1。对于任何资产或共享存储,请使用类似S3的东西,对于任何数据库需求,请使用RDS实例或DynamoDB。这使您能够自我修复(在一定程度上),如果实例本身发生了什么事情,您不依赖于特定的底层实例。基本上,尽可能使应用程序无状态。设置更加复杂,但回报往往是值得的。 - semipermeable

1

ACM只能与AWS资源一起使用,例如弹性负载均衡器、Amazon CloudFront分发和Amazon API Gateway上的API。

请确保您正在使用上述服务来提供网站内容。

ACM不能直接与EC2实例一起使用,您需要使用弹性负载均衡器或CloudFront分发才能使用它。


最后,我已经成功加密了它。但是 Java 服务器端口 9998 无法访问。安全组已设置为所有流量,因此端口已开放。与加密的 Nginx 连接到 Java Docker 服务器是否还需要其他步骤? - elle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接