Appearance
前言
典型现象与影响
- 浏览器报错:(例如
NET::ERR_CERT_DATE_INVALID、连接不安全等,按实际截图补充) - 客户端/SDK:(例如 curl、移动端、内网服务互相调用时的表现)
- 业务影响:(用户无法访问、Webhook 失败、健康检查误报等)
如何确认「已过期 / 即将过期」
在线或本机快速查看
bash
# 查看证书有效期(将 example.com 换成你的域名)
echo | openssl s_client -servername example.com -connect example.com:443 2>/dev/null \
| openssl x509 -noout -dates -subject -issuer(可补充:浏览器「证书详情」、云平台证书控制台、监控告警里的字段说明。)
需要核对的信息
- 域名与 SAN 是否覆盖当前访问名
- 颁发者(自签 / 商业 CA / Let's Encrypt 等)
- Not Before / Not After 与服务器时区、NTP 是否一致
根因归类(便于选对续期方式)
| 情况 | 常见原因 | 处理方向 |
|---|---|---|
| 例:单台 Nginx 静态证书文件 | 文件到期未替换 | 重新签发 → 替换文件 → reload |
| 例:K8s Ingress / 网关 | Secret 未更新或控制器未拉新 | 更新 Secret / 检查控制器日志 |
| 例:云负载均衡 | 控制台证书过期 | 在 CLB/ALB 上绑定新证书 |
| (按需增行) |
续期与替换:操作步骤
按你的实际栈只保留一节写细,其余可删或链到别文。
方案 A:(例如 Let's Encrypt / ACME + certbot)
- (前置条件:80/443、DNS、机器权限)
- (签发或 renew 命令)
- (证书路径、服务 reload 命令)
方案 B:(例如云厂商证书 + 一键部署到 CDN/LB)
- (在控制台申请/上传):重新申请,申请时会生成新的txt,域名解析那里也要同步个性;下载新的证书,放到nginx中指定的目录;要重启nginx;
- (绑定到监听器/域名)
- (传播与缓存:CDN、边缘节点)
方案 C:(例如内网 PKI / 自签)
- (CA 与叶子证书签发流程)
- (信任链安装到客户端或服务)
- (轮换策略)
验证
curl -vI https://你的域名或 openssl 再次查看notAfter- 浏览器隐私模式访问,确认无证书警告
- (若有)灰度节点、多地域、CDN 各做一次抽样
回滚与应急
- 旧证书文件是否仍保留、如何一键切回
- 若新证书链不完整导致部分客户端失败,如何快速换回
预防:监控与自动化
- 到期前 N 天 告警(监控项、阈值、通知渠道)
- 自动续期任务(cron / systemd timer / 云函数)及 失败告警
- 变更记录:谁、何时、换了哪张证、关联哪些入口
附录:本次变更记录(可选)
| 项目 | 内容 |
|---|---|
| 域名 / 入口 | |
| 原到期日 | |
| 新到期日 | |
| 涉及组件 | (Nginx / Ingress / CLB / CDN …) |
| 操作人 / 时间 |
参考
- (官方文档链接)
- (团队内部 runbook 链接)