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

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

  •  
  •   lyc8503 · 17 天前 · 2804 次点击
    阿里云之前把个人免费测试证书的时长从一年改成了三个月, 还把过期前一周的短信通知给取消了. 但是阿里云 CDN/云函数 之类的服务又没法使用 ACME 自动配置新证书.

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

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

    ---

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

    https://doc.traefik.io/traefik/https/acme/#providers
    bbis
        7
    bbis  
       16 天前
    能不能写个腾讯的?
    freaks
        8
    freaks  
       16 天前 via iPhone
    推荐个 certd
    eryajf
        9
    eryajf  
       16 天前
    https://www.fyfyfm.apispeedy.workers.dev/t/1069320

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

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

    @hackingwu 就是支持的免费域名

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

    用了 ZeroSSL 厂家的,有坑。
    1. 服务器发起 curd 访问不了,除非带上原有证书。
    2. 小程序 wx.previewImage 看不了图片。 (image src 是正常的)
    lyxxxh2
        19
    lyxxxh2  
       16 天前
    @lyxxxh2
    1. 服务器发起 curl 访问不了,除非带上原有证书。
    byiceb
        20
    byiceb  
       16 天前
    我用 Lucky 来自动续签
    ala2008
        21
    ala2008  
       16 天前
    @lyc8503 那我理解了,cdn 这些证书是需申请然后阿里云配置一下,我之前还建议阿里云可以弄一个自动化呢
    zgsi
        22
    zgsi  
       16 天前
    大佬,支持自动部署到阿里云的视频点播吗?或者其他云产品 oss ,cdn
    fenglingyu
        23
    fenglingyu  
       16 天前
    试运行出现了错误,大佬,这个是什么原因的错误
    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  
       16 天前
    最近也写了一个 思路大概就是用 lego 去生成,写一个轮询程序去轮询,然后可以配置自动部署的参数( ssh, 小助手,slb ),最后部署
    lyc8503
        25
    lyc8503  
    OP
       16 天前
    @zgsi 云产品应该都是可以的

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

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