
2025年上班族AI副业指南:下班后赚钱轻松月入过万
下文包含大量真实熬夜痕迹、心跳骤停截图、以及一份能在 5 分钟内落地的「LE → ZeroSSL」逃生脚本。阅读前请确认你手边有一杯高浓度咖啡,或者一份随时能跑路的新简历。
2025-06-02 03:27(对,又是凌晨),监控群里突然蹦出一条 Prometheus 告警:
probe_ssl_earliest_cert_expiry{job="blackbox-https"} < 86400
配图是一片血红。我揉揉眼睛,以为只是 Let’s Encrypt 提前 30 天续期的例行提醒,结果下一秒同事甩来截图:
客户域名
*.mall.example.com
泛域名证书全部失效,Chrome 直接大红锁,iOS Safari 直接弹「此连接不受信任」。
那一刻,我听见了自己心跳的声音——比 Traefik 的 404 页面还响。
时间 | 事件 | 当时心态 |
---|---|---|
2025-03-04 10:00 | 用 Traefik 3.2 起新集群,顺手配了 Let’s Encrypt 泛域名证书,觉得“90 天后再说” | 稳如老狗 |
2025-05-30 22:00 | 证书还剩 5 天,Traefik 日志出现 rate limit 关键字,当时以为是常规抖动 |
佛系 |
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 服务器和 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 天内到期"
用阿里云 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
“免费的,才是最贵的。”
当你下次看到 Let’s Encrypt 的「90 days」小字时,请记住这篇文章——
以及那一杯凌晨 3 点的冰美式。