在AWS上配置SSL证书通常涉及使用AWS Certificate Manager (ACM) 或自行上传证书到服务如EC2、负载均衡器、CloudFront等。下面就是详细步骤及最佳实践:
一、使用 AWS Certificate Manager (ACM) 配置(推荐)
ACM 提供免费的SSL/TLS证书,并自动处理续期,适合与AWS服务集成。
步骤 1:申请或导入证书
1. 登录AWS控制台,进入 AWS Certificate Manager (ACM)。
2. 选择区域:
若用于 CloudFront,需在 美国东部(弗吉尼亚北部,us-east-1) 申请。
若用于其他服务(如ALB、EC2),选择靠近用户的区域。
3. 请求证书:
点击 “请求证书”。
选择 “公有证书”,输入域名(如 example.com 或通配符 *.example.com)。
4. 验证域名所有权:
DNS验证(推荐):在域名DNS(如Route 53)中添加ACM提供的CNAME记录。
邮箱验证:向域名注册邮箱发送验证邮件。
步骤 2:将证书关联到AWS服务
应用负载均衡器 (ALB/ELB):
1. 创建或编辑负载均衡器,在监听器中添加 HTTPS:443 端口。
2. 从ACM中选择已申请的证书。
3. 配置安全组允许入站流量到443端口。
4. 将目标组指向后端实例(如EC2),可终止SSL在负载均衡器,后端使用HTTP。
CloudFront 分发:
1. 创建或编辑分发,在 “备用域名” 输入域名。
2. 在 “自定义SSL证书” 中选择ACM证书(必须为us-east-1区域)。
3. 配置源(如S3或ALB)并启用HTTPS。
API Gateway:
1. 在自定义域名设置中关联ACM证书。
2. 配置API映射到目标API。
二、在EC2实例上手动配置SSL证书
适用于需直接在服务器(如Nginx/Apache)管理证书的场景。
步骤 1:获取SSL证书
1. 生成CSR:
bash
复制
openssl req -new -newkey rsa:2048 -nodes -keyout example.com.key -out example.com.csr
2. 购买或申请免费证书(如Let's Encrypt):
bash
复制
certbot certonly --manual -d example.com
步骤 2:上传证书到EC2
1. 将证书文件(.crt、.key、CA链文件)上传到服务器,如 /etc/ssl/。
步骤 3:配置Web服务器
Nginx 示例:
nginx
复制
server {
listen 443 ssl;
server_name example.com;
ssl_certificate /etc/ssl/example.com.crt;
ssl_certificate_key /etc/ssl/example.com.key;
其他配置...
}
Apache 示例:
apache
复制
<VirtualHost *:443>
SSLEngine on
SSLCertificateFile /etc/ssl/example.com.crt
SSLCertificateKeyFile /etc/ssl/example.com.key
SSLCertificateChainFile /etc/ssl/ca-bundle.crt
</VirtualHost>
步骤 4:开放安全组端口
在EC2安全组中允许入站流量到 443端口。
步骤 5:重定向HTTP到HTTPS(可选)
配置Web服务器将所有HTTP请求重定向到HTTPS。
三、注意事项
1. 自动续期优势:ACM证书自动续期,手动上传需定期更新。
2. 跨区域限制:CloudFront仅支持 us-east-1 区域的ACM证书。
3. 混合架构:可将ACM用于前端(如ALB/CloudFront),后端EC2使用HTTP。
4. 测试HTTPS:使用浏览器或工具(如SSL Labs的SSL Test)验证配置。
推荐使用ACM:与ALB、CloudFront等集成,省去手动管理。
手动配置场景:仅当需要直接控制服务器证书时使用。
客户通过以上三大步骤就可以部署SSL证书,从而在AWS上快速启用HTTPS,提升应用安全。