2026-09-18
在 AWS 基础设施中部署 SSL 证书,其实现逻辑完全取决于具体的云服务架构。与传统物理服务器不同,AWS 提供了云原生证书管理服务 AWS Certificate Manager(ACM),允许将 TLS 握手卸载至 CloudFront 或 ALB 等边缘/负载均衡节点;同时也支持在 EC2 实例的 Web 服务器(如 Nginx/Apache)上进行自主部署。
根据流量接入点的不同,AWS 的 SSL 配置主要划分为三种典型路径:
CloudFront CDN 本身不直接存储证书文件,而是统一调用 AWS Certificate Manager(ACM) 托管的证书。
ACM 导入第三方证书:在 ACM 控制台选择“导入证书”时,需将 PEM 格式文本粘贴至对应区域。其中证书主体填入 cert.pem,私钥填入未加密的 private.key,中间证书链填入 ca-bundle.pem。
格式与密钥约束:ACM 支持 RSA 2048/4096 及 ECDSA P256/P384 算法密钥,但不支持二进制 PKCS#12(.pfx)格式,必须先转为 PEM 纯文本格式。
区域限制:用于 CloudFront 的 ACM 证书,必须在 us-east-1(弗吉尼亚北部)区域导入或申请,否则 CloudFront 控制台将无法识别该证书资源。
AWS Amplify Hosting 支持为静态及 SSR 全栈应用直传第三方证书。系统会自动校验域名匹配度与签名有效性。
工程提醒:通配符证书(
*.example.com)在 Amplify 中无法同时保护根域(example.com)与二级子域(api.example.com)。若有此类混合绑定的需求,需申请包含多域名扩展(SAN)的证书。
如果将 TLS 终止点放在 EC2 内部(如自行搭建 Nginx 或 Apache),则需遵循传统服务器部署流程。
以 Nginx 为例,标准的 SSL server 块配置格式如下:
Nginx
server {listen 443 ssl;server_name www.yourdomain.com;# 包含站点证书与中间证书的完整 PEM 文件ssl_certificate /etc/nginx/ssl/fullchain.pem;ssl_certificate_key /etc/nginx/ssl/private.key;# 协议安全策略ssl_protocols TLSv1.2 TLSv1.3;ssl_prefer_server_ciphers on;location / {root /usr/share/nginx/html;index index.html index.htm;}}bash在实际运维过程中,AWS 环境下的证书管理需特别关注以下几项标准:
私钥权限收紧 (chmod 400) ? 补全 Intermediate CA 证书链 ? 配置 DNS 验证 / ACME 自动续期 ? 限制通配符作用域bash
证书有效期与自动化:根据行业合规要求,CA/B Forum 持续推行短周期证书政策,主流 CA 签发的证书有效期已进一步缩短。对于 EC2 自建环境,更务实的建议是使用 acme.sh 等自动化工具配置定期续期任务;而使用 ACM 托管证书时,需保持 DNS 验证 CNAME 记录长期存在,以保障静默自动续期。
中间证书链拼接:如果部署至 EC2 Nginx 时遗漏了中间 CA(ca-bundle.pem),在 PC 端 Chrome 可能访问正常,但在移动端(如 iOS Safari)会触发 NET::ERR_CERT_AUTHORITY_INVALID 报错。
私钥安全防泄露:严禁将私钥文件(private.key)提交至 Git 代码仓库。在 EC2 内部,私钥文件权限应严格设置为 chmod 400,属主设置为 root:root,防止 Web 进程越权读取。
| 接入服务 | 证书存储位置 | 是否支持第三方导入 | 关键注意事项 |
|---|---|---|---|
| CloudFront | AWS Certificate Manager (ACM) | 是 | 必须存放在 ACMus-east-1区域,私钥需解除密码 |
| Amplify Hosting | Amplify 托管凭证库 | 是 | 需按标准提供完整的站点证书、私钥与中间链 |
| EC2 实例 (Nginx/Apache) | EC2 本地文件系统(如/etc/nginx/ssl/) | 是 | 必须手动合并完整证书链,并限制文件访问权限 |
| ALB (应用型负载均衡) | AWS Certificate Manager (ACM) | 是 | 可直接在当前区域的 ACM 中绑定,支持 SNI 多域名 |
AWS 生态下的 SSL 证书部署方式呈现出云原生与传统部署并存的特点。在 CloudFront 与 ALB 等 Serverless 接入层,推荐利用 ACM 进行证书统一托管与 TLS 边缘卸载, 注意 CloudFront 的 ACM 资源需固定在 us-east-1 区域;而在 EC2 实例层,则需严格遵循服务器运维规范,通过补全 Intermediate CA 证书链与设置私钥访问权限(chmod 400), 规避 NET::ERR_CERT_AUTHORITY_INVALID 等访问故障,保障 AWS 架构下的 HTTPS 安全传输。
A:不需要。将第三方 PEM 格式证书导入 ACM 控制台本身是完全免费的,AWS 不针对导入行为收取证书托管费;用户仅需支付原本使用 CloudFront 产生的数据传输与请求费用。
A:单纯在后台配置证书不足以完全避免混合内容问题。一般需要在应用的 amplify.yml 构建配置文件中添加 301 重定向规则(将 HTTP 80 流量重定向至 HTTPS 443);同时在前端响应头中引入 Content-Security-Policy: upgrade-insecure-requests 指令,引导浏览器强制加载加密资源。
A:从实际排障情况来看,主要原因一般有三点:一是 Nginx/Apache 配置文件中加载的证书缺失了中间 CA,导致客户端证书链不完整;二是云服务器系统时间与网络标准时间偏差较大(如偏差超过 5 分钟);三是安全组未开放 443 端口入站权限,或 Web 服务未开启 SNI 支持。