https 为 AWS EC2 Ubuntu 实例引发 ERR_SSL_PROTOCOL_ERROR

Posted

技术标签:

【中文标题】https 为 AWS EC2 Ubuntu 实例引发 ERR_SSL_PROTOCOL_ERROR【英文标题】:https raises ERR_SSL_PROTOCOL_ERROR for AWS EC2 Ubuntu instance 【发布时间】:2019-08-19 21:58:14 【问题描述】:

我设置了 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 被拒绝。

【问题讨论】:

【参考方案1】:

您不能将公共 ACM 证书直接部署到实例。 “已发布”状态,仅意味着它已准备好在某处应用。它需要应用于支持 ACM 的服务,如 ELB、API 网关或 CloudFront 分发,可用于卸载 SSL 处理。请参阅faqs 了解如何使用它们的概述。

对于直接在实例上的证书,您可以使用letsencrypt 颁发免费、受信任的证书。

此外,这假设您已将 Web 服务器配置为侦听 443。

【讨论】:

我尝试安装 LetsEncrypt,但不知何故无法正常工作。 ec2 ubuntu 16.04 有什么好的 youtube 或分步指南吗? - 在设置 SSL 时有点忙。提前致谢。 我希望实例的某个地方有 LetsEncrypt 单击按钮,以便快速设置 EC2 实例,如果这对 devops 有意义的话。 如果你去here,你可以从下拉列表中选择你的网络服务器和你的操作系统,它会给你非常直接的说明。 另外,理想情况下,您会在此实例前面使用 ELB 并在那里安装 ACM 证书。如果您目前不需要更多,请使用自动缩放组并将其设置为 1。将 S3 之类的东西用于任何资产或共享存储,使用 RDS 实例或 DynamoDB 来满足任何数据库需求。如果实例本身发生某些事情,这使您能够(在一定程度上)自我修复,并且您不依赖于特定的底层实例。基本上,尝试使应用程序尽可能无状态。设置更复杂,但回报往往是值得的。【参考方案2】:

ACM 只能用于 AWS 资源,例如 Elastic Load Balancer、Amazon CloudFront 分配和 Amazon API Gateway 上的 API。 确保您使用上述服务之一来提供您的网站内容。

ACM 不能直接与 EC2 实例一起使用,您需要 Elastic Load Balancer 或 CloudFront 分配才能使用它。

【讨论】:

最后,我把它加密了。但是无法访问 java 服务器端口 9998。为所有流量设置了安​​全组,因此端口是开放的。是否还有其他步骤可以将加密的 nginx 链接到 java docker 服务器?

以上是关于https 为 AWS EC2 Ubuntu 实例引发 ERR_SSL_PROTOCOL_ERROR的主要内容,如果未能解决你的问题,请参考以下文章

AWS Application Load Balancer HTTP到HTTPS与EC2实例

带有 HTTPS 的 Ubuntu 18.04 EC2 实例上的 Apollo 服务器

AWS系列-EC2实例选择镜像

sh 通过ssh在aws ec2 ubuntu实例中安装节点

无法从我的ubuntu EC2计算机连接到AWS DocumentDB

如何在运行 Ubuntu 的 AWS EC2 上配置多个虚拟主机? [关闭]