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 证书链

上传步骤 #

  1. 准备证书文件
  2. 进入 HTTPS 设置
  3. 点击 “Add custom certificate”
  4. 上传证书和私钥
  5. 保存

证书格式 #

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 限制

解决方法:

  1. 检查 DNS 配置
  2. 验证域名解析
  3. 联系 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