V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
clanned
V2EX  ›  分享创造

cloudxns DNS 验证方式快速获取 lets-encrypt 证书的 shell 脚本

  •  4
     
  •   clanned · 2016-02-02 13:51:52 +08:00 · 7235 次点击
    这是一个创建于 2999 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://github.com/xdtianyu/scripts/tree/master/le-dns

    脚本基于 letsencrypt.sh,通过调用 cloudxns API 更新 TXT 记录用于认证,实现快速获取 lets-encrypt 证书。无需 root 权限,无需指定网站目录及 DNS 解析

    下载

    wget https://github.com/xdtianyu/scripts/raw/master/le-dns/le-cloudxns.sh
    wget https://github.com/xdtianyu/scripts/raw/master/le-dns/cloudxns.conf
    chmod +x le-cloudxns.sh
    

    配置

    cloudxns.conf 文件内容

    API_KEY="YOUR_API_KEY"
    SECRET_KEY="YOUR_SECRET_KEY"
    DOMAIN="example.com"
    CERT_DOMAINS="example.com www.example.com im.example.com"
    

    修改其中的 API_KEYSECRET_KEY 为您的 cloudxns api key ,修改 DOMAIN 为你的根域名,
    修改 CERT_DOMAINS 为您要签的域名列表

    运行

    ./le-cloudxns.sh cloudxns.conf

    最后生成的文件在当前目录的 certs 目录下

    cron 定时任务

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

    * * * */2 * /etc/nginx/le-cloudxns.sh /etc/nginx/le-cloudxns.conf >> /var/log/le-cloudxns.log 2>&1

    第 1 条附言  ·  2016-02-21 13:31:02 +08:00

    正文的 cron 命令错了,会在每分钟都执行,修复如下

    cron 定时任务

    每两个月(第一天 00:00)自动更新一次证书,可以在 le-cloudxns.sh 脚本最后加入 service nginx reload 等重新加载服务。

    0 0 1 */2 * /etc/nginx/le-cloudxns.sh /etc/nginx/le-cloudxns.conf >> /var/log/le-cloudxns.log 2>&1

    17 条回复    2017-08-19 21:47:20 +08:00
    xonze
        1
    xonze  
       2016-02-02 14:19:48 +08:00
    牛 x ,这个方法好
    mdemo
        2
    mdemo  
       2016-02-02 14:22:59 +08:00
    CloudXNS
        3
    CloudXNS  
       2016-02-02 14:29:59 +08:00   ❤️ 1
    这个不错,不过应该首发到 X 社区才是(●ˇ∀ˇ●)
    wm5d8b
        4
    wm5d8b  
       2016-02-02 17:13:54 +08:00
    TXT 记录的主机记录是什么?主域名的 TXT 记录用在其他服务上了
    clanned
        5
    clanned  
    OP
       2016-02-02 17:28:07 +08:00   ❤️ 1
    @wm5d8b 同域名 TXT 记录可以有多个的,不知道有冲突没。另外这个不会影响到你的根域名 txt 记录,写入的 txt 记录是 _acme-challenge.example.com _acme-challenge.www.example.com 这样的形式。
    wm5d8b
        6
    wm5d8b  
       2016-02-06 20:02:59 +08:00
    @clanned 今天试了试, CERT_DOMAINS 中有多个域名时,最后输出的证书只有第一个
    clanned
        7
    clanned  
    OP
       2016-02-06 21:53:32 +08:00
    @wm5d8b 你是说生成的文件名吗?这是个多域名证书,域名都在 “ alternative subject name ”里,检查下证书详情应该可以看到。
    wm5d8b
        8
    wm5d8b  
       2016-02-07 14:58:51 +08:00
    @clanned 原来如此, SAN(Subject Alternative Name)就是多域名证书。
    aitaii
        9
    aitaii  
       2016-04-08 22:02:58 +08:00
    hello,i have a problem:ERROR: Problem connecting to server (curl returned with 7)
    + ERROR: An error occurred while sending post-request to https://acme-v01.api.letsencrypt.org/acme/new-authz (Status 400)

    Details:
    {"type":"urn:acme:error:badNonce","detail":"JWS has no anti-replay nonce","status":400}

    how to do it ?
    aitaii
        10
    aitaii  
       2016-04-08 22:13:12 +08:00
    Domain locked,please unlock domain

    first in other option page

    该域名已被用户锁定,请先解锁
    clanned
        11
    clanned  
    OP
       2016-04-09 07:42:32 +08:00 via Android
    @aitaii 参考这里 https://community.letsencrypt.org/t/getting-the-client-sent-an-unacceptable-anti-replay-nonce/9172/18 应该是 le 服务端的问题,建议重试下,注意尽量不要超过一周内七次的限制
    YvesX
        12
    YvesX  
       2016-04-11 02:05:56 +08:00
    呀,发现了一个对我而言尽善尽美的办法,不枉熬夜。
    赞扬楼主!
    jackton
        13
    jackton  
       2016-09-22 09:49:43 +08:00
    这办法不错.试试
    kyvi
        14
    kyvi  
       2016-12-16 09:32:21 +08:00
    @clanned ,问你个问题, letsencrypt 实现自动更新证书,我查的好像都是要更新或者 reload web 服务器才可以,我这的是 tomcat 上配置的 ssl 证书,有办法不重启 tomcat 更新 ssl 证书吗?毕竟生产环境没有办法频繁重启 tomcat
    clanned
        15
    clanned  
    OP
       2016-12-16 10:40:11 +08:00 via Android
    kyvi
        16
    kyvi  
       2016-12-19 11:33:29 +08:00
    @clanned ,我还有个问题想请教下, https://www.v2ex.com/t/328499#reply3
    wkl17
        17
    wkl17  
       2017-08-19 21:47:20 +08:00
    如果能加个判断 异常时 自动重试 就更好了。(因为过程中,有时会遇到 403 之类的错误,遇到至少 2 次还是 3 次了 就中断了,必须重新执行)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5330 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 09:13 · PVG 17:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.