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

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

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

    写了个 Let's Encrypt 的在线签发及管理工具 https://www.v2ex.com/t/301332

    写了个简易教程 https://www.v2ex.com/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
    Love4Taylor
        49
    Love4Taylor  
       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   ·   实用小工具   ·   2590 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 02:39 · PVG 10:39 · LAX 18:39 · JFK 21:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.