侧边栏壁纸
博主头像
木小风的博客博主等级

行动起来,活在当下

  • 累计撰写 20 篇文章
  • 累计创建 21 个标签
  • 累计收到 9 条评论

目 录CONTENT

文章目录

使用certbot生成及自动更新证书

木小风
2024-12-08 / 0 评论 / 0 点赞 / 39 阅读 / 6040 字

目前免费证书的大部分有效期都是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

本文链接:使用certbot生成及自动更新证书

作者简介:木小丰,架构师,专注分享软件研发实践、架构思考。欢迎关注公众号:Java研发

公众号:Java研发

更多精彩文章:

稳定性建设实践

高效能团队的Java研发规范(进阶版)

错误码设计思考 从MVC到DDD的架构演进

0

评论区