请教 Nginx 时完整的 SSL 刷新教程或者脚本 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
fhrui0706
V2EX    NGINX

请教 Nginx 时完整的 SSL 刷新教程或者脚本

  •  
  •   fhrui0706 64 天前 2534 次点击
    这是一个创建于 64 天前的主题,其中的信息可能已经有所发展或是发生改变。

    请教 Nginx 时完整的 SSL 刷新教程或者脚本,例如证书已经申请,前辈一般是怎么做的

    24 条回复    2025-08-07 16:01:37 +08:00
    Tink
        1
    Tink  
    PRO
       64 天前 via iPhone
    什么意思?没太看懂需求,按我的理解,证书申请好的时候触发 webhook ,然后 nginx -s reload ?
    skiy
        2
    skiy  
       64 天前
    acme.sh 支持 hook 。有更新证书之后,执行 hook 。参数是:

    --reloadcmd <command> Command to execute after issue/renew to reload the server.
    zdking08135
        3
    zdking08135  
       64 天前
    1. acme.sh install 时会将证书生成到指定目录
    2. acme.sh 会自动刷新
    3. 生成证书后,复制到 nginx 的证书目录下,覆盖掉旧证书
    4. nginx -s reload
    Daybyedream
        4
    Daybyedream  
       64 天前
    配置路径 更新进去新的?然后 -s reload
    dcsuibian
        5
    dcsuibian  
       64 天前
    我用 caddy ,基本就不用担心 HTTPS 证书了
    mohumohu
        6
    mohumohu  
       64 天前
    搞这么复杂干嘛,反正证书一般都是提前续期的,每天定期 systemctl restart 不就好了,跟 relaod 有何区别
    defunct9
        7
    defunct9  
       63 天前 via iPhone
    lego
    dfdd1811
        8
    dfdd1811  
       63 天前
    acme 申请证书,nginx 配置写死证书位置。acme 自动续证书,一般也不管
    gujiwork
        9
    gujiwork  
       63 天前
    我都是用 https://ssl.dnsjia.com ,首次配置好,后续都是自动更新
    sunny2580839896
        10
    sunny2580839896  
       63 天前
    docker acme 不能运行的时候生成证书,必须要运行后再进入容器使用命令生成
    Foxkeh
        11
    Foxkeh  
       63 天前
    @defunct9 老哥,您这几个字母意思是不是让 OP 把 SSH 密码发给您看看?
    defunct9
        12
    defunct9  
       63 天前
    哦哦,真不是。现在更新证书我只用 lego ,连宝塔的证书更新我都用 lego 了
    PerFectTime
        13
    PerFectTime  
       63 天前
    @Foxkeh #11 这么大恶意? 你不懂就去搜,在这讥讽什么呢? https://github.com/go-acme/lego
    Foxkeh
        14
    Foxkeh  
       63 天前
    @PerFectTime 没有恶意哈哈,上面的大哥很久没说他的口头禅了
    YummyCocoa
        15
    YummyCocoa  
       63 天前
    看看这个 acme.sh 的视频使用教程满不满足需要: https://www.bilibili.com/video/BV1kxNAenEfm/
    defunct9
        16
    defunct9  
       63 天前
    哈哈,开 ssh ,让我上去 lego
    skiy
        17
    skiy  
       63 天前 via iPhone
    @sunny2580839896 外部 exec 就行了,就是无法刷新 nginx 。不过我自己写命令行监听 ssl 目录,当有更新时,再刷新 nginx 。
    FrankFang128
        18
    FrankFang128  
       63 天前
    这些教程没有考虑墙的问题,你如果用的是国内云机器,那么你最好使用 dns 来鉴权,阿里云支持命令行来新增 dns 解析,有对应的插件
    jiangzm
        19
    jiangzm  
       63 天前
    1 、自动生成证书到固定路径
    ```
    export CF_Token="你的 Cloudflare API Token"
    export CF_Account_ID="你的 Account ID"
    acme.sh --issue -d example.com -d '*.example.com' --dns dns_cf
    ```

    2 、Nginx 配置上述证书路径
    ```
    acme.sh --install-cert -d example.com --key-file /etc/nginx/ssl/example.com.key --fullchain-file /etc/nginx/ssl/example.com.cer --reloadcmd "systemctl restart nginx"
    ```

    3 、每天定时或生成证书时 Reload Nginx
    ```
    # 查看定时任务
    crontab -l
    0 4 * * * "/root/.acme.sh"/acme.sh --cron --home "/root/.acme.sh" > /dev/null
    ```
    brucewsl
        20
    brucewsl  
       63 天前
    allinssl WEB 界面的,自动更新并部署证书
    kingwrcy
        21
    kingwrcy  
       63 天前
    用这个 https://github.com/certimate-go/certimate 谁用知道 很强大 基本支持了市面上所有用到 ssl 的地方了
    realpg
        22
    realpg  
    PRO
       63 天前
    我有一台专门的证书签发服务器 因为域名太多了(2 万多个)
    其中一个举例:


    acme.sh --issue --server google --keylength ec-384 --dns dns_ali88 --fullchain-file /etc/ssl/xy-ali-all/wildcard.ecc.crt --key-file /etc/ssl/xy-ali-all/wildcard.ecc.key --reloadcmd /etc/ssl/post-cert/xy-ali-all.sh -d "****" -d "****" --days 85


    xy-ali-all.sh:

    #!/bin/bash

    service nginx reload

    /usr/bin/python /etc/ssl/post-cert/aliyun_upload_ssl_cert.py \
    "xy-group3-auto" \
    "xy-ali-all" \
    "wildcard.ecc.crt" "wildcard.ecc.key"

    /usr/bin/python /etc/ssl/post-cert/ct-elb-upload.py xygroup3-ecc-auto xy-ali-all wildcard.ecc.crt wildcard.ecc.key >> /etc/ssl/post-cert/ctelb-logs.txt

    scp -r /etc/ssl/xy-ali-all/* C141WEB:/etc/ssl/xy-ali-all/
    scp -r /etc/ssl/xy-ali-all/* XY3M:/etc/ssl/xy-ali-all/
    scp -r /etc/ssl/xy-ali-all/* XY5M:/etc/ssl/xy-ali-all/

    ssh C141WEB 'service nginx reload'
    ssh XY3M 'service nginx reload'
    ssh XY5M 'service nginx reload'
    gesse
        23
    gesse  
       63 天前
    ```
    export MYDOMAIN=<YOUR DOMAIN>

    # 生成证书

    mkdir /etc/ssl/$MYDOMAIN

    cat <<EOF > /etc/ssl/$MYDOMAIN/reloadcmd.sh
    #!/bin/bash
    nginx -s reload
    EOF
    chmod +x reloadcmd.sh

    acme.sh --install-cert -d $MYDOMAIN \
    --cert-file /etc/ssl/$MYDOMAIN/cert.pem \
    --fullchain-file /etc/ssl/$MYDOMAIN/fullchain.pem \
    --key-file /etc/ssl/$MYDOMAIN/privkey.pem \
    --ca-file /etc/ssl/$MYDOMAIN/chain.pem \
    --reloadcmd /etc/ssl/$MYDOMAIN/reloadcmd.sh

    ```

    这个时候证书必要文件+reload 文件都在`/etc/ssl/$MYDOMAIN`目录下,需要 reload 什么软件、给哪个软件重新加载配置直接修改里面的 reloadcmd.sh 文件就行
    gesse
        24
    gesse  
       63 天前
    看前面以为 OP 用的 acme.sh ,默认给了 acme.sh 配置
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     866 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 20:29 PVG 04:29 LAX 13:29 JFK 16:29
    Do have faith in what you're doing.
    ubao 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