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

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

  •  
  •   clanned · 2016-02-07 22:00:42 +08:00 · 7409 次点击
    这是一个创建于 2998 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    之前发布了 cloudxns DNS 验证方式快速获取 lets-encrypt 证书的 shell 脚本 ,现在 dnspod 的脚本也完成了,欢迎大家测试~

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

    下载

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

    配置

    dnspod.conf 文件内容

    TOKEN="YOUR_API_TOKEN"
    RECORD_LINE="默认"
    DOMAIN="example.com"
    CERT_DOMAINS="example.com www.example.com im.example.com"
    

    修改其中的 TOKEN 为您的 dnspod api token ,修改 DOMAIN 为你的根域名,修改 CERT_DOMAINS 为您要签的域名列表

    运行

    ./le-dnspod.sh dnspod.conf

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

    cron 定时任务

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

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

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

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

    cron 定时任务

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

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

    第 2 条附言  ·  2016-03-24 14:23:33 +08:00

    注意 TOKEN 格式为 TOKEN="YOUR_TOKEN_ID,YOUR_API_TOKEN"

    另外 如果证书过期时间不少于30天, letsencrypt.sh 脚本会自动忽略更新,所以至少需要29天运行一次更新。

    每隔20天(每个月的5号和25号)自动更新一次证书,可以在 le-dnspod.sh 脚本最后加入 service nginx reload等重新加载服务。

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

    更详细的 crontab 参数请参考 crontab.guru 进行自定义

    8 条回复    2016-02-21 17:50:08 +08:00
    SourceMan
        1
    SourceMan  
       2016-02-07 23:25:46 +08:00
    感谢
    新年快乐
    clanned
        2
    clanned  
    OP
       2016-02-07 23:46:03 +08:00 via Android   ❤️ 1
    @SourceMan 新年快乐~
    d8
        3
    d8  
       2016-02-07 23:48:57 +08:00 via Android
    非常感谢,明天折腾下
    canglaoshi
        4
    canglaoshi  
       2016-02-09 09:49:20 +08:00
    AWS 的求加一个。
    wzxjohn
        5
    wzxjohn  
       2016-02-20 14:58:49 +08:00
    脚本报错:
    ./dnspod.sh: 12: .: dnspod.conf: not found
    非常奇怪的问题。。。不知道有没有人遇到。。。好蛋疼。。。
    clanned
        6
    clanned  
    OP
       2016-02-20 21:38:38 +08:00
    @wzxjohn 你调用的命令是什么?是`./le-dnspod.sh dnspod.conf`吗
    clanned
        7
    clanned  
    OP
       2016-02-20 21:54:03 +08:00
    @wzxjohn 感谢反馈~非常抱歉带来的不便,是因为 "#!/bin/sh" 造成的,已经修改好了。另外建议这类问题尽量提交的 GitHub 。
    wzxjohn
        8
    wzxjohn  
       2016-02-21 17:50:08 +08:00
    @clanned 因为懒得写英文的 issue 所以直接在这里 at 你了哈哈。找到问题就好。。。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   986 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 20:31 · PVG 04:31 · LAX 13:31 · JFK 16:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.