AWS如何安装配置SSL证书?
在 AWS 基础设施中部署 SSL 证书,其实现逻辑完全取决于具体的云服务架构。与传统物理服务器不同,AWS 提供了云原生证书管理服务 AWS Certificate Manager(ACM),允许将 TLS 握手卸载至 CloudFront 或 ALB 等边缘/负载均衡节点;同时也支持在 EC2 实例的 Web 服务器(如 Nginx/Apache)上进行自主部署。
在规划 AWS 端的 HTTPS 加密前,如果对公钥、私钥及中间证书的合作机制不够了解,可以先补充 什么是 SSL 证书? 这一基础概念。
AWS 主流服务的 SSL 部署机制与规范
根据流量接入点的不同,AWS 的 SSL 配置主要划分为三种典型路径:
1. CloudFront + ACM:云原生边缘 TLS 终止
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 纯文本格式。如果是第三方商业证书,通常涉及 企业 SSL 证书推荐 中的规格选型。
- 区域限制:用于 CloudFront 的 ACM 证书,必须在
us-east-1(弗吉尼亚北部)区域导入或申请,否则 CloudFront 控制台将无法识别该证书资源。
2. Amplify Hosting:托管式前端证书部署
AWS Amplify Hosting 支持为静态及 SSR 全栈应用直传第三方证书。系统会自动校验域名匹配度与签名有效性。
工程提醒:通配符证书(
*.example.com)在 Amplify 中无法同时保护根域(example.com)与二级子域(api.example.com)。若有此类混合绑定的需求,需申请包含多域名扩展(SAN)的证书。
3. EC2 实例:自建 Web 服务器手工部署
如果将 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;
}
}
关于完整的 Web 服务部署参数说明,可以查阅 SSL 证书安装与部署 操作指引。
工程实践与事项
在实际运维过程中,AWS 环境下的证书管理需特别关注以下几项标准:
私钥权限收紧 (chmod 400) ➔ 补全 Intermediate CA 证书链 ➔ 配置 DNS 验证 / ACME 自动续期 ➔ 限制通配符作用域
- 证书有效期与自动化:根据行业合规要求,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报错。如果遭遇此类故障,可以参考 HTTPS 访问异常排查 中的证书链校验方法。 - 私钥安全防泄露:严禁将私钥文件(
private.key)提交至 Git 代码仓库。在 EC2 内部,私钥文件权限应严格设置为chmod 400,属主设置为root:root,防止 Web 进程越权读取。
如果需要比对不同商业证书与算法选型,可先查看最新的 SSL 证书价格表 进行比价。
AWS 多服务证书部署规范对比
| 接入服务 | 证书存储位置 | 是否支持第三方导入 | 关键注意事项 |
|---|---|---|---|
| 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 安全传输。
常见问题 FAQ
在 AWS CloudFront 中使用第三方购买的 SSL 证书需要额外付费吗?
A:不需要。将第三方 PEM 格式证书导入 ACM 控制台本身是完全免费的,AWS 不针对导入行为收取证书托管费;用户仅需支付原本使用 CloudFront 产生的数据传输与请求费用。
Amplify Hosting 上传 SSL 证书后网页仍显示 HTTP,如何实现自动跳转 HTTPS?
A:单纯在后台配置证书不足以完全避免混合内容问题。一般需要在应用的 amplify.yml 构建配置文件中添加 301 重定向规则(将 HTTP 80 流量重定向至 HTTPS 443);同时在前端响应头中引入 Content-Security-Policy: upgrade-insecure-requests 指令,引导浏览器强制加载加密资源。
EC2 部署 SSL 证书后,浏览器提示“您的连接不是私密连接”怎么处理?
A:从实际排障情况来看,主要原因一般有三点:一是 Nginx/Apache 配置文件中加载的证书缺失了中间 CA,导致客户端证书链不完整;二是云服务器系统时间与网络标准时间偏差较大(如偏差超过 5 分钟);三是安全组未开放 443 端口入站权限,或 Web 服务未开启 SNI 支持。



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
















