AWS如何安装SSL证书?完整配置指南
在AWS生态中安装SSL证书需根据具体服务选择对应方式:CloudFront使用ACM导入或自定义证书,Amplify Hosting支持上传PEM格式证书,而EC2实例需手动部署至Web服务器(如Nginx/Apache)。直接在ACM控制台申请免费证书并关联CloudFront是最简方案;若使用自有证书,则必须确保私钥安全、证书链完整,且域名匹配严格。生产环境强烈建议启用OCSP Stapling与TLS 1.2+协议。
AWS主流服务SSL证书部署机制
CloudFront:依赖ACM或自定义证书导入
CloudFront本身不直接安装证书,而是通过AWS Certificate Manager(ACM)绑定。您可从TopSSL申请任意类型SSL证书(SSL证书),下载Apache格式后,将cert.pem、private.key和ca-bundle.pem三文件分别粘贴至ACM导入界面的「Certificate body」「Private key」和「Certificate chain」字段。注意:ACM仅支持RSA 2048/4096及ECDSA P256/P384密钥,不接受PKCS#12(.pfx)格式。
Amplify Hosting:支持第三方证书直传
AWS Amplify Hosting自2024年起开放自定义SSL证书上传功能,允许开发者上传由TopSSL、Sectigo、Digicert等CA签发的PEM格式证书。上传时需同时提供证书主体、私钥及中间证书(即证书链),系统自动校验域名匹配性与签名有效性。该能力已覆盖全球19个AWS区域,但不支持通配符证书绑定根域与子域混合场景——例如*.example.com无法同时保护example.com与api.example.com,需额外申请SAN证书。
EC2 + Nginx/Apache:需手动部署与验证
当SSL终止点设在EC2实例时,必须手工部署证书。以Nginx为例:将TopSSL提供的Nginx格式证书上传至/etc/nginx/ssl/目录,修改server块中的ssl_certificate与ssl_certificate_key路径,并启用ssl_protocols TLSv1.2 TLSv1.3;若忽略证书链配置,将导致Chrome报“NET::ERR_CERT_AUTHORITY_INVALID”。我们曾在线上环境遇过因ca-bundle.pem缺失一级中间CA,致使iOS Safari信任失败——该问题在Android端无感知,凸显跨平台验证必要性。
关键工程实践与避坑清单
| - | 参考标准 | TopSSL专家建议 |
|---|---|---|
| 证书有效期 | CA/B Forum BR v2.0要求≤398天 | 2026年起主流CA已执行≤90天策略,建议用acme.sh自动续期;AWS ACM免费证书默认398天但需每60天手动刷新DNS验证记录 |
| 域名匹配 | RFC 6125严格校验Subject Alternative Name | CloudFront不支持正则通配符(如**.example.com),单张通配符SSL证书仅覆盖一级子域(*.example.com ≠ example.com) |
| 私钥安全 | NIST SP 800-57 Part 1 Rev.5 | 禁止将private.key提交至Git仓库;EC2部署时应chmod 400并归属root:root,避免Web进程越权读取 |
常见问题
Q:在AWS CloudFront中使用TopSSL购买的证书,是否需要额外付费?
A:不需要。ACM导入第三方证书完全免费,但需自行承担证书采购费用;ACM托管的免费证书仅限于us-east-1区域且仅支持验证通过的域名。
Q:Amplify Hosting上传证书后仍显示HTTP,如何强制跳转HTTPS?
A:需在amplify.yml中配置redirects规则,或在前端添加meta http-equiv="Content-Security-Policy"头;单纯开启“Force HTTPS”开关不足以解决混合内容问题。
Q:EC2部署后浏览器提示“您的连接不是私密连接”,可能原因有哪些?
A:常见于证书链不完整、系统时间偏差>5分钟、SNI未启用(旧版IE8)、或Nginx未监听443端口。可用SSL证书检查工具一键诊断。



京公网安备11010502031690号
网站经营企业工商营业执照
















