HTTPS 安全最佳实践(一)之SSL/TLS部署
字数 2021 2025-08-29 08:32:00

SSL/TLS 部署最佳实践

1. 证书和私钥管理

1.1 私钥强度

  • 使用 2048位RSA私钥 作为默认选择,提供约112位安全性
  • 如需更高安全性(128位),考虑:
    • 3072位RSA密钥(性能影响较大)
    • 256位ECDSA密钥(现代客户端支持,性能更好)

1.2 私钥保护

  • 在可信计算机上生成私钥,确保足够熵
  • 避免让CA生成私钥
  • 实施严格的访问控制策略:
    • 限制员工访问
    • 密码保护私钥(生产环境中作用有限)
    • 考虑使用HSM(硬件安全模块)保护高敏感密钥
  • 定期更换:
    • 每年更新证书(更频繁更好)
    • 每次更新证书时生成新私钥(除非需要保持相同密钥)

1.3 证书覆盖范围

  • 确保证书覆盖所有可能使用的域名
  • 包括主域名和www前缀(如example.com和www.example.com)
  • 谨慎使用通配符证书(增加密钥暴露风险)

1.4 选择可信CA

评估CA时应考虑:

  • 安全历史记录和响应能力
  • 业务专注度
  • 提供的服务:
    • CRL和OCSP支持
    • 网络可用性和性能
    • 证书类型(DV/EV)
    • 公钥算法支持
  • 管理工具
  • 技术支持质量

1.5 证书获取时间

  • 提前1-3个月获取证书
  • 避免在证书即将到期时才更换

1.6 签名算法

  • 使用SHA256或更强的签名算法
  • 避免SHA1(已不安全)

2. 配置最佳实践

2.1 证书链

  • 部署完整的证书链(服务器证书+所有中间证书)
  • 不完整的链会导致浏览器警告

2.2 协议选择

  • 禁用
    • SSL v2(完全不安全)
    • SSL v3(与HTTP一起使用时存在POODLE攻击)
  • 限制使用
    • TLS v1.0(传统协议,存在BEAST等漏洞)
  • 推荐
    • TLS v1.2(唯一提供现代AEAD加密的版本)
    • TLS v1.1(无已知安全问题)

2.3 密码套件

避免

  • 匿名Diffie-Hellman(ADH)套件
  • NULL密码套件
  • 导出密码套件
  • 弱密码(40/56位)
  • RC4
  • 3DES

推荐套件(按优先级排序):

TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384
TLS_DHE_RSA_WITH_AES_128_CBC_SHA
TLS_DHE_RSA_WITH_AES_256_CBC_SHA
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256

2.4 前向保密(FS)

  • 优先使用ECDHE套件
  • 使用DHE套件作为ECDHE后备
  • 避免RSA密钥交换(除非必要)
  • DHE配置至少2048位(防止Logjam攻击)
  • ECDHE推荐使用secp256r1(P-256)曲线

2.5 密钥交换算法

  • 首选ECDHE(性能更好)
  • 次选DHE(至少2048位)
  • 避免RSA密钥交换

3. 性能优化

3.1 密钥长度平衡

  • RSA密钥:2048位(平衡安全与性能)
  • ECDSA密钥:256位
  • 加密强度:128位足够

3.2 会话恢复

  • 启用会话恢复机制减少加密操作
  • 检查会话恢复功能是否正常工作

3.3 网络优化

  • 使用长连接(keep-alives)
  • 支持HTTP/2
  • 考虑WAN优化和CDN

3.4 缓存策略

  • 将公共资源(如图片)标记为public
  • 敏感内容禁止缓存

3.5 OCSP装订

  • 启用OCSP装订减少TLS握手时间
  • 测试故障条件下的可靠性

3.6 加密加速

  • 使用支持AES硬件加速的CPU
  • 考虑ECDSA密钥提高性能

4. HTTP和应用安全

4.1 全面加密

  • 全站强制HTTPS
  • 避免混合内容(HTTP和HTTPS)
  • 消除协议降级漏洞

4.2 第三方资源

  • 评估第三方服务风险
  • 确保第三方资源通过HTTPS加载
  • 考虑使用子资源完整性(SRI)

4.3 Cookie安全

  • 所有Cookie标记为Secure
  • 考虑添加加密完整性验证
  • 敏感Cookie考虑加密

4.4 HTTP压缩

  • 禁用TLS压缩(防止CRIME攻击)
  • 注意HTTP压缩风险(TIME/BREACH攻击)

4.5 HSTS部署

配置示例:

Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
  • 强制浏览器始终使用HTTPS
  • 禁用点击式证书警告
  • 考虑HSTS预加载

4.6 CSP部署

基础配置示例:

Content-Security-Policy: default-src https: 'unsafe-inline' 'unsafe-eval'; connect-src https: wss:
  • 限制混合内容
  • 控制第三方资源
  • 逐步加强策略

5. 验证与监控

5.1 定期测试

  • 使用SSL/TLS评估工具(如SSL Labs服务器测试)
  • 测试内容包括:
    • 协议支持
    • 密码套件配置
    • 证书有效性
    • 安全头部署

5.2 高级主题

5.2.1 HPKP(HTTP公钥固定)

  • 限制哪些CA可以为网站颁发证书
  • 部署复杂,有锁定风险
  • 适合高安全性需求网站

5.2.2 DNSSEC和DANE

  • DNSSEC提供DNS响应完整性
  • DANE建立DNS和TLS之间的绑定
  • 浏览器支持有限,但在邮件安全中有应用

