SSL.md 支持 REST API 续签证书了 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
sneezry
V2EX    分享创造

SSL.md 支持 REST API 续签证书了

  •  
  •  
    Sneezry 2016-11-27 21:55:19 +08:00 4851 次点击
    这是一个创建于 3292 天前的主题,其中的信息可能已经有所发展或是发生改变。
    前情概要

    写了个 Let's Encrypt 的在线签发及管理工具 t/301332

    写了个简易教程 t/307128

    ---

    现在在 SSL.md 签发证书和传统证书签发体验相近,更容易被多数用户所接受,不过由于 Let's Encrypt 证书有效期是 90 天,比部分传统证书有效期短,手动续签比较麻烦。

    为了让续签变得容易,同时能让多数用户使用门槛降到最低, SSL.md 现在支持 REST API 续签证书。

    登录 https://ssl.md 后,在右上角头像左侧会看到一串颜色淡得快看不见的身份标识字符<identify>,通过访问 https://ssl.md/api/<domain>/<identify>; 来续签证书。

    如果续签成功,返回一个 JSON 数据 data , data['cert']就是最新的证书,记得把里面的“\n ”替换成换行后保存使用。

    第 1 条附言    2016-11-27 23:46:04 +08:00
    根据 #18 楼的建议,已经改为访问 api 直接下载证书了。
    第 2 条附言    2016-11-28 23:18:36 +08:00
    如果距离证书过期时间超过 20 天,访问 API 得到的是旧证书,如果确实希望重新签发需要到 dashboard 手动 re-issue 。
    50 条回复    2017-09-05 01:14:41 +08:00
    kuretru
        1
    kuretru  
       2016-11-27 22:10:29 +08:00
    续签的时候需要保持 DNS 记录吗
    sneezry
        2
    sneezry  
    OP
       2016-11-27 22:21:32 +08:00
    @kuretru 需要的,因为 ACME 续签的时候还是需要验证域名所有权的
    belain
        3
    belain  
       2016-11-27 22:23:48 +08:00 via Android
    这个可以有
    yangff
        4
    yangff  
       2016-11-27 22:25:03 +08:00
    续签不改变密钥对?
    sneezry
        5
    sneezry  
    OP
       2016-11-27 22:27:27 +08:00
    @yangff 如果想改变 csr 可以到后台更新, csr 有必须续签的时候更新吗,如果有必要我把这个功能加上
    lslqtz
        6
    lslqtz  
       2016-11-27 22:28:09 +08:00 via iPhone
    @sneezry dns 记录不会变么,不错,要是支持定时任务就更好了。
    @yangff 不改变密钥 key 是可以的...
    qq915458022
        7
    qq915458022  
       2016-11-27 22:33:48 +08:00 via iPhone
    如果有响应式就更好啦 楼主棒棒哒
    sneezry
        8
    sneezry  
    OP
       2016-11-27 22:38:29 +08:00
    @lslqtz 是这样的,验证域名的时候需要把_acme-challenage 的 NS 记录指向 acme.ssl.md ,所以 txt 记录也是 SSL.md 管理的
    sneezry
        9
    sneezry  
    OP
       2016-11-27 22:39:23 +08:00
    @qq915458022 因为这是一个一年也用不上 10 次的工具,所以我的懒癌犯了(捂脸
    yangff
        10
    yangff  
       2016-11-27 22:43:42 +08:00
    @sneezry 并不是必须,基本上没必要每次更新, RSA-2048 对大多数人来说也算很安全了……
    mdzz
        11
    mdzz  
       2016-11-27 23:26:39 +08:00
    建议增加一个 api 直接返回 data["cert"] ,用 http status code 表示是否成功,这样的话写 cron job 直接一个 wget 或者 curl 就 OK 了(虽然这样一点也不 RESTful
    sneezry
        12
    sneezry  
    OP
       2016-11-27 23:29:26 +08:00
    @mdzz 可以啊,等我稍微改一下
    sneezry
        13
    sneezry  
    OP
       2016-11-27 23:52:50 +08:00
    @mdzz 已经改好了
    lslqtz
        14
    lslqtz  
       2016-11-28 00:12:12 +08:00
    @sneezry _acme-challenage 的 NS 记录指向 acme.ssl.md
    这里的 acme.ssl.md 给的是其下的子域名还是直接指向?
    如果是直接指向的话,感觉多个人会有冲突。。
    lslqtz
        15
    lslqtz  
       2016-11-28 00:13:28 +08:00
    还有个问题,我在 ssl.md 注册和登录都没提示直接被 302 了。
    lslqtz
        16
    lslqtz  
       2016-11-28 00:15:29 +08:00
    看起来是因为过短的密码,但没有任何提示。
    lslqtz
        17
    lslqtz  
       2016-11-28 00:19:19 +08:00
    再问个问题, ssl.md 的头像是使用 V2EX 的,但是没法更改头像。
    可以考虑用 V2EX API 来根据 V2 上的用户头像,设置用户名来设置对应的头像。
    也可以考虑提供上传头像 /自定义头像 URL 功能,这样默认的看着有点不舒服 :D
    sneezry
        18
    sneezry  
    OP
       2016-11-28 00:20:41 +08:00
    @lslqtz _acme-challenge.foo.example.com. IN NS acme.ssl.md. 就是把 NS 指向 acme.ssl.mdacme.ssl.md 是一个 NS 服务器,是 NS 记录,不要脑补出 CNAME 哈。

    如果邮箱之前注册过,再次注册会提示 Sign up failed ,注册的时候有错误信息么,要不把你邮箱前三个字母告诉我我到数据库里看一下
    sneezry
        19
    sneezry  
    OP
       2016-11-28 00:21:53 +08:00
    @lslqtz 头像其实是 avatar ,用的 v2 的代理,因为国内被墙了
    lslqtz
        20
    lslqtz  
       2016-11-28 00:24:30 +08:00
    @sneezry 过短的密码注册和登录时会被 302 到这个页面,没有任何错误信息。
    avatar 好评,不过多个邮箱的表示 :-v
    还是习惯用用户名登录 www
    sneezry
        21
    sneezry  
    OP
       2016-11-28 00:25:27 +08:00
    @lslqtz 可能提示不明显 Orz

    lslqtz
        22
    lslqtz  
       2016-11-28 00:26:26 +08:00
    Request URL:https://ssl.md/join
    Request Method:POST
    Status Code:302 Moved Temporarily

    Form Data
    email:[email protected]
    password:us.md
    lslqtz
        23
    lslqtz  
       2016-11-28 00:27:08 +08:00
    还是说是因为有特殊字符么 233
    忘加一句了 Location:https://ssl.md/join
    sneezry
        24
    sneezry  
    OP
       2016-11-28 00:27:56 +08:00
    @lslqtz 哈哈,是这样的, Error Message 写进 Session 里了,跳转之后的页面会 show 出 Session 里的错误信息并移除掉 Session 。
    lslqtz
        25
    lslqtz  
       2016-11-28 00:37:11 +08:00
    @sneezry session 不太了解,但是我这么操作后似乎没有 session...
    一直开游戏,记得调一下或者关掉声音再进。。
    http://o9o3m83f2.bkt.clouddn.com/o_1b2ja3as11e2r4djq1j1jsl1893a.mp4
    sneezry
        26
    sneezry  
    OP
       2016-11-28 00:41:29 +08:00
    @lslqtz O.O 好大的一只 Bug
    lslqtz
        27
    lslqtz  
       2016-11-28 00:45:06 +08:00
    其实我更在意的是机子是放在哪里的,我的电信访问很快,也很稳定。。访问其他的机子我这边是 300ms...
    lslqtz
        28
    lslqtz  
       2016-11-28 00:48:49 +08:00
    @sneezry 首页的注册可以考虑一下,如果数据库里已有字段就登录,没有就注册(或发送注册邮件) :D
    sneezry
        29
    sneezry  
    OP
       2016-11-28 00:50:45 +08:00
    @lslqtz 你是来要我的 aff 的么?是的,一定是的!

    https://clientarea.ramnode.com/aff.php?aff=3289

    lslqtz
        30
    lslqtz  
       2016-11-28 00:59:52 +08:00
    @sneezry $15 一年 128M 的那台咋样,我准备走 aff 来一台,挂几个自己的站顺便做个游戏代理公开 :v
    sneezry
        31
    sneezry  
    OP
       2016-11-28 01:02:35 +08:00
    @lslqtz 我就是在上面随便买个便宜的玩玩,别的我也没用过,不敢说,公司一个月白给 150 刀的 Azure 用到爽翻天的,哈哈
    lslqtz
        32
    lslqtz  
       2016-11-28 01:05:21 +08:00
    @sneezry 算了,我也搞一台 512M 的好了,话说付款方式是啥 :^'
    sneezry
        33
    sneezry  
    OP
       2016-11-28 01:07:20 +08:00 via iPhone
    @lslqtz 我直接上的信用卡,开了自动续费,反正也不贵,嘿嘿嘿
    lslqtz
        34
    lslqtz  
       2016-11-28 02:33:49 +08:00
    @sneezry 不想用自己的信用卡注册,虚拟信用卡不太好找。。
    支持 pp 么
    twm
        35
    twm  
       2016-11-28 08:40:19 +08:00
    这网站干哈的
    sneezry
        36
    sneezry  
    OP
       2016-11-28 08:41:23 +08:00 via iPhone
    @twm 这网站帮着签免费 SSL 证书的
    missdeer
        37
    missdeer  
       2016-11-28 09:39:04 +08:00
    像家庭宽带,开 443 封 80 端口的,有解吗?
    fhefh
        38
    fhefh  
       2016-11-28 10:22:04 +08:00
    这个不错 先 mark
    aru
        39
    aru  
       2016-11-28 16:57:17 +08:00
    @missdeer
    acme.sh -tls 参数可以自己签,也可以用域名验证方式来签
    我家里电信宽带两种方式都用了( 3322 的动态域名和自己的域名)
    missdeer
        40
    missdeer  
       2016-11-28 22:40:36 +08:00 via Android
    @aru 谢谢,研究一下去
    lslqtz
        41
    lslqtz  
       2016-12-03 08:05:34 +08:00
    @sneezry

    5 天前创建的。。子域名不能验证?
    lslqtz
        42
    lslqtz  
       2016-12-03 08:06:08 +08:00
    不是支持微博图床么。。为什么没内嵌。。
    sneezry
        43
    sneezry  
    OP
       2016-12-03 09:57:47 +08:00 via iPhone
    @lslqtz 是 NS ,不是 CNAME 。看来我真得考虑一下 CNAME 的方式了,很多人会自动脑补成 CNAME
    lslqtz
        44
    lslqtz  
       2016-12-03 09:59:02 +08:00
    @sneezry 对,是我看错了。。
    然而我的 DNS 不支持 NS 。
    sneezry
        45
    sneezry  
    OP
       2016-12-03 12:03:21 +08:00   1
    @lslqtz 现在已经支持 CNAME 了,登录后重新进行验证,页面会提示如何操作的
    onesez
        46
    onesez  
       2017-02-07 23:53:34 +08:00 via iPhone
    楼主使用的是哪儿的 API ,求提供
    sneezry
        47
    sneezry  
    OP
       2017-02-08 00:11:57 +08:00
    @onesez 用的就是 Let's Encrypt 的 ACME 啊,没啥神秘的~~~
    sneezry
        48
    sneezry  
    OP
       2017-02-08 00:13:24 +08:00
    love4taylr
        49
    love4taylor  
    PRO
       2017-09-04 22:10:09 +08:00
    你家证书过期了 233333
    sneezry
        50
    sneezry  
    OP
       2017-09-05 01:14:41 +08:00
    @Love4Taylor 果然……不知道为啥自动化脚本没跑起来……已经 renew 了……
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2917 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 13:45 PVG 21:45 LAX 05:45 JFK 08:45
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86