微信截圖_17532492431863.png)
2025年上班族AI副業(yè)指南:下班后賺錢輕松月入過萬
2025-06-02 03:27(對,又是凌晨),監(jiān)控群里突然蹦出一條 Prometheus 告警:
probe_ssl_earliest_cert_expiry{job="blackbox-https"} < 86400
配圖是一片血紅。我揉揉眼睛,以為只是 Let’s Encrypt 提前 30 天續(xù)期的例行提醒,結(jié)果下一秒同事甩來截圖:
客戶域名
*.mall.example.com
泛域名證書全部失效,Chrome 直接大紅鎖,iOS Safari 直接彈「此連接不受信任」。
那一刻,我聽見了自己心跳的聲音——比 Traefik 的 404 頁面還響。
時間 | 事件 | 當(dāng)時心態(tài) |
---|---|---|
2025-03-04 10:00 | 用 Traefik 3.2 起新集群,順手配了 Let’s Encrypt 泛域名證書,覺得“90 天后再說” | 穩(wěn)如老狗 |
2025-05-30 22:00 | 證書還剩 5 天,Traefik 日志出現(xiàn) rate limit 關(guān)鍵字,當(dāng)時以為是常規(guī)抖動 |
佛系 |
2025-06-02 03:27 | 證書集體過期,Prometheus 爆炸,用戶瘋狂 @ 運維 | 原地升天 |
Let’s Encrypt 的泛域名驗證要求 兩條 TXT 記錄同名不同值:
_acme-challenge.mall.example.com → TXT1
_acme-challenge.mall.example.com → TXT2
而公司 DNS 托管在阿里云,API 有 60 秒緩存,我們腳本把第一條記錄沖掉了,于是驗證失敗率 100%。
特性 | Let’s Encrypt | ZeroSSL | 備注 |
---|---|---|---|
泛域名免費額度 | 無限制 | 3 個/免費 | 對我們夠用了 |
ACME 速率限制 | 5 次/周 | 300 次/天 | 直接碾壓 |
根證書兼容性 | ISRG X1 | AAA Certificate Services | 老 Android 6 都信 |
官方文檔只寫了 多 CA 并行申請,但沒告訴你誰先成功誰上崗。我們只用一條 Docker label 就完成切換:
services:
traefik:
image: traefik:v3.2
labels:
# 1. 保持 LE 作為主 CA
- traefik.http.routers.web.tls.certresolver=le
# 2. 把 ZeroSSL 作為備用,失敗自動切換
- traefik.http.routers.web.tls.certresolver=le,zerossl
# 3. ZeroSSL 的 ACME 服務(wù)器和 EAB
- traefik.certificatesresolvers.zerossl.acme.email=ops@example.com
- traefik.certificatesresolvers.zerossl.acme.storage=/acme/zerossl.json
- traefik.certificatesresolvers.zerossl.acme.caServer=https://acme.zerossl.com/v2/DV90
- traefik.certificatesresolvers.zerossl.acme.eab.kid=${Z_SSL_KID}
- traefik.certificatesresolvers.zerossl.acme.eab.hmacEncoded=${Z_SSL_HMAC}
/acme/zerossl.json
; #!/bin/bash
# cron: 0 3 */15 * * /opt/scripts/renew.sh
for resolver in le zerossl; do
docker exec traefik \
traefik acme renew $resolver
done
- module: http_2xx
prober: https
timeout: 5s
tls_config:
server_name: "*.mall.example.com"
- alert: SSLCertExpiry
expr: probe_ssl_earliest_cert_expiry - time() < 86400 * 7
for: 1m
annotations:
summary: "證書 7 天內(nèi)到期"
用阿里云 SDK + Traefik 的 delayBeforeCheck = 120s
,確保 TXT 記錄寫入后等待緩存失效再驗證。
docker run --rm -it \
-v $PWD:/out \
-e Z_EMAIL=ops@example.com \
ghcr.io/acmesh-official/acme.sh \
--register-account --server zerossl --eab-kid YOUR_KID --eab-hmac-key YOUR_HMAC
“免費的,才是最貴的?!?
當(dāng)你下次看到 Let’s Encrypt 的「90 days」小字時,請記住這篇文章——
以及那一杯凌晨 3 點的冰美式。