在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,提升应用安全。