6. 实施步骤总结

  1. 准备阶段

    • 选择可信CA
    • 生成强私钥
    • 获取覆盖所有域名的证书
  2. 服务器配置

    • 部署完整证书链
    • 禁用不安全协议
    • 配置安全密码套件
    • 启用前向保密
  3. 性能优化

    • 启用会话恢复
    • 配置OCSP装订
    • 优化缓存策略
  4. 应用安全

    • 部署HSTS
    • 配置CSP
    • 保护Cookie
    • 消除混合内容
  5. 验证维护

    • 全面测试配置
    • 建立定期检查机制
    • 监控安全公告,及时更新

通过遵循这些最佳实践,您可以建立一个既安全又高性能的TLS部署,有效保护用户数据和企业资产。

SSL/TLS 部署最佳实践 1. 证书和私钥管理 1.1 私钥强度 使用 2048位RSA私钥 作为默认选择,提供约112位安全性 如需更高安全性(128位),考虑: 3072位RSA密钥(性能影响较大) 256位ECDSA密钥(现代客户端支持,性能更好) 1.2 私钥保护 在可信计算机上生成私钥,确保足够熵 避免让CA生成私钥 实施严格的访问控制策略: 限制员工访问 密码保护私钥(生产环境中作用有限) 考虑使用HSM(硬件安全模块)保护高敏感密钥 定期更换: 每年更新证书(更频繁更好) 每次更新证书时生成新私钥(除非需要保持相同密钥) 1.3 证书覆盖范围 确保证书覆盖所有可能使用的域名 包括主域名和www前缀(如example.com和www.example.com) 谨慎使用通配符证书(增加密钥暴露风险) 1.4 选择可信CA 评估CA时应考虑: 安全历史记录和响应能力 业务专注度 提供的服务: CRL和OCSP支持 网络可用性和性能 证书类型(DV/EV) 公钥算法支持 管理工具 技术支持质量 1.5 证书获取时间 提前1-3个月获取证书 避免在证书即将到期时才更换 1.6 签名算法 使用SHA256或更强的签名算法 避免SHA1(已不安全) 2. 配置最佳实践 2.1 证书链 部署完整的证书链(服务器证书+所有中间证书) 不完整的链会导致浏览器警告 2.2 协议选择 禁用 : SSL v2(完全不安全) SSL v3(与HTTP一起使用时存在POODLE攻击) 限制使用 : TLS v1.0(传统协议,存在BEAST等漏洞) 推荐 : TLS v1.2(唯一提供现代AEAD加密的版本) TLS v1.1(无已知安全问题) 2.3 密码套件 避免 : 匿名Diffie-Hellman(ADH)套件 NULL密码套件 导出密码套件 弱密码(40/56位) RC4 3DES 推荐套件 (按优先级排序): 2.4 前向保密(FS) 优先使用ECDHE套件 使用DHE套件作为ECDHE后备 避免RSA密钥交换(除非必要) DHE配置至少2048位(防止Logjam攻击) ECDHE推荐使用secp256r1(P-256)曲线 2.5 密钥交换算法 首选ECDHE(性能更好) 次选DHE(至少2048位) 避免RSA密钥交换 3. 性能优化 3.1 密钥长度平衡 RSA密钥:2048位(平衡安全与性能) ECDSA密钥:256位 加密强度:128位足够 3.2 会话恢复 启用会话恢复机制减少加密操作 检查会话恢复功能是否正常工作 3.3 网络优化 使用长连接(keep-alives) 支持HTTP/2 考虑WAN优化和CDN 3.4 缓存策略 将公共资源(如图片)标记为public 敏感内容禁止缓存 3.5 OCSP装订 启用OCSP装订减少TLS握手时间 测试故障条件下的可靠性 3.6 加密加速 使用支持AES硬件加速的CPU 考虑ECDSA密钥提高性能 4. HTTP和应用安全 4.1 全面加密 全站强制HTTPS 避免混合内容(HTTP和HTTPS) 消除协议降级漏洞 4.2 第三方资源 评估第三方服务风险 确保第三方资源通过HTTPS加载 考虑使用子资源完整性(SRI) 4.3 Cookie安全 所有Cookie标记为Secure 考虑添加加密完整性验证 敏感Cookie考虑加密 4.4 HTTP压缩 禁用TLS压缩(防止CRIME攻击) 注意HTTP压缩风险(TIME/BREACH攻击) 4.5 HSTS部署 配置示例: 强制浏览器始终使用HTTPS 禁用点击式证书警告 考虑HSTS预加载 4.6 CSP部署 基础配置示例: 限制混合内容 控制第三方资源 逐步加强策略 5. 验证与监控 5.1 定期测试 使用SSL/TLS评估工具(如SSL Labs服务器测试) 测试内容包括: 协议支持 密码套件配置 证书有效性 安全头部署 5.2 高级主题 5.2.1 HPKP(HTTP公钥固定) 限制哪些CA可以为网站颁发证书 部署复杂,有锁定风险 适合高安全性需求网站 5.2.2 DNSSEC和DANE DNSSEC提供DNS响应完整性 DANE建立DNS和TLS之间的绑定 浏览器支持有限,但在邮件安全中有应用 6. 实施步骤总结 准备阶段 : 选择可信CA 生成强私钥 获取覆盖所有域名的证书 服务器配置 : 部署完整证书链 禁用不安全协议 配置安全密码套件 启用前向保密 性能优化 : 启用会话恢复 配置OCSP装订 优化缓存策略 应用安全 : 部署HSTS 配置CSP 保护Cookie 消除混合内容 验证维护 : 全面测试配置 建立定期检查机制 监控安全公告,及时更新 通过遵循这些最佳实践,您可以建立一个既安全又高性能的TLS部署,有效保护用户数据和企业资产。