跳到主要内容

SSL/TLS 配置

SSL/TLS 是网站安全的基础,为数据传输提供加密保护。Cloudflare 提供免费的 SSL 证书,支持多种加密模式,让网站轻松实现 HTTPS。

SSL/TLS 基础知识

什么是 SSL/TLS?

SSL(Secure Sockets Layer)和 TLS(Transport Layer Security)是加密协议,用于在网络上安全传输数据。TLS 是 SSL 的升级版本,目前广泛使用的是 TLS 1.2 和 TLS 1.3。

HTTPS 的工作原理

HTTPS 在 HTTP 和 TCP 之间添加了 TLS 层:

应用层    HTTP

安全层 TLS/SSL(加密/解密)

传输层 TCP

网络层 IP

HTTPS 提供的保护

  • 加密:数据传输过程中被加密,防止窃听
  • 认证:验证服务器身份,防止中间人攻击
  • 完整性:确保数据在传输过程中不被篡改

Cloudflare SSL 的优势

免费证书:Cloudflare 提供免费的 SSL 证书,无需购买。

自动管理:证书自动签发、续期,无需手动维护。

通用证书:一张证书覆盖所有子域名。

多种模式:支持不同的加密模式,适应各种场景。

加密模式详解

Cloudflare 提供四种 SSL 加密模式,在 "SSL/TLS" → "Overview" 中配置:

Flexible(灵活模式)

用户 ────HTTPS────▶ Cloudflare ────HTTP────▶ 源服务器

特点

  • 用户到 Cloudflare:HTTPS 加密
  • Cloudflare 到源服务器:HTTP 明文

适用场景

  • 源服务器没有 SSL 证书
  • 快速启用 HTTPS
  • 测试环境

安全风险:Cloudflare 到源服务器的连接不加密,存在被窃听的风险。

Full(完全模式)

用户 ────HTTPS────▶ Cloudflare ────HTTPS────▶ 源服务器

特点

  • 用户到 Cloudflare:HTTPS 加密
  • Cloudflare 到源服务器:HTTPS 加密
  • 不验证源服务器证书

适用场景

  • 源服务器有自签名证书
  • 源服务器证书过期或无效
  • 内部测试环境

安全风险:不验证证书,可能存在中间人攻击风险。

Full (Strict)(完全严格模式)

用户 ────HTTPS────▶ Cloudflare ────HTTPS────▶ 源服务器
验证有效证书

特点

  • 用户到 Cloudflare:HTTPS 加密
  • Cloudflare 到源服务器:HTTPS 加密
  • 验证源服务器证书有效性

适用场景

  • 生产环境(推荐)
  • 源服务器有有效证书

安全优势:最安全的模式,提供端到端加密和证书验证。

Strict(严格模式)

与 Full (Strict) 类似,但要求所有请求都使用 HTTPS。

推荐配置

场景一:源服务器无证书

使用 Flexible 模式,快速启用 HTTPS。

配置步骤

  1. 进入 "SSL/TLS" → "Overview"
  2. 选择 "Flexible"
  3. 等待几分钟生效

后续优化:建议为源服务器配置证书,然后升级到 Full (Strict)。

场景二:源服务器有自签名证书

使用 Full 模式。

配置步骤

  1. 确保源服务器配置了 SSL 证书(可以是自签名)
  2. 在 Cloudflare 选择 "Full" 模式

场景三:源服务器有有效证书(推荐)

使用 Full (Strict) 模式。

