传输层安全性(TLS)协议是保护Internet上网络通信的主要手段。 本文是一个简要指南,可帮助您配置安全服务器以满足当前 TLS 标准认证
介绍
特 传输层安全性(TLS) 协议是保护Internet上网络通信的主要手段。 它(及其前身, 安全套接字层或SSL)已在许多应用程序中使用了数十年,但最值得注意的是在浏览器访问它们时 HTTPS 网站。 TLS 通常会在后台安静地运行,但与人们的想法相反, TLS 不是一个行之有效的黑匣子。 而是安全 TLS 提供来自各种密码算法的合作。 此外, TLS像之前的SSL一样,它随着安全行业的发展而不断发展-必须满足新技术和业务要求,同时必须缓解最新的安全威胁。 随着时间的流逝,算法可能会过时,或者实践可能会被放弃,每次更改都会影响算法的整体安全性。 TLS 实例(例如现在保护您的连接的实例)。
这种波动性促使各种标准组织发布指导性文件,从而为 TLS 可以在特定的市场,部门或服务中建立安全性。 不幸的是,有许多这样的标准,不同部门要求遵守不同的适用文件,而标准本身 还 随着时间的流逝而发展,适应他们旨在保护的行业的变化。
可以理解的是,在标准的海洋中航行以建立现代的 TLS 实例对于管理员来说可能真是头疼。 本文是简要指南,可帮助您配置安全服务器以达到预期的效果 TLS 成为2021年的标准。 附录.)
标准
有几个实体为 TLS 有关网络安全的信息,例如美国卫生与公众服务部(HHS)或美国国家标准技术研究院(NIST)。 为了简洁起见,本文将仅研究三个最常用的文档:
- 特 健康保险流通与责任法案 (HIPAA)
- NIST的 SP 800-52R2指南
- 特 支付卡行业数据安全标准 (PCI-DSS)
HIPAA
HIPAA是美国政府于1996年制定的一项法规,涉及安全处理 受保护的健康信息 (PHI)。 PHI指的是任何数字化患者信息,例如测试结果或诊断。 HIPAA 指导文件 2013年发布的内容如下:
有效的移动数据加密过程应符合NIST特殊出版物800-52《传输层安全性的选择和使用指南》(TLS)实施; 800-77,IPsec VPN指南; 或800-113,SSL VPN指南或经过联邦信息处理标准(FIPS)140-2验证的其他指南。
NIST标准
NIST在2005年发布了特殊出版物(SP)800-52,其中描述了正确配置操作程序以安全配置服务器的功能。 TLS 政府服务器的实例。 此后SP 800-52已被版本SP 800-52r1(2014)和SP 80052r2(2019)取代。 本文遵循的SP 800-52r2的准则,目前是稳定的。
PCI-DSS
PCI-DSS是由支付卡行业(PCI)标准安全委员会(SSC)维护的遵从标准,该标准确定了电子商务网站如何处理支付和卡信息。 关于正确的配置 TLS 实例,PCI-DSS指出:
“有关强密码和安全协议(例如NIST SP 800-52和SP 800-57,OWASP等)的信息,请参考行业标准和最佳做法。”
TLS 标准:将所有这些放在一起
现在应该注意的是,每个标准都会根据其功能和所处理的数据影响不同的系统。 例如,医院的电子邮件服务器可能属于HIPAA准则,因为交换的消息可能包含患者信息,而医院的CRM系统可能属于PCI-DSS,因为它可以包含信用卡和其他客户数据。 符合所有三个标准将需要使用通用 TLS 所有文档中都有参数。
幸运的是,所有标准显然都遵循NIST的准则来选择 TLS 参数。 这意味着,在撰写本文时,符合SP 800-52r2的服务器也应符合HIPAA和PCI-DSS。 (好的,这不是 究竟 是的,但下一节会更清楚。)
配置 TLS 参数
的安全级别 TLS 提供受到的影响最大 协议版本 (即1.0、1.1等)和允许的 密码套件。 密码是执行加密和解密的算法。 但是, 密码套件 是一组算法,包括密码,密钥交换算法和哈希算法,它们一起用于建立安全性 TLS 连接。 最 TLS 客户端和服务器支持多种选择,因此在建立安全连接以选择公用时必须进行协商。 TLS 版本和密码套件。
TLS 协议版本
关于 TLS 版本支持,NIST SP 800-52r2指出以下内容:
支持仅政府应用程序的服务器 将 配置为使用 TLS 1.2和 应该 配置为使用 TLS 1.3。 这些服务器 不应该 配置为使用 TLS 1.1和 最好不要 使用 TLS 1.0,SSL 3.0或SSL 2.0。
...
支持公民或面向业务的应用程序的服务器(即,客户端可能不是政府IT系统的一部分) 将 配置为谈判 TLS 1.2和 应该 配置为谈判 TLS 1.3。 指某东西的用途 TLS 通常不建议使用1.1和1.0版本,但是可以在必要时配置这些版本以实现与公民和企业的交互…这些服务器 最好不要 允许使用SSL 2.0或SSL 3.0。
机构 将 支持 TLS 1.3到1年2024月XNUMX日。在此日期之后,服务器 将 支持 TLS 1.3仅适用于政府应用程序和面向公民或企业的应用程序。 通常,支持以下内容的服务器 TLS 1.3 应该 配置为使用 TLS 也是如此1.2。 然而, TLS 在支持以下功能的服务器上可能禁用了1.2 TLS 1.3是否已确定 TLS 互操作性不需要1.2。
而 TLS 1.0被禁止 TLS 对于政府站点,不赞成使用1.1,NIST指南指出,为了与第三方服务,政府控制的服务器兼容 五月 实施 TLS 必要时可以使用1.0和1.1。 在PCI-DSS 3.2.1(当前版本)下,兼容服务器 必须放弃支持 TLS 1.0并迁移到 TLS 1.1,最好 TLS 1.2。” HIPAA在技术上允许使用所有版本的 TLS。 因此,最低的普遍支持 TLS 版本是1.1; 但是,PCI-DSS和NIST强烈建议使用更安全的 TLS 1.2(如上所述,NIST建议采用 TLS 1.3,并计划在2024年之前获得支持。
密码套房
TLS 1.2及更早版本
SP 800-52r2指定了各种可接受的密码套件,用于 TLS 1.2及更早版本。 该标准不需要任何特定密码套件的支持,但可以提供有关选择更强密码套件的指南:
- 优先使用临时密钥,而不要使用静态密钥(即,DDH优先于DH,ECDHE优先于ECDH)。 临时密钥提供了完美的前向保密性。
- 与CBC模式相比,首选GCM或CCM模式。 使用经过身份验证的加密模式可以防止多种攻击(有关更多信息,请参见[SP 3.3.2-800r52]的2节)。 请注意,这些版本在以下版本中不可用 TLS 1.2.
- CCM优先于CCM_8。 后者包含较短的身份验证标签,从而提供较低的身份验证强度。
此外,尽管这些是 允许 密码套件,如果您 TLS 服务器不处理各种不同的平台和客户端,建议仅使用这些算法的一小部分。 仅当(或何时)发现新的协议漏洞时,允许更多的密码套件才能将攻击范围扩大到服务器。
ECDSA证书的密码套件 | ||
---|---|---|
TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2B |
ECDHE-ECDSA-AES128-GCM-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x2C |
ECDHE-ECDSA-AES256-GCM-SHA384 |
TLS_ECDHE_ECDSA_WITH_AES_128_CCM |
0xC0, 0xAC |
ECDHE-ECDSA-AES128-CCM |
TLS_ECDHE_ECDSA_WITH_AES_256_CCM |
0xC0, 0xAD |
ECDHE-ECDSA-AES256-CCM |
TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8 |
0xC0, 0xAE |
ECDHE-ECDSA-AES128-CCM8 |
TLS_ECDHE_ECDSA_WITH_AES_256_CCM_8 |
0xC0, 0xAF |
ECDHE-ECDSA-AES256-CCM8 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x23 |
ECDHE-ECDSA-AES128-SHA256 |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x24 |
ECDHE-ECDSA-AES256-SHA384 |
TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA |
0xC0, 0x09 |
ECDHE-ECDSA-AES128-SHA |
TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA |
0xC0, 0x0A |
ECDHE-ECDSA-AES256-SHA |
RSA证书的密码套件 | ||
TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2F |
ECDHE-RSA-AES128-GCM-SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x30 |
ECDHE-RSA-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 |
0x00, 0x9E |
DHE-RSA-AES128-GCM-SHA256 |
TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 |
0x00, 0x9F |
DHE-RSA-AES256-GCM-SHA384 |
TLS_DHE_RSA_WITH_AES_128_CCM |
0xC0, 0x9E |
DHE-RSA-AES128-CCM |
TLS_DHE_RSA_WITH_AES_256_CCM |
0xC0, 0x9F |
DHE-RSA-AES256-CCM |
TLS_DHE_RSA_WITH_AES_128_CCM_8 |
0xC0, 0xA2 |
DHE-RSA-AES128-CCM8 |
TLS_DHE_RSA_WITH_AES_256_CCM_8 |
0xC0, 0xA3 |
DHE-RSA-AES256-CCM8 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x27 |
ECDHE-RSA-AES128-SHA256 |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x28 |
ECDHE-RSA-AES256-SHA384 |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 |
0x00, 0x67 |
DHE-RSA-AES128-SHA256 |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 |
0x00, 0x6B |
DHE-RSA-AES256-SHA256 |
TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA |
0xC0, 0x13 |
ECDHE-RSA-AES128-SHA |
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA |
0xC0, 0x14 |
ECDHE-RSA-AES256-SHA |
TLS_DHE_RSA_WITH_AES_128_CBC_SHA |
0x00, 0x33 |
DHE-RSA-AES128-SHA |
TLS_DHE_RSA_WITH_AES_256_CBC_SHA |
0x00, 0x39 |
DHE-RSA-AES256-SHA |
ECDSA证书的密码套件 | ||
TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_DHE_DSS_WITH_AES_128_GCM_SHA256 |
0x00, 0xA2 |
DHE-DSS-AES128-GCM-SHA256 |
TLS_DHE_DSS_WITH_AES_256_GCM_SHA384 |
0x00, 0xA3 |
DHE-DSS-AES256-GCM-SHA384 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA256 |
0x00, 0x40 |
DHE-DSS-AES128-SHA256 |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA256 |
0x00, 0x6A |
DHE-DSS-AES256-SHA256 |
TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_DHE_DSS_WITH_AES_128_CBC_SHA |
0x00, 0x32 |
DHE-DSS-AES128-SHA |
TLS_DHE_DSS_WITH_AES_256_CBC_SHA |
0x00, 0x38 |
DHE-DSS-AES256-SHA |
DH证书密码套件 | ||
DSA签名, TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_DH_DSS_WITH_AES_128_GCM_SHA256 |
0x00, 0xA4 |
DH-DSS-AES128-GCM-SHA256 |
TLS_DH_DSS_WITH_AES_256_GCM_SHA384 |
0x00, 0xA5 |
DH-DSS-AES256-GCM-SHA384 |
TLS_DH_DSS_WITH_AES_128_CBC_SHA256 |
0x00, 0x3E |
DH-DSS-AES128-SHA256 |
TLS_DH_DSS_WITH_AES_256_CBC_SHA256 |
0x00, 0x68 |
DH-DSS-AES256-SHA256 |
DSA签名, TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_DH_DSS_WITH_AES_128_CBC_SHA |
0x00, 0x30 |
DH-DSS-AES128-SHA |
TLS_DH_DSS_WITH_AES_256_CBC_SHA |
0x00, 0x36 |
DH-DSS-AES256-SHA |
RSA签名, TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_DH_RSA_WITH_AES_128_GCM_SHA256 |
0x00, 0xA0 |
DH-RSA-AES128-GCM-SHA256 |
TLS_DH_RSA_WITH_AES_256_GCM_SHA384 |
0x00, 0xA1 |
DH-RSA-AES256-GCM-SHA384 |
TLS_DH_RSA_WITH_AES_128_CBC_SHA256 |
0x00, 0x3F |
DH-RSA-AES128-SHA256 |
TLS_DH_RSA_WITH_AES_256_CBC_SHA256 |
0x00, 0x69 |
DH-RSA-AES256-SHA256 |
RSA签名, TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_DH_RSA_WITH_AES_128_CBC_SHA |
0x00, 0x31 |
DH-RSA-AES128-SHA |
TLS_DH_RSA_WITH_AES_256_CBC_SHA |
0x00, 0x37 |
DH-RSA-AES256-SHA |
ECDH证书密码套件 | ||
ECDSA签署, TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x2D |
ECDH-ECDSA-AES128-GCM-SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x2E |
ECDH-ECDSA-AES256-GCM-SHA384 |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x25 |
ECDH-ECDSA-AES128-SHA256 |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x26 |
ECDH-ECDSA-AES256-SHA384 |
ECDSA签署, TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA |
0xC0, 0x04 |
ECDH-ECDSA-AES128-SHA |
TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA |
0xC0, 0x05 |
ECDH-ECDSA-AES256-SHA |
RSA签名, TLS 1.2年: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 |
0xC0, 0x31 |
ECDH-RSA-AES128-GCM-SHA256 |
TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 |
0xC0, 0x32 |
ECDH-RSA-AES256-GCM-SHA384 |
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 |
0xC0, 0x29 |
ECDH-RSA-AES128-SHA256 |
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 |
0xC0, 0x2A |
ECDH-RSA-AES256-SHA384 |
RSA签名, TLS 1.2、1.1或1.0: | ||
IANA | 值 | OpenSSL的 |
TLS_ECDH_RSA_WITH_AES_128_CBC_SHA |
0xC0, 0x0E |
ECDH-RSA-AES128-SHA |
TLS_ECDH_RSA_WITH_AES_256_CBC_SHA |
0xC0, 0x0F |
ECDH-RSA-AES256-SHA |
TLS 1.3
TLS 1.3的密码套件列表要短得多:
TLS_AES_128_GCM_SHA256 (0x13, 0x01)
TLS_AES_256_GCM_SHA384 (0x13, 0x02)
TLS_AES_128_CCM_SHA256 (0x13, 0x04)
TLS_AES_128_CCM_8_SHA256 (0x13, 0x05)
结论
我们希望这份简短的指南可以帮助您了解更多有关 TLS,并在配置时为您提供帮助 TLS 在您自己的服务器上。 关于我们已经讨论过的标准和建议,以下部分包含一个示例配置,您应该可以将其应用于最流行的Web服务器解决方案。 如果您对如何保持在线合规性有任何疑问,请随时通过电子邮件与我们联系。 Support@SSL.com 或单击此屏幕底部的实时聊天按钮。
附录:示例 TLS 配置
收集三个规范文档中所述的规则,现代安全服务器应实施 TLS 1.2和/或 TLS 1.3,列出了简短而多样化的所选密码套件。 作为快速参考,下面显示了市场上最流行的Web服务器的示例配置。 这些是Mozilla生成的“中间”(通用)配置 SSL配置生成器:
Apache HTTP服务器
... SSLProtocol all -SSLv3-TLSv1 - TLSv1.1 SSLCipherSuite 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 SSLHonorCipherOrder off SSLSessionTickets off
Nginx的
... ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 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; ssl_prefer_server_ciphers off;
轻量级
... ssl.openssl.ssl-conf-cmd =(“协议” =>“ ALL,-SSLv2,-SSLv3,-TLSv1-TLSv1.1“)ssl.cipher-list =” ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM- SHA38420:ECDHE-ECDSA-CHACHA1305-POLY20:ECDHE-RSA-CHACHA1305-POLY128:DHE-RSA-AES256-GCM-SHA256:DHE-RSA-AES384-GCM-SHAXNUMX“ ssl.honor-cipher-order =” disable“
HAProxy的
... ssl-default-bind-ciphers 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 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options prefer-client-ciphers no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets ssl-default-server-ciphers 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 ssl-default-server-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-默认服务器选项 no-sslv3 no-tlsv10 no-tlsv11 no-tls-tickets
AWS弹性负载均衡器
...策略:-PolicyName:Mozilla-intermediate-v5-0 PolicyType:SSLNegotiationPolicyType属性:-名称:Protocol-TLSv1.2值:true-名称:服务器定义的密码顺序值:false-名称:ECDHE-ECDSA-AES128-GCM-SHA256值:true-名称:ECDHE-RSA-AES128-GCM-SHA256值:true-名称:ECDHE-ECDSA-AES256-GCM-SHA384值:true-名称:ECDHE-RSA-AES256-GCM-SHA384值:true-名称:DHE-RSA-AES128-GCM-SHA256值:true-名称:DHE-RSA -AES256-GCM-SHA384值:true