SSL 证书管理 #
什么是 SSL? #
SSL(Secure Sockets Layer)是一种安全协议,用于在网络上建立加密连接。
text
HTTP → 明文传输,不安全
HTTPS → 加密传输,安全
HTTPS 的好处 #
| 好处 | 说明 |
|---|---|
| 数据加密 | 防止数据被窃取 |
| 身份验证 | 确认网站身份 |
| 数据完整性 | 防止数据被篡改 |
| SEO 优化 | 搜索引擎优先收录 |
| 浏览器信任 | 显示安全锁图标 |
Netlify SSL 证书 #
自动 SSL #
Netlify 为所有域名自动提供免费 SSL 证书:
text
特点:
• 免费
• 自动配置
• 自动续期
• 支持 Let's Encrypt
SSL 证书类型 #
| 类型 | 说明 |
|---|---|
| Let’s Encrypt | 免费,自动管理 |
| 自定义证书 | 付费证书,手动上传 |
启用 HTTPS #
自动启用 #
添加自定义域名后,Netlify 会自动配置 SSL 证书:
text
添加域名 → DNS 验证 → 自动申请证书 → 启用 HTTPS
手动启用 #
text
Site settings → Domain management → HTTPS → Verify DNS configuration
启用状态 #
| 状态 | 说明 |
|---|---|
| ⏳ Provisioning | 正在申请证书 |
| ✅ Active | 证书已生效 |
| ❌ Error | 证书申请失败 |
证书申请流程 #
text
┌──────────────┐
│ 添加域名 │
└──────┬───────┘
│
▼
┌──────────────┐
│ DNS 验证 │
└──────┬───────┘
│
▼
┌──────────────┐
│ 申请证书 │
│ (Let's Encrypt)│
└──────┬───────┘
│
▼
┌──────────────┐
│ 证书生效 │
└──────────────┘
证书申请时间 #
| 情况 | 时间 |
|---|---|
| Netlify DNS | 几分钟 |
| 外部 DNS | 几分钟到几小时 |
强制 HTTPS #
启用强制 HTTPS #
text
Site settings → Domain management → HTTPS → Force HTTPS → Enable
效果 #
所有 HTTP 请求自动重定向到 HTTPS:
text
http://example.com → https://example.com
配置文件方式 #
toml
# netlify.toml
[[redirects]]
from = "http://example.com/*"
to = "https://example.com/:splat"
status = 301
force = true
证书续期 #
自动续期 #
Netlify 自动管理证书续期:
text
证书有效期:90天
自动续期时间:到期前30天
续期条件 #
证书自动续期需要:
- DNS 配置正确
- 域名解析正常
- 站点未暂停
检查续期状态 #
text
Site settings → Domain management → HTTPS → Certificate details
自定义证书 #
上传自定义证书 #
适用于已有付费 SSL 证书的情况:
text
Site settings → Domain management → HTTPS → Add custom certificate
需要的文件 #
| 文件 | 说明 |
|---|---|
| 证书文件 | .crt 或 .pem |
| 私钥文件 | .key 或 .pem |
| 中间证书 | CA 证书链 |
上传步骤 #
- 准备证书文件
- 进入 HTTPS 设置
- 点击 “Add custom certificate”
- 上传证书和私钥
- 保存
证书格式 #
PEM 格式:
text
-----BEGIN CERTIFICATE-----
MIIF...
-----END CERTIFICATE-----
私钥格式:
text
-----BEGIN PRIVATE KEY-----
MIIE...
-----END PRIVATE KEY-----
证书验证 #
验证方式 #
Let’s Encrypt 使用 ACME 协议验证域名:
| 方式 | 说明 |
|---|---|
| HTTP-01 | 通过 HTTP 文件验证 |
| DNS-01 | 通过 DNS TXT 记录验证 |
Netlify 自动处理验证过程。
验证文件位置 #
text
/.well-known/acme-challenge/TOKEN
TLS 版本 #
支持的 TLS 版本 #
| 版本 | 状态 |
|---|---|
| TLS 1.0 | 已弃用 |
| TLS 1.1 | 已弃用 |
| TLS 1.2 | 支持 |
| TLS 1.3 | 支持(推荐) |
TLS 配置 #
Netlify 默认使用现代 TLS 配置:
- TLS 1.2+
- 强加密套件
- HSTS 支持
HSTS #
什么是 HSTS? #
HSTS(HTTP Strict Transport Security)强制浏览器使用 HTTPS。
启用 HSTS #
text
Site settings → Domain management → HTTPS → HSTS → Enable
HSTS 配置 #
toml
# netlify.toml
[[headers]]
for = "/*"
[headers.values]
Strict-Transport-Security = "max-age=31536000; includeSubDomains; preload"
HSTS 预加载 #
将域名添加到浏览器预加载列表:
text
1. 启用 HSTS
2. 访问 https://hstspreload.org/
3. 提交域名
证书故障排查 #
问题1:证书申请失败 #
可能原因:
- DNS 配置错误
- 域名解析未生效
- 防火墙阻止验证
解决方法:
bash
# 检查 DNS
dig example.com
# 检查验证文件
curl http://example.com/.well-known/acme-challenge/test
问题2:证书不受信任 #
可能原因:
- 证书过期
- 证书域名不匹配
- 中间证书缺失
解决方法:
- 检查证书有效期
- 确认证书域名
- 上传完整的证书链
问题3:混合内容警告 #
症状: 浏览器显示"不安全"警告
原因: HTTPS 页面加载 HTTP 资源
解决方法:
html
<!-- 错误 -->
<img src="http://example.com/image.jpg">
<!-- 正确 -->
<img src="https://example.com/image.jpg">
<!-- 或使用相对协议 -->
<img src="//example.com/image.jpg">
问题4:证书续期失败 #
可能原因:
- DNS 配置变更
- 域名解析问题
- Let’s Encrypt 限制
解决方法:
- 检查 DNS 配置
- 验证域名解析
- 联系 Netlify 支持
SSL 检测工具 #
在线工具 #
命令行检测 #
bash
# 检查证书信息
openssl s_client -connect example.com:443 -servername example.com
# 检查证书有效期
echo | openssl s_client -connect example.com:443 2>/dev/null | openssl x509 -noout -dates
最佳实践 #
1. 始终启用 HTTPS #
所有站点都应该使用 HTTPS。
2. 启用强制 HTTPS #
防止用户访问 HTTP 版本。
3. 启用 HSTS #
增强安全性。
4. 定期检查证书状态 #
确保证书有效。
5. 使用现代 TLS #
TLS 1.2 或更高版本。
CLI 操作 #
检查证书状态 #
bash
netlify status
域名相关命令 #
bash
# 列出域名
netlify domains:list
# 查看域名信息
netlify domains:info example.com
下一步 #
SSL 配置完成后,继续学习 表单处理 了解 Netlify 的表单功能!
最后更新:2026-03-28