配置步骤

  1. 确保源服务器有有效的 SSL 证书(Let's Encrypt、DigiCert 等)
  2. 在 Cloudflare 选择 "Full (Strict)" 模式

始终使用 HTTPS

启用后,所有 HTTP 请求都会被重定向到 HTTPS:

SSL/TLS → Edge Certificates → Always Use HTTPS

效果

  • 用户访问 http://example.com 自动跳转到 https://example.com
  • 提升安全性,防止降级攻击

建议:始终开启此功能。

HSTS 配置

HSTS(HTTP Strict Transport Security)告诉浏览器始终使用 HTTPS 访问网站:

SSL/TLS → Edge Certificates → HTTP Strict Transport Security (HSTS)

HSTS 设置项

设置项说明推荐值
Max-AgeHSTS 有效期6 个月
Include Subdomains包含子域名开启
Preload预加载到浏览器开启
No-Sniff禁止 MIME 类型嗅探开启

注意:开启 HSTS 前确保网站完全支持 HTTPS,否则可能导致部分页面无法访问。

HSTS 预加载

开启 Preload 后,网站会被添加到浏览器的 HSTS 预加载列表:

  1. 在 Cloudflare 启用 HSTS 和 Preload
  2. 访问 hstspreload.org
  3. 提交你的域名

效果:即使用户从未访问过你的网站,浏览器也会强制使用 HTTPS。

证书类型

Universal SSL(通用证书)

Cloudflare 自动为你的域名签发免费证书:

  • 覆盖根域名和所有子域名
  • 自动续期
  • 免费使用

证书颁发机构:Let's Encrypt、DigiCert 等。

Custom SSL Certificate(自定义证书)

付费计划可以使用自定义证书:

  1. 上传自己的证书和私钥
  2. 支持扩展验证(EV)证书
  3. 支持通配符证书

TLS 版本配置

推荐设置

SSL/TLS → Edge Certificates → Minimum TLS Version

推荐:TLS 1.2 或 TLS 1.3

TLS 1.3

TLS 1.3 是最新版本,提供更好的性能和安全性:

SSL/TLS → Edge Certificates → TLS 1.3

优势

  • 更快的握手(1-RTT)
  • 更强的加密算法
  • 移除不安全的特性

建议:开启 TLS 1.3。

禁用旧版本

建议禁用 TLS 1.0 和 TLS 1.1,这些版本存在安全漏洞:

SSL/TLS → Edge Certificates → Minimum TLS Version
选择 TLS 1.2

加密套件配置

推荐加密套件

Cloudflare 默认使用安全的加密套件:

SSL/TLS → Edge Certificates → Cipher Suites

推荐设置

  • 优先使用 AEAD 加密(AES-GCM、ChaCha20-Poly1305)
  • 使用 ECDHE 密钥交换(前向保密)
  • 禁用弱加密套件(RC4、DES、3DES)

证书透明度

Certificate Transparency(CT)是证书透明度机制,防止恶意证书签发:

SSL/TLS → Edge Certificates → Certificate Transparency Monitoring

开启后,Cloudflare 会监控证书透明度日志,发现异常证书时通知你。

源服务器证书配置

使用 Let's Encrypt

在源服务器安装 Let's Encrypt 证书:

# 安装 Certbot
sudo apt install certbot

# 获取证书(Nginx)
sudo certbot --nginx -d example.com -d www.example.com

# 获取证书(Apache)
sudo certbot --apache -d example.com -d www.example.com

# 自动续期
sudo certbot renew --dry-run

使用 Cloudflare Origin Certificate

Cloudflare 提供源服务器证书,专门用于 Cloudflare 到源服务器的连接:

  1. 进入 "SSL/TLS" → "Origin Server"
  2. 点击 "Create Certificate"
  3. 选择有效期和主机名
  4. 下载证书和私钥
  5. 在源服务器配置证书

Nginx 配置示例

server {
listen 443 ssl;
server_name example.com;

ssl_certificate /etc/ssl/cloudflare-origin.pem;
ssl_certificate_key /etc/ssl/cloudflare-origin-key.pem;

# ... 其他配置
}

注意:Origin Certificate 仅在 Cloudflare 代理时有效,直接访问会显示证书错误。

Authenticated Origin Pulls

验证 Cloudflare 到源服务器的请求,防止绕过 Cloudflare 直接访问源服务器:

SSL/TLS → Origin Server → Authenticated Origin Pulls

配置步骤

  1. 在 Cloudflare 启用 Authenticated Origin Pulls
  2. 下载 Cloudflare 证书
  3. 在源服务器配置客户端证书验证

Nginx 配置示例

server {
listen 443 ssl;
server_name example.com;

ssl_client_certificate /etc/ssl/cloudflare-origin-pull-ca.pem;
ssl_verify_client on;

# ... 其他配置
}

常见问题

为什么显示证书错误?

可能原因:

  1. SSL 模式设置错误(源服务器无证书但选择了 Full Strict)
  2. 证书未生效(需要等待几分钟)
  3. 混合内容(页面包含 HTTP 资源)

为什么有些资源显示不安全?

检查混合内容问题:

  1. 页面使用 HTTPS,但引用了 HTTP 资源
  2. 使用浏览器开发者工具查看具体资源
  3. 将所有资源链接改为 HTTPS

如何强制所有子域名使用 HTTPS?

  1. 启用 Always Use HTTPS
  2. 启用 HSTS 并包含子域名
  3. 在 DNS 中确保所有子域名开启代理

参考链接

下一步

完成 SSL/TLS 配置后,接下来学习 WAF 防火墙,了解如何保护网站免受攻击。