前言 一直听说过 Let`s Encrypt 自动签发证书 一直用的阿里云申请的免费证书 一年换一次 鸡儿痛 最近干脆切换到 certBot 来自动申请管理Let`s Encrypt 证书
https://certbot.eff.org/ certbot官网
实例
以在debian上 nginx+certBot 自动签发管理为例
1 2 3 4 5 6 echo "deb http://nginx.org/packages/debian/ bullseye nginx">> /etc/apt/sources.list echo "deb-src http://nginx.org/packages/debian/ bullseye nginx">> /etc/apt/sources.list wget http://nginx.org/keys/nginx_signing.key && apt-key add nginx_signing.key apt update && apt dist-upgrade -y apt dist-upgrade -y nginx sudo apt install nginx
1 2 # debian 默认是 snap方式 不想用 直接安装 python版本 pip安装 没使用官方的文档 直接搜索 deb仓库里面的 sudo apt install certbot python3-certbot-nginx
配置文件在/etc/nginx/conf.d 新增show.conf
configuration 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 server { listen 80 ; server_name show.xujiuming.com; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } }
如果是国内必须确定是否可以访问443端口 自动配置会验证443端口可用性 例如未备案被拦截 或者被阻止访问 都无法申请成功
1 2 # 开始自动配置 会要求输入邮箱 选择各种方式 按照提示选择即可 实在不会 参考: https://www.jianshu.com/p/4d4f9376fe20 sudo certbot --nginx
查看nginx配置 是否存在 开放443端口和相关证书配置
configuration 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 server { server_name show.xujiuming.com; location / { root /usr/share/nginx/html; index index.html index.htm; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } listen 443 ssl; ssl_certificate /etc/letsencrypt/live/show.xujiuming.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/show.xujiuming.com/privkey.pem; include /etc/letsencrypt/options-ssl-nginx.conf; ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; } server { if ($host = show.xujiuming.com) { return 301 https://$host $request_uri ; } listen 80 ; server_name show.xujiuming.com; return 404 ; }
访问443端口
1 curl https://show.xujiuming.com
查看certBot自动续期任务是否存在
1 2 3 4 5 6 # 模拟运行 自动续期 sudo certbot renew --dry-run # 查看crontab 配置中是否有 certbot ls /etc/cron.d/ |grep certbot # 查看是否存在 certbot.timer sudo systemctl list-timers |grep certbot
常用命令 #给nginx自动配置
certbot --nginx
# 指定域名
certbot --nginx -d \[domain]
# 续期
certbot renew
# 测试续期
certbot renew --dry-run
# help
certbot --help
总结 certBot 自动处理证书相关配置 简单粗暴 适合懒狗使用