V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
爱意满满的作品展示区。
neilp

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

  •  
  •   neilp ·
    Neilpang · Sep 29, 2016 · 9697 views
    This topic created in 3503 days ago, the information mentioned may be changed or developed.
    acme.sh 是一个纯 unix shell 兼容的 脚本, 实现了 acme 协议, 可以从 letsencrypt 自动生成并更新 ssl 证书.

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

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

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

    不伪装的话咋签第二个?
    neilp
        8
    neilp  
    OP
       Sep 30, 2016 via iPhone
    @msg7086

    第二个加参数

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

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

    我在创建的时候 是基于 nginx 的 docker 镜像创建,创建时 nginx 还没启动,但创建成功后 nginx 就启动了 ,如果自动续期占用 80 的话就会和 nginx 冲突
    neilp
        17
    neilp  
    OP
       Oct 1, 2016
    @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  
       Oct 2, 2016 via iPhone
    @neilp 已经解决了,情况有点复杂……我写了个脚本,要生成时临时启动一个 nginx ,然后挂载目录验证,生成后再启动 compocompose 的容器就行了……最后我发现有 godagodaddy 的支持……泪奔😂😂😂
    liul85
        19
    liul85  
       Oct 6, 2016
    收藏了,多谢楼主
    GPU
        20
    GPU  
       Oct 18, 2016
    您好. 请问我更换了 VPS 之后,是否把整个 .acme.sh 目录复制到新 vps,然后添加一条 crontab 就可以了.
    neilp
        21
    neilp  
    OP
       Oct 18, 2016
    @GPU
    是的, 复制过去之后, 在重新安装一次, 它会自动找到之前的文件, 并自动添加 crontab
    GPU
        22
    GPU  
       Oct 18, 2016
    @neilp 谢谢 。明白了。
    GPU
        23
    GPU  
       Oct 19, 2016
    @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
       Oct 19, 2016
    @GPU
    重新 install 的时候, 同一个文件不能拷贝.


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

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