---
name: yangge521/ssl-manager
source: https://app.decimal.ai/s/yangge521-ssl-manager@1/SKILL.md
source_sha256: 0d8ef2f1f065
---

# SSL/TLS 证书管理

## 概述

提供 SSL/TLS 证书的申请、配置、自动续期完整方案，基于 Let's Encrypt 免费证书。

## 使用场景

- 网站 HTTPS：为 Web 服务配置 SSL 证书
- API HTTPS：推理 API 服务加密传输
- 流媒体安全：RTMPS/HLS 加密推流
- 多域名管理：一个证书覆盖多个域名
- 通配符证书：*.example.com 覆盖所有子域
- 证书自动续期：无人值守自动更新

## 操作指南

### 1. Certbot 安装

Ubuntu: apt install certbot python3-certbot-nginx。CentOS: yum install certbot。Docker: certbot/certbot 镜像。

### 2. 申请证书

四种方式：Nginx 插件（自动配置）、Webroot、Standalone（需停 Nginx）、通配符（DNS 验证）。

### 3. Nginx SSL 配置

配置 listen 443 ssl http2，指定证书路径。启用 TLSv1.2/1.3，ssl_session_cache。添加 HSTS 头。HTTP 301 重定向 HTTPS。

### 4. 自动续期

certbot renew --dry-run 测试。crontab 每天凌晨3点执行 certbot renew --quiet --post-hook 'systemctl reload nginx'。也可用 systemd timer。

### 5. 证书管理命令

certbot certificates 查看所有证书，certbot delete 删除，openssl x509 查看详情，openssl s_client 检查过期时间。

## 常见问题与排查

| 问题 | 原因 | 解决方案 |
|------|------|---------|
| 证书申请失败 | 80 端口未放行 | 检查防火墙/安全组 |
| 续期失败 | Nginx 未重载 | 检查 post-hook 命令 |
| 证书过期 | 自动续期未配置 | 设置 crontab/systemd timer |
| 通配符验证失败 | DNS 解析延迟 | 等待 DNS 传播后重试 |
| 浏览器不信任 | 证书链不完整 | 使用 fullchain.pem |
| 混合内容警告 | 资源用 HTTP | 全站 HTTPS |

## 扩展方向

- **ACME 自动化**: 使用 acme.sh 替代 certbot
- **私有 CA**: 搭建内部 CA 签发证书
- **证书透明度**: CT log 监控证书签发
- **多证书轮换**: 零停机证书更新
- **mTLS 双向认证**: 客户端证书认证
- **证书监控**: Prometheus 监控证书过期

## 技能链路

- **nginx-config**: Nginx SSL 配置
- **cloud-deploy-cn**: 云服务器证书部署
- **ci-cd-cn**: CI/CD 中自动证书管理
- **docker-deploy**: 容器化证书管理

## 检查清单

- [ ] 证书申请成功
- [ ] Nginx SSL 配置正确
- [ ] HTTP 自动重定向 HTTPS
- [ ] 自动续期已配置
- [ ] HSTS 头已添加
- [ ] SSL Labs 评级 A 以上