如何为AWS EC2 Web服务器启用HTTPS?Nginx配置后证书签发失败
问题原因
Let's Encrypt的ACME服务器禁止为AWS EC2默认公共域名(如ec2-43-198-203-153.ap-east-1.compute.amazonaws.com)签发证书,这类域名归属AWS而非个人/企业,不符合证书签发的合规政策。
解决步骤
1. 配置自有域名指向EC2实例
- 注册一个属于你的独立域名(如
example.com),在域名服务商的DNS管理后台添加A记录,将目标子域名(如www.example.com)指向EC2实例的公网IP43.198.203.153。 - 等待DNS解析生效,可通过
ping 你的域名验证是否指向正确IP。
2. 修改Nginx站点配置
- 找到Nginx配置文件(通常在
/etc/nginx/sites-available/或/etc/nginx/conf.d/目录下),将server_name字段替换为你的自有域名:
server { listen 80; server_name example.com www.example.com; # 其余原有配置保持不变 }
- 验证配置合法性:
sudo nginx -t,确认无报错后重启Nginx:sudo systemctl restart nginx。
3. 重新申请CA签名证书
- 执行
certbot --nginx,按照提示选择你的自有域名完成证书申请,Certbot会自动修改Nginx配置并开启HTTPS访问。
临时测试备选方案
若暂时无自有域名,可使用自签名证书(仅适合测试,浏览器会触发安全警告):
- 生成自签名证书:
sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/private/nginx-selfsigned.key -out /etc/ssl/certs/nginx-selfsigned.crt
- 修改Nginx配置开启HTTPS:
server { listen 443 ssl; server_name ec2-43-198-203-153.ap-east-1.compute.amazonaws.com; ssl_certificate /etc/ssl/certs/nginx-selfsigned.crt; ssl_certificate_key /etc/ssl/private/nginx-selfsigned.key; # 其余原有配置保持不变 }
- 重启Nginx后即可通过HTTPS访问,忽略浏览器安全警告即可。
内容的提问来源于stack exchange,提问作者user15667062
相关产品推荐
相关产品推荐

