如何配置AWS证书管理器SSL证书关联EC2,确保HTTPS正常运行?
排查ACM证书关联负载均衡后HTTPS无法工作的实操指南
首先先给你吃个定心丸:用AWS ACM颁发的证书,完全不需要你在服务器端手动生成密钥和CSR,ACM会自动帮你处理密钥对生成、证书签署的全流程——你找不到相关交互选项是正常的,因为这一步根本不需要手动操作,这也是ACM托管证书的核心优势之一。
结合你已经配置了带ACM证书的负载均衡但问题仍存在的情况,咱们一步步排查:
1. 先确认ACM证书的基础状态
- 检查证书是否处于**
Issued**状态,且域名覆盖范围完全匹配你的托管域名(比如是yourdomain.com或者通配符*.yourdomain.com,要包含你实际使用的子域名)。 - 注意:ACM证书必须和你的负载均衡在同一AWS区域,跨区域的证书无法被负载均衡关联。
2. 验证负载均衡HTTPS监听器的配置细节
- 进入负载均衡控制台,找到HTTPS监听器(默认443端口):
- 确认监听器已正确绑定你的ACM证书,且默认操作是转发到目标组(不是直接拒绝)。
- 检查安全策略,建议选用AWS推荐的
ELBSecurityPolicy-2016-08这类,避免过旧的加密套件导致浏览器兼容性问题。
- 检查安全组规则:
- 负载均衡的安全组必须允许入站443端口的所有来源(或你需要的特定IP范围)。
- EC2实例的安全组必须允许负载均衡所在安全组的入站流量,端口对应目标组的转发端口(通常是80,因为负载层解密HTTPS后转HTTP到实例)。
3. 检查目标组与EC2实例的健康状态
如果负载均衡的目标组显示EC2实例不健康,请求根本无法转发到实例上:
- 确认目标组的健康检查路径是否正确(比如
/或者你的应用专属健康端点),健康检查协议(HTTP/HTTPS)要和实例上的服务一致。 - 登录EC2实例,手动测试服务是否正常:比如执行
curl localhost:80(对应目标组转发端口),看是否能返回正常的网页内容,确保Web服务(Nginx/Apache等)在正常监听端口。
4. 确认域名解析的正确性
你的托管域名必须将A记录/CNAME记录指向负载均衡的DNS名称,而不是直接指向EC2实例的公网IP——如果解析还是指向实例,负载均衡根本没参与请求链路,HTTPS自然无法生效。
你可以用nslookup yourdomain.com或dig yourdomain.com命令验证解析结果,确认返回的是负载均衡的域名。
5. 特殊场景:如果目标组转发HTTPS到实例
如果你配置的是负载均衡HTTPS监听器直接转发加密流量到EC2实例(而非解密后转HTTP),那你需要在EC2实例上配置SSL证书——但这个证书不需要是ACM的,自签或第三方证书都可以,因为负载均衡只是做流量转发,不解密。不过这种场景比较少见,大部分情况下推荐在负载层处理HTTPS,实例处理HTTP即可。
额外调试技巧
如果以上步骤都没问题,你可以用curl -v https://yourdomain.com查看详细的请求错误日志,或者查看CloudWatch中负载均衡的访问日志,定位请求是在负载层就被拦截,还是转发到实例后出了问题。
内容的提问来源于stack exchange,提问作者Kristian Vybiral
相关产品推荐
相关产品推荐

