Mozilla 为使用 TLS 的服务器提供三种推荐配置。请根据你的受众选择正确的配置 (配置生成器)
- 现代 (Modern): 支持 TLS 1.3 的现代客户端, 无需向后兼容
- 中间 (Intermediate): 通用服务器的推荐配置
- 旧版 (Old): 由非常旧的客户端或库访问的服务, 例如 Internet Explorer 8 (Windows XP)、Java 6 或 OpenSSL 0.9.8
配置 | Firefox | Android | Chrome | Edge | Internet Explorer | Java | OpenSSL | Opera | Safari |
---|---|---|---|---|---|---|---|---|---|
现代 | 63 | 10.0 | 70 | 75 | – | 11 | 1.1.1 | 57 | 12.1 |
中间 | 27 | 4.4.2 | 31 | 12 | 11 (Win7) | 8u31 | 1.0.1 | 20 | 9 |
旧版 | 1 | 2.3 | 1 | 12 | 8 (WinXP) | 6 | 0.9.8 | 5 | 1 |
中间和旧版配置中的密码套件顺序非常重要, 因为它决定了算法选择的优先级
OpenSSL 会忽略其不支持的密码套件, 因此始终按照以下推荐顺序使用完整的密码套件集。在现代版本的 OpenSSL 中使用旧版配置可能需要支持已弃用密码的自定义构建。
现代兼容性 (Modern Compatibility)
对于支持 TLS 1.3 且不需要向后兼容的客户端, 现代配置提供了极高的安全性
- 密码套件 (Cipher Suites):
- TLS 1.3:
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
- TLS 1.2: 无 (完全禁用)
- TLS 1.3:
- 协议 (Protocols):
TLS 1.3
- TLS 曲线 (TLS Curves):
X25519
prime256v1 (P-256)
secp384r1 (P-384)
- 证书类型 (Certificate Type):
ECDSA (P-256)
椭圆曲线证书 - HSTS (HTTP 严格传输安全):
max-age=63072000
(两年) - 证书生命周期 (Certificate Lifespan):
90 days
- 密码套件优先级 (Cipher Preference): 客户端选择, 以优化硬件加速支持
标识 密码套件名称 协议 密钥交换 (Kx) 认证 (Au) 加密算法 (Enc) 消息认证 (Mac)
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
使用建议 (Rationale):
- 所有密码套件均支持 前向保密 (forward secret) 和 认证加密 (authenticated)
- 这些密码套件都很强大, 因此允许客户端选择, 以便根据硬件支持优化性能 (如硬件加速的 AES)
- 推荐使用 ECDSA 证书, 并选用 P-256 曲线。P-384 曲线对安全性的提升有限, 而 Ed25519 尚未被广泛支持。
中间兼容性 (Intermediate Compatibility) 推荐 recommended
对于不需要兼容旧版客户端 (如 Windows XP 或旧版 OpenSSL) 服务。这是针对绝大多数服务的推荐配置, 因为它非常安全, 并且与过去五年 (或更长时间) 发布的几乎所有客户端兼容。
- 密码套件 (Cipher Suites):
- TLS 1.3:
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
- TLS 1.2:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305
- TLS 1.3:
- 协议 (Protocols):
TLS 1.2
,TLS 1.3
- TLS 曲线 (TLS Curves):
X25519
prime256v1 (P-256)
secp384r1 (P-384)
- 证书类型 (Certificate Type):
ECDSA (P-256)
(推荐), 或者RSA (2048-bits)
- DH 参数大小 (DH Parameter Size):
2048
(ffdhe2048, 符合 RFC 7919) - HSTS (HTTP 严格传输安全):
max-age=63072000
(两年) - 证书生命周期 (Certificate Lifespan):
90 days
(推荐) to366 days
- 密码套件优先级 (Cipher Preference): 客户端选择
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xAA - DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
使用建议:
- 所有密码套件均支持 前向保密 (forward secret) 和 认证加密 (authenticated)
- TLS 1.2 是最低支持的协议, 符合 RFC 7525 和 PCI DSS 的要求
- 建议使用 ECDSA 证书, 而不是 RSA 证书, 因为它们允许在使用 Internet Explorer 11 的 Windows 7 客户端上使用 ECDHE, 可兼容 Windows Server 2008 R2 的 IE11
- 密码套件都很安全, 因此我们允许客户进行选择, 因为他们最清楚是否支持硬件加速的 AES
- Microsoft 已停止支持 Windows XP (包括所有嵌入式版本), 因此无需支持旧协议和密码
- 需要提供对 Windows Server 2008 R2 的 IE 11 的访问权限且无法切换或添加 ECDSA 证书的可以添加
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA
- 虽然我们的目标是支持广泛的客户端, 但我们会合理地禁用支持较少的密码 (如 ARIA、Camellia、3DES、SEED)
- 建议的最长证书有效期为 90 天, 以鼓励自动化颁发流程
旧版向后兼容配置 (Old Backward Compatibility)
此配置适用于许多非常老旧的客户端, 只应在必要时作为最后手段使用。它支持更广泛的协议和密码套件, 确保兼容某些非常老旧的客户端, 如 Internet Explorer 8 (Windows XP)、Java 6 或 OpenSSL 0.9.8
- 密码套件 (Cipher Suites):
- TLS 1.3:
TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256
- TLS 1.0 - 1.2:
ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:DHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES256-SHA256:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA
- TLS 1.3:
- 协议 (Protocols):
TLS 1.0
,TLS 1.1
,TLS 1.2
,TLS 1.3
- TLS 曲线 (TLS Curves):
X25519
prime256v1 (P-256)
secp384r1 (P-384)
- 证书类型 (Certificate Type):
RSA (2048-bits)
- 证书曲线 (Certificate Curve): 无
- DH 参数大小 (DH Parameter Size):
1024
(生成时使用openssl dhparam 1024
) - HSTS (HTTP 严格传输安全):
max-age=63072000
(两年) - 证书生命周期 (Certificate Lifespan):
90 days
(推荐) to366 days
- 密码套件优先级 (Cipher Preference): 服务器选择
0x13,0x01 - TLS_AES_128_GCM_SHA256 TLSv1.3 Kx=any Au=any Enc=AESGCM(128) Mac=AEAD
0x13,0x02 - TLS_AES_256_GCM_SHA384 TLSv1.3 Kx=any Au=any Enc=AESGCM(256) Mac=AEAD
0x13,0x03 - TLS_CHACHA20_POLY1305_SHA256 TLSv1.3 Kx=any Au=any Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0x2B - ECDHE-ECDSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2F - ECDHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(128) Mac=AEAD
0xC0,0x2C - ECDHE-ECDSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AESGCM(256) Mac=AEAD
0xC0,0x30 - ECDHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xA9 - ECDHE-ECDSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=ECDSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xCC,0xA8 - ECDHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=ECDH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0x00,0x9E - DHE-RSA-AES128-GCM-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(128) Mac=AEAD
0x00,0x9F - DHE-RSA-AES256-GCM-SHA384 TLSv1.2 Kx=DH Au=RSA Enc=AESGCM(256) Mac=AEAD
0xCC,0xAA - DHE-RSA-CHACHA20-POLY1305 TLSv1.2 Kx=DH Au=RSA Enc=CHACHA20/POLY1305(256) Mac=AEAD
0xC0,0x23 - ECDHE-ECDSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA256
0xC0,0x27 - ECDHE-RSA-AES128-SHA256 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA256
0xC0,0x09 - ECDHE-ECDSA-AES128-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(128) Mac=SHA1
0xC0,0x13 - ECDHE-RSA-AES128-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(128) Mac=SHA1
0xC0,0x24 - ECDHE-ECDSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA384
0xC0,0x28 - ECDHE-RSA-AES256-SHA384 TLSv1.2 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA384
0xC0,0x0A - ECDHE-ECDSA-AES256-SHA TLSv1 Kx=ECDH Au=ECDSA Enc=AES(256) Mac=SHA1
0xC0,0x14 - ECDHE-RSA-AES256-SHA TLSv1 Kx=ECDH Au=RSA Enc=AES(256) Mac=SHA1
0x00,0x67 - DHE-RSA-AES128-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(128) Mac=SHA256
0x00,0x6B - DHE-RSA-AES256-SHA256 TLSv1.2 Kx=DH Au=RSA Enc=AES(256) Mac=SHA256
0x00,0x9C - AES128-GCM-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(128) Mac=AEAD
0x00,0x9D - AES256-GCM-SHA384 TLSv1.2 Kx=RSA Au=RSA Enc=AESGCM(256) Mac=AEAD
0x00,0x3C - AES128-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA256
0x00,0x3D - AES256-SHA256 TLSv1.2 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA256
0x00,0x2F - AES128-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(128) Mac=SHA1
0x00,0x35 - AES256-SHA SSLv3 Kx=RSA Au=RSA Enc=AES(256) Mac=SHA1
0x00,0x0A - DES-CBC3-SHA SSLv3 Kx=RSA Au=RSA Enc=3DES(168) Mac=SHA1
使用建议:
- 此配置仅应在某些需要兼容老旧客户端的特殊情况下使用
- 如果可能的话, 仅对需要此此兼容性配置的接入点 (endpoints) 使用, 与其他流量隔离
- 完全禁用 SSLv3 支持, 终止了对旧版 Windows XP SP2 客户端的支持。对于需要支持 Windows XP SP2 的用户可以使用此配置的 先前版本, 但需要注意的是 SSLv3 已不再安全。
- 此配置需要自定义构建才能与 OpenSSL 的现代版本配合使用, 使用 OpenSSL 的
enable-ssl3
,enable-ssl3-method
,enable-deprecated
, 和enable-weak-ssl-ciphers
选项 - 支持大多数尚未被明确破解和使用起来很危险的密码套件
原文