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

技术社区 作者:KnowSafe 2025-05-07 23:06:19 阅读:16

目前免费证书的大部分有效期都是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实现免费SSL证书的自动签发与续签

    在网络安全日益重要的今天,为网站配置SSL证书成为了必不可少的步骤。然而,Let's Encrypt的免费证书有效期仅为90天,手动续签较为繁琐且容易因延误导致证书过期,影响网站正常访问。本文

  • Certbot如何设置证书续期

    SSL证书到期后,网站无法正常访问,或出现证书过期警告,影响用户体验和网站安全。解决方案1. 设置证书续期提醒:使用系统自带的提醒工具或第三方监控工具,设置SSL证书有效期提醒。例如,在Linux系统

  • Certbot 80/443端口冲突怎么解决

    在运行Certbot命令申请证书时,系统提示端口占用错误,无法正常启动Web服务器或完成证书验证。这通常是因为80端口(HTTP默认端口)或443端口(HTTPS默认端口)已被其他进程占用,导致Cer

赞助链接
在线咨询

Copyright © 2015 KnowSafe All rights reserved.

蜀ICP备20006130号-8