V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
g0python32
V2EX  ›  程序员

关于 acme.sh 申请的免费证书, renew 的问题

  •  
  •   g0python32 · 9 天前 · 1540 次点击

    是这样子的, 我们小公司, 目前域名的证书都是用 acme.sh 申请的, 三个月有效期那种.

    然后现在的模式是这样子, 项目是使用 rancher 部署, 然后 ssl 证书用服务器生成手动更新到 rancher 的证书列表中.

    但现在手动在服务器 --force renew 证书, 证书到期貌似不会更新, 是还需要 install-cert 一遍再手动更新到 rancher 的证书列表中吗

    个人对这个不是很了解, 自己的域名都是在自己的服务器上面, 没有这个担忧, 之前公司域名的证书都是用阿里云的免费的, 但是现在二级域名多了, 阿里云的免费额度不够了, 所以就用了 acme.sh

    19 条回复    2024-04-26 10:33:10 +08:00
    zapan
        1
    zapan  
       9 天前   ❤️ 1
    totoro625
        2
    totoro625  
       9 天前   ❤️ 1
    感觉是 rancher 的问题
    手动在服务器 --force renew 证书后检查证书文件是否更新,挨个环节检查
    photon006
        3
    photon006  
       9 天前   ❤️ 1
    acme 默认就会自动更新

    检查定时任务: crontab -l
    vate32
        4
    vate32  
       9 天前   ❤️ 1
    写个小脚本,先 renew ,然后 install ,最后强制重启 nginx (-s reload 不行)
    g0python32
        5
    g0python32  
    OP
       9 天前
    @zapan 感谢, 先看看这个工具的文档
    g0python32
        6
    g0python32  
    OP
       9 天前
    @totoro625 我也不是很清楚, 个人域名的 acme 的 force renew 不会有这个问题的, 自动更新全靠 crontab 证书也一直没过期; 但是公司的域名配合 rancher 使用就是三个月要手动替换一次 pem 和 key
    g0python32
        7
    g0python32  
    OP
       9 天前
    @photon006 crontab 是有的. 但是手动 acme.sh --renew --force 之后再 install-cert, rancher 那边显示的时间还是旧的时间.
    v2ruiex
        8
    v2ruiex  
       9 天前   ❤️ 1
    端口也不能被占用,把 nginx 先关了再试试
    g0python32
        9
    g0python32  
    OP
       9 天前
    @vate32 rancher 代替了 nginx 的作用了, 和这个没有关系的, renew 和 install 都执行了一遍, 证书过期时间还是旧的
    totoro625
        10
    totoro625  
       9 天前
    @g0python32 #9 rancher 重启一下也不会更新吗,对应的是 nginx -s reload
    g0python32
        11
    g0python32  
    OP
       8 天前
    @v2ruiex 和这个没有关系.

    @totoro625 刚对比了之前的 pem 和 renew 之后的 pem, 不一致的, 所以只能手动更新了
    totoro625
        12
    totoro625  
       8 天前   ❤️ 1
    @g0python32 #11 应该是证书文件更新了,但是 rancher 还是读取的自己缓存的证书,crontab 更新完证书再加一条让 rancher 重启一下就好了
    yellowsky
        13
    yellowsky  
       8 天前   ❤️ 1
    直接装 certbot ,自动 renew
    lovelylain
        14
    lovelylain  
       8 天前 via Android   ❤️ 1
    自己写个生效脚本,reload_cmd 指定,crontab 刷新后会自动 reload
    JensenQian
        15
    JensenQian  
       8 天前 via Android   ❤️ 1
    30 块钱买个一年 alpha ssl 的通配符
    就是来源可能不太正规,有概率翻(不过没怎么见到过)
    mgso
        16
    mgso  
       8 天前   ❤️ 1
    检查一下是不是 ecc 的问题,之前一直用的好好的,突然有个版本更新后脚本自己执行了 install, 但是用的依旧是旧的过期的证书。且整个 renew 过程都是正常的

    找了一圈发现它新生成的证书后面带了一个_ecc 。也就是说我本来应该是证书是 xxx.com 但 renew 后是 xxx.com_ecc ,

    我的解决方案是 --installcert --ecc 添加一个-ecc 。让脚本安装 ecc 的版本证书

    OP 可看看是不是同一个问题
    zed1018
        17
    zed1018  
       8 天前   ❤️ 1
    @g0python32 #5 如果 OP 打算用 cert-manager 的话,我建议直接 dns01 ,用 https://github.com/DEVmachine-fr/cert-manager-alidns-webhook 这个三方的 webhook 走阿里云解析自动验证域名。http01 虽然可以少配置,但是国内你懂的,letsencrypt 的服务器验证很难保证稳定过。
    kennylam777
        18
    kennylam777  
       8 天前   ❤️ 1
    cert-manager +1

    我記得 rancher 現在是 k8s 的吧, 你還要考慮的是 ingress 能不能直接跟據 k8s secret 的 public cert 更新而自動載入, Ingress-NGINX Controller for Kubernetes 是可以的

    nginx -s reload 是有缺點的, 畢竟你的證書一直增加上去, 就要經常 reload

    在 Ingress-NGINX Controller for Kubernetes 就直接用 Lua 動態載入來解決。

    k8s 的問題, 還是用 k8s 的方式解決吧。
    g0python32
        19
    g0python32  
    OP
       8 天前
    @kennylam777 #18 rancher 好像是阉割版的 k8s, k3s, 功能没有那么多. 实在不行就用 rancher api 更新吧😂
    @zed1018 #17 好的 感谢, 目前来说还是先手动更新, 这些新的东西也不敢这么快就应用到生产环境
    @mgso #16 应该和 ecc 没关系, 应该生成证书的机器和部署 rancher 的机器是分开的, 因为考虑到 gfw 的问题, 生成证书的机器在海外, rancher 在境内.
    @JensenQian #15 哈哈, 公司业务还是优先考虑稳定, acme.sh 的免费证书虽然 90 天要 renew 一下, 但是稳定
    @lovelylain #14 参考回复 #16 的, 应该和 reload 没关系
    @yellowsky #13 acme.sh 也有 renew, 主要是生成证书和 racnher 不是同一台机器
    @totoro625 #12 证书文件更新了, rancher 不能随便重启, 加上 rancher 和生成证书的服务器不在同一个服务器上面
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   2439 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 76ms · UTC 08:13 · PVG 16:13 · LAX 01:13 · JFK 04:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.