美文网首页
使用Certbot申请免费 HTTPS 证书及自动续期

使用Certbot申请免费 HTTPS 证书及自动续期

作者: 李小二的倔强 | 来源:发表于2023-08-21 16:54 被阅读0次

    环境:Nginx、Centos7

    安装 Certbot

    yum install epel-release -y
    yum install certbot -y
    

    申请证书

    域名分为主域名 test.com 和泛域名 *.test.com

    执行以下命令:

    # 泛域名:
    certbot certonly -d *.test.com --manual --preferred-challenges dns
    
    # 主域名:
    certbot certonly -d test.com --manual --preferred-challenges dns
    

    这时会出现下图的界面

    image.png

    你需要按照提示,在你的域名服务商处,添加对应的 DNS TXT 解析记录。

    配置好之后,按回车继续。
    如果成功的话,它会生成两个文件:

    • /etc/letsencrypt/live/test.com/fullchain.pem
    • /etc/letsencrypt/live/test.com/privkey.pem

    nginx 配置

    参考Https访问一个Nginx转向另一个内网Nginx 中的证书配置。

    续期

    Certbot 是申请的Let’s Encrypt的免费证书,有效期 3 个月,到期之后我们可以再次续期,达到永久免费的效果。

    手动续期

    你只需要在到期前,再手动执行生成证书的命令

    certbot certonly -d *.test.com --manual --preferred-challenges dns
    

    再重复一下配置 DNS 解析的操作就 OK 啦。

    自动续期(未实际使用测试,后续更新...)

    再说每次都手动配置 DNS 解析也挺烦的,如果域名很多就更麻烦了。

    好在 certbot 提供了一个 hook,让我们可以编写一个 Shell 脚本。在续期的时候让脚本调用 DNS 服务商的 API 接口动态添加 TXT 记录,验证完成后再删除此记录。

    这里推荐 @justjavac 大佬写的,https://github.com/justjavac/certbot-dns-aliyun

    安装和使用指南可看 README。

    生成也可以用:

    # 泛域名
    certbot certonly -d *.test.com --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"
    

    续费命令:

    # 续费命令
    certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean"
    

    然后再利用 crontab 定时任务,每天执行一下自动续期。

    1 1 */1 * * root certbot renew --manual --preferred-challenges dns --manual-auth-hook "alidns" --manual-cleanup-hook "alidns clean" --deploy-hook "nginx -s reload"
    

    相关文章

      网友评论

          本文标题:使用Certbot申请免费 HTTPS 证书及自动续期

          本文链接:https://www.haomeiwen.com/subject/ancymdtx.html