➡️【好看的灵魂千篇一律,有趣的鲲志一百六七!】- 欢迎认识我~~
作者:鲲志说 (公众号、B站同名,视频号:鲲志说996)
科技博主:极星会 星辉大使
全栈研发:java、go、python、ts,前电商、现web3
主理人:COC杭州开发者社区主理人 、周周黑客松杭州主理人、
博客专家:阿里云专家博主;CSDN博客专家、后端领域新星创作者、内容合伙人
AI爱好者:AI电影共创社杭州核心成员、杭州AI工坊共创人、阿里蚂蚁校友会技术AI分会副秘书长

在这里插入图片描述

一、项目背景 & 目标

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 公众号【鲲志说】

在这里插入图片描述

Logo

助力广东及东莞地区开发者,代码托管、在线学习与竞赛、技术交流与分享、资源共享、职业发展,成为松山湖开发者首选的工作与学习平台

更多推荐