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

acme.sh 非常简单的 从 letsencrypt 生成 ssl 证书的中文说明

  •  
  •   neilp ·
    Neilpang · 2016-09-29 23:20:56 +08:00 · 9044 次点击
    这是一个创建于 2981 天前的主题,其中的信息可能已经有所发展或是发生改变。
    acme.sh 是一个纯 unix shell 兼容的 脚本, 实现了 acme 协议, 可以从 letsencrypt 自动生成并更新 ssl 证书.

    我刚刚写了一个中文说明, 希望能帮到大家, 为大家节约时间:

    https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
    36 条回复    2016-12-23 09:35:48 +08:00
    majinjing3
        1
    majinjing3  
       2016-09-29 23:31:01 +08:00 via Android
    支持一个,一直在使用,哈哈~不错不错
    neilp
        2
    neilp  
    OP
       2016-09-29 23:38:05 +08:00
    acrisliu
        3
    acrisliu  
       2016-09-29 23:45:21 +08:00 via Android
    有一点好像 readme 里面没说:安装 ECC 证书需要带上--ecc 参数,貌似是新版本才要求这样的。
    neilp
        4
    neilp  
    OP
       2016-09-29 23:47:49 +08:00
    @acrisliu 是的, 在 安装证书时, 如果是 ecc 证书, 需要 加上 `--ecc` 参数, 这是为了让 rsa 证书和 ecdsa 证书共存, 如果没有 `--ecc`, 系统无法区分 要使用 rsa 证书还是 ecdsa 证书.
    msg7086
        5
    msg7086  
       2016-09-29 23:59:44 +08:00
    大佬_(:з」∠)_

    签发 ecc&rsa 双证书有什么更方便的方法吗?
    我现在都是手动改 conf 配置文件来伪装成两个网站去 renew 的。
    neilp
        6
    neilp  
    OP
       2016-09-30 00:02:02 +08:00 via iPhone
    @msg7086 为什么要伪装 直接签两个不就好了?
    msg7086
        7
    msg7086  
       2016-09-30 00:17:23 +08:00
    [Thu Sep 29 12:16:36 EDT 2016] Skip, Next renewal time is

    不伪装的话咋签第二个?
    neilp
        8
    neilp  
    OP
       2016-09-30 00:34:31 +08:00 via iPhone
    @msg7086

    第二个加参数

    acme.sh ....... -k ec-256
    msg7086
        9
    msg7086  
       2016-09-30 04:41:10 +08:00
    @neilp ↑ 这就是我想要的回答。多谢!
    msg7086
        10
    msg7086  
       2016-09-30 04:47:32 +08:00
    ↑ 我又想了一下,应该是我之前用两个月前的版本试的时候还没支持吧?
    那时候我用 -k ec-384 结果直接 Skip 了。

    之前那个 Skip verification 的问题也是因为没有更新到最新版本。
    Showfom
        11
    Showfom  
       2016-09-30 06:02:53 +08:00 via iPhone
    @msg7086 只用 ecc is 就行了,不要去考虑老掉牙的浏览器和设备咯哈哈
    paranoiagu
        12
    paranoiagu  
       2016-09-30 08:00:36 +08:00 via Android
    收藏了
    isbase
        13
    isbase  
       2016-09-30 08:09:07 +08:00 via Android
    没有放首页,新用户发现的几率很小
    wql
        14
    wql  
       2016-09-30 23:31:38 +08:00 via Android
    感谢楼主!一直在用你的程序签证书!
    isCyan
        15
    isCyan  
       2016-10-01 01:16:29 +08:00 via Android
    之前就用了,特别赞!!
    mritd
        16
    mritd  
       2016-10-01 21:55:46 +08:00
    问个小问题,这个自动续期的时候 要不要验证 80 端口?

    我在创建的时候 是基于 nginx 的 docker 镜像创建,创建时 nginx 还没启动,但创建成功后 nginx 就启动了 ,如果自动续期占用 80 的话就会和 nginx 冲突
    neilp
        17
    neilp  
    OP
       2016-10-01 22:41:16 +08:00
    @mritd 理论上每次生成证书都要验证所有权。 而验证所有权的方式有很多种, 你说的属于 standalone 模式, 80 端口必须可用。 如果你已经有 nginx 占用了 80 端口, 可以使用 webroot 模式。 直接在网站根目录防止一个文件验证所有权。 还有一种用 dns 验证所有权,需要在 dns 上添加一条 txt 记录验证所有权。

    鉴于你的情况, 建议你用 webroot 模式。

    ···
    acme.sh --issue -d mydomain.com --webroot /home/wwwroot/mydomain.com
    ···

    https://github.com/Neilpang/acme.sh/wiki/%E8%AF%B4%E6%98%8E
    mritd
        18
    mritd  
       2016-10-02 16:12:52 +08:00 via iPhone
    @neilp 已经解决了,情况有点复杂……我写了个脚本,要生成时临时启动一个 nginx ,然后挂载目录验证,生成后再启动 compocompose 的容器就行了……最后我发现有 godagodaddy 的支持……泪奔😂😂😂
    liul85
        19
    liul85  
       2016-10-06 11:58:35 +08:00
    收藏了,多谢楼主
    GPU
        20
    GPU  
       2016-10-18 14:18:03 +08:00
    您好. 请问我更换了 VPS 之后,是否把整个 .acme.sh 目录复制到新 vps,然后添加一条 crontab 就可以了.
    neilp
        21
    neilp  
    OP
       2016-10-18 16:29:19 +08:00
    @GPU
    是的, 复制过去之后, 在重新安装一次, 它会自动找到之前的文件, 并自动添加 crontab
    GPU
        22
    GPU  
       2016-10-18 16:30:46 +08:00
    @neilp 谢谢 。明白了。
    GPU
        23
    GPU  
       2016-10-19 13:58:47 +08:00
    @neilp

    root@debian:~/.acme.sh# ./acme.sh --install
    [Wed Oct 19 13:57:56 CST 2016] Installing to /root/.acme.sh
    cp: ‘ acme.sh ’ and ‘/root/.acme.sh/acme.sh ’ are the same file
    [Wed Oct 19 13:57:56 CST 2016] Install failed, can not copy acme.sh
    neilp
        24
    neilp  
    OP
       2016-10-19 15:41:33 +08:00
    @GPU
    重新 install 的时候, 同一个文件不能拷贝.


    直接在线安装: curl https://get.acme.sh| sh

    就好了.
    yylzcom
        25
    yylzcom  
       2016-10-19 16:09:28 +08:00
    能不能加上自动合并中级证书的功能:
    https://letsencrypt.org/certs/lets-encrypt-x1-cross-signed.pem
    neilp
        26
    neilp  
    OP
       2016-10-19 17:50:43 +08:00   ❤️ 2
    @yylzcom
    我们早就支持自动合并了.
    在证书目录下有个 fullchain.cer
    chdon
        27
    chdon  
       2016-10-20 23:50:23 +08:00
    @neilp 工具非常好用。 fullchain.cer 已经包含网站证书和中间证书了吗,手机提示过期不被信任。。。
    neilp
        28
    neilp  
    OP
       2016-10-21 09:41:55 +08:00
    @chdon 是.
    xshwy
        29
    xshwy  
       2016-10-23 18:24:15 +08:00 via iPhone
    阿里云有免费证书
    fhefh
        30
    fhefh  
       2016-10-24 22:10:46 +08:00
    这个不错 mark
    chdon
        31
    chdon  
       2016-10-26 19:15:46 +08:00
    @neilp 不行的,里面内容就是 ca.cer,命令复制之后就没有。
    neilp
        32
    neilp  
    OP
       2016-10-27 23:20:41 +08:00
    @chdon 不明白你的意思。
    到这里 报 bug https://github.com/Neilpang/acme.sh/issues
    hanyang
        33
    hanyang  
       2016-12-08 14:20:11 +08:00
    @neilp 楼主 我看 crontab 里面的定时任务是每天 00:00 点执行 renew 。为什么文档上说的是 every 60 days ?
    neilp
        34
    neilp  
    OP
       2016-12-08 17:53:17 +08:00
    @hanyang
    每天 0 点是检查所有的证书, 如果哪一个证书到了 60 天了, 就会更新.
    hanyang
        35
    hanyang  
       2016-12-09 09:09:02 +08:00
    @neilp 明白了 谢谢楼主
    teng2017
        36
    teng2017  
       2016-12-23 09:35:48 +08:00
    采用 dns 验证,自动更新证书,是不是需要 dns api
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1226 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:29 · PVG 07:29 · LAX 15:29 · JFK 18:29
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.