一个快速获取更新 Let's encrypt 证书的 shell script

    xiaoxiao2021-12-14  21


    调用 acme_tiny.py 认证、获取、更新证书,不需要额外的依赖。

    下载到本地

    wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.conf wget https://raw.githubusercontent.com/xdtianyu/scripts/master/lets-encrypt/letsencrypt.sh chmod +x letsencrypt.sh

    配置文件

    只需要修改 DOMAIN_KEY DOMAIN_DIR DOMAINS 为你自己的信息

    ACCOUNT_KEY="letsencrypt-account.key" DOMAIN_KEY="example.com.key" DOMAIN_DIR="/var/www/example.com" DOMAINS="DNS:example.com,DNS:whatever.example.com" #ECC=TRUE #LIGHTTPD=TRUE

    执行过程中会自动生成需要的 key 文件。其中 ACCOUNT_KEY 为账户密钥, DOMAIN_KEY 为域名私钥, DOMAIN_DIR 为域名指向的目录,DOMAINS 为要签的域名列表, 需要 ECC 证书时取消 #ECC=TRUE 的注释,需要为 lighttpd 生成 pem 文件时,取消 #LIGHTTPD=TRUE 的注释。

    运行

    ./letsencrypt.sh letsencrypt.conf

    注意

    需要已经绑定域名到 /var/www/example.com 目录,即通过 http://example.com http://whatever.example.com 可以访问到 /var/www/example.com 目录,用于域名的验证

    将会生成如下几个文件

    lets-encrypt-x1-cross-signed.pem example.chained.crt # 即网上搜索教程里常见的 fullchain.pem example.com.key # 即网上搜索教程里常见的 privkey.pem example.crt example.csr

    在 nginx 里添加 ssl 相关的配置

    ssl_certificate /path/to/cert/example.chained.crt; ssl_certificate_key /path/to/cert/example.key;

    cron 定时任务

    每个月自动更新一次证书,可以在脚本最后加入 service nginx reload等重新加载服务。

    0 0 1 * * /etc/nginx/certs/letsencrypt.sh /etc/nginx/certs/letsencrypt.conf >> /var/log/lets-encrypt.log 2>&1

    来源

    转载请注明原文地址: https://ju.6miu.com/read-969042.html

    最新回复(0)