CentOS 服务器使用 Certbot 配置阿里云 SSL 证书一键申请指南

本教程将指导您在 CentOS 系统上使用 Certbot 配合阿里云 DNS 申请免费的 Let’s Encrypt 通配符 SSL 证书,并配置自动续期。整个过程简单易行,无需人工干预。

一、前期准备

1. 安装 Python 环境

确保系统已安装 Python 3 和 pip:

1
sudo yum install -y python3 python3-pip

2. 安装 Certbot 和阿里云插件

通过 pip 安装 Certbot 及阿里云 DNS 验证插件:

1
2
pip install --upgrade pip
pip install certbot certbot-dns-aliyun

二、配置阿里云 DNS 验证权限

1. 创建 RAM 用户

  1. 登录阿里云 RAM 控制台
  2. 创建一个新的 RAM 用户,并授予 AliyunDNSFullAccess 权限
  3. 为该用户创建 AccessKey,并记录 AccessKey ID 和 AccessKey Secret

2. 创建认证配置文件

创建目录和认证文件:

1
2
3
4
5
# 创建配置目录
sudo mkdir -p /opt/certbot_dns

# 创建凭证文件
sudo nano /opt/certbot_dns/credentials.ini

在文件中添加您的阿里云 AccessKey 信息:

1
2
dns_aliyun_access_key = <你的AccessKey ID>
dns_aliyun_access_key_secret = <你的AccessKey Secret>

设置安全的文件权限:

1
sudo chmod 600 /opt/certbot_dns/credentials.ini

三、申请通配符证书

执行以下命令申请证书(将 example.cn 替换为您的实际域名):

1
2
3
4
5
sudo certbot certonly \
--authenticator dns-aliyun \
--dns-aliyun-credentials /opt/certbot_dns/credentials.ini \
-d example.cn \
-d "*.example.cn"

成功后会显示类似以下信息:

1
2
3
4
Successfully received certificate.
Certificate is saved at: /etc/letsencrypt/live/example.cn/fullchain.pem
Key is saved at: /etc/letsencrypt/live/example.cn/privkey.pem
This certificate expires on 2025-08-16.

四、证书文件说明

申请成功后,证书文件保存在以下位置:

  • 证书文件/etc/letsencrypt/live/example.cn/fullchain.pem
  • 私钥文件/etc/letsencrypt/live/example.cn/privkey.pem

这些文件可直接在 Nginx 或 Apache 的 SSL 配置中引用。

五、配置证书自动续期

1. 创建证书续期后的自动重载脚本

创建一个脚本,使证书续期后自动重新加载 Web 服务器:

1
2
sudo mkdir -p /etc/letsencrypt/renewal-hooks/deploy
sudo nano /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

添加以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
#!/bin/bash

# 测试 Nginx 配置
nginx -t

# 如果配置测试成功,则重新加载 Nginx
if [ $? -eq 0 ]; then
nginx -s reload
echo "Nginx 配置测试并重新加载成功"
else
echo "Nginx 配置测试失败"
exit 1
fi

设置脚本执行权限:

1
sudo chmod +x /etc/letsencrypt/renewal-hooks/deploy/reload-nginx.sh

2. 测试自动续期流程

使用以下命令测试续期流程(不会实际更新证书):

1
sudo certbot renew --dry-run

如果看到 “Congratulations, all simulated renewals succeeded” 信息,则表示测试成功。

3. 启用自动续期计划任务

启用并启动系统自带的 certbot 定时任务:

1
2
sudo systemctl enable --now certbot-renew.timer
sudo systemctl start certbot-renew.timer

检查定时器状态:

1
sudo systemctl status certbot-renew.timer

六、自动续期工作原理

Certbot 的自动续期机制具有以下特点:

  1. 检查频率:系统每天随机时间运行两次证书检查
  2. 续期条件:仅当证书剩余有效期少于 30 天时才执行续期
  3. DNS 验证:使用配置好的阿里云 API 自动完成验证,无需人工操作
  4. 续期后操作:成功续期后自动执行我们配置的 Nginx 重载脚本

您可以通过以下命令查看续期计划和日志:

1
2
3
4
5
6
7
8
# 查看续期计划
sudo systemctl list-timers certbot-renew.timer --all

# 查看续期服务日志
sudo journalctl -u certbot-renew.service

# 查看 certbot 详细日志
sudo tail -f /var/log/letsencrypt/letsencrypt.log

七、参考资料