AWS EC2 实例 部署 Let’s Encrypt 免费 HTTPS 证书记录( Nginx 配置 + 排错解决)
本文记录了在AWS EC2实例上配置免费HTTPS证书的全过程。作者首先尝试使用AWS Certificate Manager,但因DNS验证不便而放弃,最终选择Let's Encrypt + Certbot方案。文章详细介绍了Certbot安装、域名验证、证书申请步骤,以及Nginx的自动配置解析,包括SSL证书路径设置和HTTP跳转HTTPS的实现。针对配置后出现的默认页面问题,提供了删除默认
·
目录
一、项目背景 & 目标
HTTPS 是保障数据安全、防止第三方作弊的基础要素之一。
我需要为基于 AWS EC2 实例上部署的应用 {域名} 配置免费 HTTPS 证书。
本文记录从 AWS ACM 试探到最终采用 Let’s Encrypt + Certbot 的全过程,包括:
- 实际配置过程
- Nginx 配置解析
- 常见问题排查
- 自动续签验证
二、AWS Certificate Manager 尝试记
首先我试图使用 AWS Certificate Manager 来申请 SSL 证书:
- 输入 {域名} 作为 FQDN
- 选择 DNS 验证方式
- 需要配合安装上请求的 TXT 记录
- 发现域名设置 DNS 记录很不方便(尤其域名的配置的权限不在自己手里时)
怪圈结诊:ACM 适合 AWS CloudFront/ELB/域名与规则全在 AWS 内部管理时使用,对于单点 EC2/本地服务器不是最优规划
三、最终选择:Let’s Encrypt + Certbot
利用地
- 证书免费
- 支持自动续签
- 配合 nginx 可自动配置
环境准备
sudo apt update
sudo apt install certbot python3-certbot-nginx
域名解析校验
确保 {域名} 已经指向 EC2 IP,通过 ping 或 dig 校验
dig +short {域名}
四、证书申请完整操作
基本命令:
sudo certbot --nginx -d {域名} \
--email you@example.com --agree-tos --redirect
说明:
--nginx
自动修改 nginx 配置--redirect
自动将 HTTP 跳转到 HTTPS
执行成功后证书保存于:
/etc/letsencrypt/live/{域名}/
五、Nginx 配置解析
此时 nginx 配置文件 /etc/nginx/conf.d/node1.conf
已被 Certbot 加入下列内容:
server {
server_name {域名};
location / {
root /usr/share/nginx/html;
index index.html;
}
location /node {
proxy_pass http://localhost:8881/;
}
location ~ /.well-known/acme-challenge/ {
allow all;
}
listen 443 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/{域名}/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/{域名}/privkey.pem;
include /etc/letsencrypt/options-ssl-nginx.conf;
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem;
}
server {
if ($host = {域名}) {
return 301 https://$host$request_uri;
}
listen 80;
server_name {域名};
return 404;
}
六、网页未正常显示问题
首次访问后,页面显示:
Welcome to nginx! If you see this page…
问题分析
- nginx 托管目录
/etc/nginx/sites-enabled/default
先置优先级高,抛弃 node1.conf
解决方案
sudo rm /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx
重启后 HTTPS 配置生效
七、证书自动续签校验
sudo certbot renew --dry-run
如果无错,表明系统已自动定时创建 cron 或 systemd timer
八、经验记录
综合展望
该过程实际证明:
- Let’s Encrypt + Certbot 是免费高效的公钥证书解决方案
- 配合 nginx 配置可很好实现手动+自动化
- 实际部署过程中要突破“经验性”的基础配置问题
最后
- 好看的灵魂千篇一律,有趣的鲲志一百六七!
- 如果觉得文章还不错的话,可以点赞+收藏+关注 支持一下,鲲志的主页 还有很多有趣的文章,欢迎小伙伴们前去点评
- 如果有什么需要改进的地方还请大佬指出❌
- 欢迎学习交流|商务合作|共同进步!
- ❤️ kunzhi96 公众号【鲲志说】
更多推荐
所有评论(0)