Let's Encrypt 免费申请 SSL 证书,并实现自动续期
标签搜索

Let's Encrypt 免费申请 SSL 证书,并实现自动续期

lishengxie
2025-06-14 / 0 评论 / 1 阅读 / 正在检测是否收录...

背景

对于公网可以访问的网站,使用 HTTPS 协议是保证安全访问的基础要求,而 SSL 证书又是 HTTPS 协议不可或缺的一环。SSL 证书需要 CA 机构颁发,当前使用了阿里云的个人测试证书(免费证书),申请后上传到服务器并更新 nginx 配置。

当前存在的问题是,阿里云的免费 SSL 证书每三个月过期一次,需要手动重新申请并部署到服务器上,流程比较复杂。在网上看到可以使用 Let's Encrypt 免费申请 SSL 证书,并实现自动续期,于是做了尝试,这里记录下相关流程。

环境准备

  • 一台可以访问公网的服务器,我使用的是 Linux/Ubuntu。
  • root 权限或者 sudo 权限。
  • 存在 DNS 解析的域名。

Let's Encrypt 证书颁发

Let’s Encrypt 是一个免费的、自动化的、开放的证书颁发机构(CA),提供免费 SSL 证书。它的目标是让所有网站都能轻松实现 HTTPS 加密,保障用户数据的安全。通过 Let’s Encrypt 可以为网站的主域名、子域名,甚至泛域名配置安全证书,而且过程完全自动化,不需要手动申请和管理证书,官方推荐使用 Certbot

Certbot 安装

Linux 平台上可以使用 snap 或 pip 安装 Certbot,这里使用 Python + pip 的方式,参考安装流程

1、首先安装 Python 环境。

sudo apt update
sudo apt install python3 python3-dev python3-venv libaugeas-dev gcc

2、移除旧版本的 Certbot 工具。

sudo apt-get remove certbot

3、设置 Python 虚拟环境并安装 Certbot

# 设置 Python 虚拟环境
sudo python3 -m venv /opt/certbot/
sudo /opt/certbot/bin/pip install --upgrade pip
# 安装 Certbot
sudo /opt/certbot/bin/pip install certbot certbot-nginx
# 创建符号链接方便直接访问
sudo ln -s /opt/certbot/bin/certbot /usr/bin/certbot

获取证书

1、使用 Certbot 获取证书,默认 nginx 配置文件的路径为 /etc/nginx/nginx.conf,可以使用 --nginx-server-root 指定不同的配置文件位置。

sudo certbot --nginx --nginx-server-root /www/server/nginx/conf/

2、配置自动更新。由于 Let's Encrypt 的证书有效期也只有 90 天,这里可以配置一个系统定时任务,由 Certbot 每天检查证书是否过期并自动更新。

# 在/etc/crontab定时任务配置文件添加定时任务
# 如下表示每天的0和12点随机延迟0-3600秒检查并执行证书更新服务
echo "0 0,12 * * * root /opt/certbot/bin/python -c 'import random; import time; time.sleep(random.random() * 3600)' && sudo certbot renew --nginx --nginx-server-root /www/server/nginx/conf -q" | sudo tee -a /etc/crontab > /dev/null

验证证书安装成功

SSL证书

定期更新Certbot

sudo /opt/certbot/bin/pip install --upgrade certbot certbot-nginx

参考资料

0

评论 (0)

取消