V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
NGINX
NGINX Trac
3rd Party Modules
Security Advisories
CHANGES
OpenResty
ngx_lua
Tengine
在线学习资源
NGINX 开发从入门到精通
NGINX Modules
ngx_echo
fhrui0706
V2EX  ›  NGINX

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

  •  
  •   fhrui0706 · 25 天前 · 2225 次点击

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

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

    --reloadcmd <command> Command to execute after issue/renew to reload the server.
    zdking08135
        3
    zdking08135  
       25 天前
    1. acme.sh install 时会将证书生成到指定目录
    2. acme.sh 会自动刷新
    3. 生成证书后,复制到 nginx 的证书目录下,覆盖掉旧证书
    4. nginx -s reload
    Daybyedream
        4
    Daybyedream  
       25 天前
    配置路径 更新进去新的?然后 -s reload
    dcsuibian
        5
    dcsuibian  
       25 天前
    我用 caddy ,基本就不用担心 HTTPS 证书了
    mohumohu
        6
    mohumohu  
       25 天前
    搞这么复杂干嘛,反正证书一般都是提前续期的,每天定期 systemctl restart 不就好了,跟 relaod 有何区别
    defunct9
        7
    defunct9  
       25 天前 via iPhone
    le go
    dfdd1811
        8
    dfdd1811  
       25 天前
    acme 申请证书,nginx 配置写死证书位置。acme 自动续证书,一般也不管
    gujiwork
        9
    gujiwork  
       25 天前
    我都是用 https://ssl.dnsjia.com ,首次配置好,后续都是自动更新
    sunny2580839896
        10
    sunny2580839896  
       25 天前
    docker acme 不能运行的时候生成证书,必须要运行后再进入容器使用命令生成
    Foxkeh
        11
    Foxkeh  
       25 天前
    @defunct9 老哥,您这几个字母意思是不是让 OP 把 SSH 密码发给您看看?
    defunct9
        12
    defunct9  
       25 天前
    哦哦,真不是。现在更新证书我只用 lego ,连宝塔的证书更新我都用 lego 了
    PerFectTime
        13
    PerFectTime  
       25 天前
    @Foxkeh #11 这么大恶意? 你不懂就去搜,在这讥讽什么呢? https://github.com/go-acme/lego
    Foxkeh
        14
    Foxkeh  
       25 天前
    @PerFectTime 没有恶意哈哈,上面的大哥很久没说他的口头禅了
    YummyCocoa
        15
    YummyCocoa  
       25 天前
    看看这个 acme.sh 的视频使用教程满不满足需要: https://www.bilibili.com/video/BV1kxNAenEfm/
    defunct9
        16
    defunct9  
       25 天前
    哈哈,开 ssh ,让我上去 lego
    skiy
        17
    skiy  
       25 天前 via iPhone
    @sunny2580839896 外部 exec 就行了,就是无法刷新 nginx 。不过我自己写命令行监听 ssl 目录,当有更新时,再刷新 nginx 。
    FrankFang128
        18
    FrankFang128  
       25 天前
    这些教程没有考虑墙的问题,你如果用的是国内云机器,那么你最好使用 dns 来鉴权,阿里云支持命令行来新增 dns 解析,有对应的插件
    jiangzm
        19
    jiangzm  
       25 天前
    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  
       25 天前
    allinssl WEB 界面的,自动更新并部署证书
    kingwrcy
        21
    kingwrcy  
       25 天前
    用这个 https://github.com/certimate-go/certimate 谁用知道 很强大 基本支持了市面上所有用到 ssl 的地方了
    realpg
        22
    realpg  
    PRO
       25 天前
    我有一台专门的证书签发服务器 因为域名太多了(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  
       25 天前
    ```
    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  
       25 天前
    看前面以为 OP 用的 acme.sh ,默认给了 acme.sh 配置
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3035 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 12:46 · PVG 20:46 · LAX 05:46 · JFK 08:46
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.