如何为AWS EC2上搭建的WordPress网站获取SSL证书?
为Amazon Linux上的Apache网站配置SSL证书(EC2+CloudFlare域名场景)
针对你当前的场景(EC2实例+Amazon Linux+Apache+CloudFlare托管域名),以下是两种可行的SSL证书配置方案,步骤清晰适配你的环境:
方案一:用CertBot直接在EC2上部署证书(推荐)
适合不需要CloudFlare代理、直接通过EC2对外提供服务的场景,能一步完成证书申请和Apache配置。
1. 安装CertBot及Apache插件
Amazon Linux需要先启用EPEL源,再安装CertBot工具:
sudo amazon-linux-extras install epel -y sudo yum install certbot python3-certbot-apache -y
2. 确认Apache虚拟主机配置
确保Apache已配置对应域名的80端口虚拟主机(如果是WordPress,根目录对应你的站点路径),示例配置文件/etc/httpd/conf.d/yourdomain.conf:
<VirtualHost *:80> ServerName yourdomain.com ServerAlias www.yourdomain.com DocumentRoot /var/www/html # 替换为你的WordPress实际根目录 ErrorLog /var/log/httpd/yourdomain-error.log CustomLog /var/log/httpd/yourdomain-access.log combined </VirtualHost>
配置完成后重启Apache:
sudo systemctl restart httpd
3. 自动获取证书并配置HTTPS
执行CertBot命令,按提示完成操作:
sudo certbot --apache
- 输入接收提醒的邮箱
- 同意服务条款
- 选择要配置的域名(可多选主域名和www子域名)
CertBot会自动修改Apache配置,开启443端口虚拟主机,并添加HTTP转HTTPS的规则。
4. 验证与自动续期
访问https://yourdomain.com确认“不安全”提示消失。CertBot默认会自动续期证书,可通过以下命令测试续期逻辑:
sudo certbot renew --dry-run
方案二:用ACM证书配合CloudFlare代理
如果你倾向于使用AWS官方证书服务,需解决之前申请失败的DNS验证问题:
1. 在ACM中发起证书申请
- 登录AWS控制台进入ACM服务,点击「请求证书」
- 选择「请求公有证书」,输入你的主域名和www子域名(如
yourdomain.com、www.yourdomain.com) - 验证方式选「DNS验证」,记录ACM生成的CNAME验证记录(名称和值)
2. 在CloudFlare中添加验证记录
- 登录CloudFlare控制台进入你的域名管理页
- 切换到「DNS」标签,添加一条CNAME记录:
- 名称:填写ACM给出的CNAME前缀(如
_xxxxxx.yourdomain.com) - 内容:填写ACM给出的CNAME值
- TTL选择「自动」
- 名称:填写ACM给出的CNAME前缀(如
- 保存后等待ACM完成验证(通常10分钟内生效)
3. 配置CloudFlare SSL模式
ACM证书无法直接下载到EC2使用(无负载均衡场景),需通过CloudFlare代理实现HTTPS:
- 进入CloudFlare的「SSL/TLS」标签,选择「灵活」模式(CloudFlare到用户用HTTPS,CloudFlare到EC2用HTTP,无需修改EC2配置)
- 若要启用「严格」模式,需在EC2上额外部署证书(推荐用方案一的CertBot实现)
前置必做检查
- 确保EC2安全组已开放**80(HTTP)和443(HTTPS)**端口,入站规则允许公网访问
- CloudFlare的DNS记录已正确指向你的Elastic IP
内容的提问来源于stack exchange,提问作者Daniel Snodgrass
相关产品推荐
相关产品推荐

