目前免费证书的大部分有效期都是3个月,博主之前使用acme.sh管理证书,但是在易用性上比价差,自动更新经常不生效,最近将证书管理替换成了certbot。certbot相对而言有以下优势:
Let's Encrypt 官方推荐的客户端工具
自动续期:Let’s Encrypt 证书的有效期为 90 天,Certbot 会自动在证书到期前更新它们,确保 HTTPS 服务的持续性。
自动配置 Web 服务器(如 Apache、Nginx),使其使用新获得的证书提供 HTTPS 服务。
使用 Certbot 的基本步骤
1、安装 Certbot
对于 Ubuntu/Debian 系统,你可以使用以下命令安装 Certbot:
sudo apt-get update sudo apt-get install certbot python3-certbot-nginx
对于 CentOS 系统,你可以使用以下命令安装 Certbot:
sudo yum install epel-release sudo yum install certbot python3-certbot-nginx
2、编辑配置文件
不同的域名提供商有不同的配置参数,以下以腾讯云DNSPod为例。
为了让Certbot支持DNSPod,需要先安装certbot-dns-dnspod插件(Github地址):
sudo pip install git+https://github.com/tengattack/certbot-dns-dnspod.git
然后到DNSPod Token平台创建秘钥,然后创建文件:/etc/certbot-dnspod.ini,其中dns_dnspod_api_id和dns_dnspod_api_token填写刚在DNSPod申请的秘钥信息,内容如下:
dns_dnspod_api_id = ***
dns_dnspod_api_token = ******
执行以下命令更改文件权限:
chmod 600 /path/to/credentials.ini
3、第一次申请证书
配置命令如下,将域名改成你自己的域名,certbot支持一个证书同时支持根域名和泛域名。
certbot certonly -a dns-dnspod \
--dns-dnspod-credentials /etc/certbot-dnspod.ini \
-d lesofn.com \
-d "*.lesofn.com"
执行成功会输出:
Certificate is saved at: /etc/letsencrypt/live/lesofn.com/fullchain.pem
Key is saved at: /etc/letsencrypt/live/lesofn.com/privkey.pem
4、手动更新证书
certbot renew
# 只验证,不真正更新
certbot renew --dry-run
5、Cron定时更新证书
编辑cron配置:crontab -e
添加一下命令:
0 0 * * 0 date >> /var/log/certbot-renew.log && /usr/local/bin/certbot renew >> /var/log/certbot-renew.log
至此,证书生成及自动更新就配置完成了。
使用证书(nginx)
配置nginx文件如下:
server {
listen 443 ssl;
server_name lesofn.com;
ssl_certificate /etc/letsencrypt/live/lesofn.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/lesofn.com/privkey.pem;
......
}
批量替换acme.sh生成的证书:
acme.sh证书默认路径是:~/.acme.sh/lesofn.com_ecc,使用以下命令替换多个nginx配置文件中的证书:
sed -i 's!/{your_acme_path}/lesofn.com_ecc/fullchain.cer!/etc/letsencrypt/live/lesofn.com/fullchain.pem!g' *
sed -i 's!/{your_acme_path}/lesofn.com_ecc/lesofn.com.key!/etc/letsencrypt/live/lesofn.com/privkey.pem!g' *
检查nginx文件并重启nginx:
nginx -t && nginx -s reload
监控和维护
定期检查Nginx和Certbot的日志,以确保证书续签正常运行。如果发现问题,可以手动更新证书或调整自动续签脚本。
可以打开浏览器查看证书,也可以使用以下命令检查:
openssl x509 -in /etc/letsencrypt/live/lesofn.com/fullchain.pem -noout -dates
作者简介:木小丰,架构师,专注分享软件研发实践、架构思考。欢迎关注公众号:Java研发
公众号:Java研发
更多精彩文章:
评论区