V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
lyc8503
V2EX  ›  程序员

在两次忘记续期 SSL 证书后, 我写了个阿里云 SSL 证书自动续期程序

  •  
  •   lyc8503 · 2024-09-02 16:13:07 +08:00 · 4223 次点击
    这是一个创建于 365 天前的主题,其中的信息可能已经有所发展或是发生改变。
    阿里云之前把个人免费测试证书的时长从一年改成了三个月, 还把过期前一周的短信通知给取消了. 但是阿里云 CDN/云函数 之类的服务又没法使用 ACME 自动配置新证书.

    手动续期几次之后终于不堪其扰, 写了个程序帮我自动申请新证书, 替换旧证书.

    已经全部开源, 分享一下 https://github.com/lyc8503/AliyunCertRenew

    ---

    /t/1057173https://github.com/certd/certd 的方法不同, 我还是选择申请阿里云自己的 DigiCert 免费证书, 没用 Let's Encrypt 的, 应该也算是各有利弊...
    28 条回复    2025-01-19 14:50:00 +08:00
    x68e93l07gJlfqPK
        1
    x68e93l07gJlfqPK  
       2024-09-02 17:25:09 +08:00
    推荐一个免费的证书监控工具: https://ssl.spug.cc/ ,支持电话、短信、飞书、钉钉、微信提醒
    pota
        2
    pota  
       2024-09-02 17:42:18 +08:00
    我现在是依赖 acme 做的多云支持。不过比较可惜的是只支持了 cdn 的自动部署,服务器的证书更新还没弄
    andforce
        3
    andforce  
       2024-09-02 19:54:30 +08:00 via iPhone
    好好好
    billzhuang
        4
    billzhuang  
       2024-09-02 20:18:31 +08:00
    ssl 监控搞起来
    Jobcrazy
        5
    Jobcrazy  
       2024-09-03 02:10:17 +08:00
    我记得有个帮大家全自动管理各大云厂商证书的网站,好像也是在这里看到的: https://ohttps.com/
    ruidoBlanco
        6
    ruidoBlanco  
       2024-09-03 05:16:19 +08:00
    letsencrypt + traefik/caddy ,从来没出现过这毛病。阿里云也在支持列表。

    https://doc.traefik.io/traefik/https/acme/#providers
    bbis
        7
    bbis  
       2024-09-03 07:38:18 +08:00
    能不能写个腾讯的?
    freaks
        8
    freaks  
       2024-09-03 08:22:51 +08:00 via iPhone
    推荐个 certd
    eryajf
        9
    eryajf  
       2024-09-03 08:29:13 +08:00
    https://www.v2ex.com/t/1069320

    这个项目,与你的需求可以互补。
    1rv013c6aiWPGt24
        10
    1rv013c6aiWPGt24  
       2024-09-03 08:43:02 +08:00 via Android
    我的 DNS 解析在 CF ,压根不用担心
    ala2008
        11
    ala2008  
       2024-09-03 09:44:25 +08:00
    证书是 nginx 目录下的,会自动下载更新?
    hackingwu
        12
    hackingwu  
       2024-09-03 10:13:08 +08:00
    应该还是还得手动下载证书放到 nginx 重启。
    hackingwu
        13
    hackingwu  
       2024-09-03 10:24:57 +08:00
    no resources found for xxxx
    hackingwu
        14
    hackingwu  
       2024-09-03 10:25:48 +08:00
    @hackingwu 免费域名 ( 3 个月有效期)的支持吗
    lyc8503
        15
    lyc8503  
    OP
       2024-09-03 10:39:41 +08:00
    @freaks 看到过这个啦, 但主要是部署比较繁琐, 还要台服务器, 不能直接放在 Actions/云函数上跑

    @UncleCAT4 确实, 我的大多网站也在 CF 十分省心, 只是有些国内的不得不放阿里

    @hackingwu 就是支持的免费域名

    @hackingwu @ala2008 有个小误解: 支持的是阿里云上的"云资源", 比如 CDN. ECS 这类的自有资源可以直接用 ACME, 这个并不能帮你续期你自己服务器上的证书
    lyc8503
        16
    lyc8503  
    OP
       2024-09-03 10:42:09 +08:00
    @bbis 我自己目前不用腾讯云, 暂时不考虑, 不好意思, 你可以看看 Certd
    aiqinxuancai
        17
    aiqinxuancai  
       2024-09-03 11:18:54 +08:00
    我也写了类似的,不过我部署在阿里云函数上自动定时器触发执行的
    lyxxxh2
        18
    lyxxxh2  
       2024-09-03 11:34:17 +08:00
    我也写了。
    宝塔可以自动部署 lets encrypt 。
    但是 oss 和 cdn 得自己写脚本才行。

    用了 ZeroSSL 厂家的,有坑。
    1. 服务器发起 curd 访问不了,除非带上原有证书。
    2. 小程序 wx.previewImage 看不了图片。 (image src 是正常的)
    lyxxxh2
        19
    lyxxxh2  
       2024-09-03 11:35:01 +08:00
    @lyxxxh2
    1. 服务器发起 curl 访问不了,除非带上原有证书。
    byiceb
        20
    byiceb  
       2024-09-03 12:00:31 +08:00
    我用 Lucky 来自动续签
    ala2008
        21
    ala2008  
       364 天前
    @lyc8503 那我理解了,cdn 这些证书是需申请然后阿里云配置一下,我之前还建议阿里云可以弄一个自动化呢
    zgsi
        22
    zgsi  
       364 天前
    大佬,支持自动部署到阿里云的视频点播吗?或者其他云产品 oss ,cdn
    fenglingyu
        23
    fenglingyu  
       364 天前
    试运行出现了错误,大佬,这个是什么原因的错误
    AliyunCertRenew version 71cae54
    time="2024-09-03T06:57:44Z" level=info msg="AliyunCertRenew starting..."
    time="2024-09-03T06:57:44Z" level=info msg="Domains to check: [***]"
    time="2024-09-03T06:57:44Z" level=info msg=">>> Checking ***"
    panic: runtime error: invalid memory address or nil pointer dereference
    [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x73c6a6]

    goroutine 1 [running]:
    main.GetBasicInfo(0xc00013a300, {0xc000032067, 0x11})
    /home/runner/work/AliyunCertRenew/AliyunCertRenew/main.go:61 +0x386
    main.main()
    /home/runner/work/AliyunCertRenew/AliyunCertRenew/main.go:248 +0x2df
    Error: Process completed with exit code 2.
    liuliancao
        24
    liuliancao  
       364 天前
    最近也写了一个 思路大概就是用 lego 去生成,写一个轮询程序去轮询,然后可以配置自动部署的参数( ssh, 小助手,slb ),最后部署
    lyc8503
        25
    lyc8503  
    OP
       364 天前
    @zgsi 云产品应该都是可以的

    @fenglingyu 草 怎么 SIGSEGV 了, 一下可能排查不清楚, 你开个 issue 吧

    @liuliancao 我这个也算是自己写的小脚本, 逐渐完善后开源了, 没找到现成开源有文档的... 看来大家都在造自己的轮子😂
    yangxj96
        26
    yangxj96  
       363 天前
    腾讯云的 https://github.com/yangxj96/TencentCertRenew 写了一个,证书还没到期,有大佬拿去试试么
    liuliancao
        27
    liuliancao  
       363 天前
    @lyc8503 你写的挺好的
    avenger
        28
    avenger  
       226 天前
    谢谢 lz ,用上了
    关于   ·   帮助文档   ·   自助推广系统   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3379 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 04:53 · PVG 12:53 · LAX 21:53 · JFK 00:53
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.