博客 > SSL证书部署最佳实践
浏览量:4046次评论:0次
作者:May时间:2021-09-01 14:16:55
SSL/TLS是一种看似简单的技术。它易于部署,正常部署后就可以运行了。但想要部署地安全可靠却并非易事。这就使得系统管理员和开发者不得不花费额外时间和精力了解SSL/TLS相关技术,以便能配置一个高安全的服务器或应用。
为了让系统管理员轻松部署安全站点或应用,本篇将讲解SSL/TLS部署最佳实践。
在SSL/TLS中,所有安全都始于服务器的密码标识。因此需要一个强大的私钥来防止攻击。另外,拥有一张有效且强大的证书也是至关重要的,它能授予私钥代表特定主机名的权利。没有这两个基本构建块,任何东西都无法得到安全保障。
对于大多数网站来说,2048位RSA密钥足以保障其安全性了。RSA加密算法的普遍应用使得这种类型的密钥成为默认的安全选择。如果是2048位,这类密钥提供了相当于112位的安全性。如果您想要比这更高的安全性,如128位的安全性,您需要3072位的RSA密钥,但是RSA加密算法的扩展性不太好,3072位的RSA密钥将会影响性能。ECDSA密钥提供了一种替代方案,可以给予更高的安全性和更好的性能。ECDSA密钥为256位,提供128位的安全性。少数老旧的客户端不支持ECDSA,但现代客户端能支持。如果您不介意管理此类设置的开销,则可以同时部署支持RSA和ECDSA加密算法的SSL证书。
私钥是非常重要的资产之一,需限制访问私钥人数,同时建议您采取以下策略保护私钥:
确保您的SSL证书覆盖您希望用于所有站点域名,否则无效证书警告会降低用户对该站点的信任度。经验法则是,安全的Web服务器应该具备这样一个证书,该证书对于指向它的每个DNS名称都有效。
通配符证书有其用途而且能满足更广泛的需求,但在跨团队或部门情况下,使用通配符证书时容易将密钥暴露给很多人。为控制访问私钥人数防止私钥被滥用,这种情况下请避免使用通配符证书。
请确保将所有必要的域名添加到使用者可选名称(SAN),因为所有最新的浏览器都不会通过检查通用名称进行验证。
选择认真对待其证书业务和安全性的可信证书颁发机构 ,即CA。选择 CA 时,请参考以下标准:
注意:为获得最佳效果,请提前至少一周获取证书,以便部署并正常运行。这样做有助于避免因计算机时间不准确而导致出现证书不安全警告。另外,由于CA需要额外的时间才能有效的将新证书发送给OCSP响应,所以最好先提前获取证书避免证书撤销检查的失败。因此,千万不要等到您的证书到期时才替换它们。
证书安全性取决于私钥的强度和签名中使用的散列函数强度。如今SHA1散列函数的证书被普遍认为是不安全的,所以最好安装使用SHA256散列函数的证书。
DNS CAA是一项防止HTTPS证书错误颁发的安全措施,CAA标准可以允许域名所有者限制能为其域名颁发证书的CA。如果没有CAA记录,那么任何人都能为该域名生成CSR并获取任何CA签发的证书。使用DNS CAA记录,可以减少欺诈证书的出现,从而使站点更加安全。如果CA启用自动签发证书的流程,那么就应该检查DNS CAA记录,这样可以减少错误颁发证书的风险。
建议通过为您的证书添加CAA记录将CA列入白名单。添加您信任的CA为您颁发证书。
正确的SSL服务器配置可以让您的网站身份能正常向用户展示以增强信任,并能使用安全的加密原语以缓解所有已知的缺陷。
在部署SSL证书时,仅靠服务器证书是不够的,这就需要两个或多个证书来建立完整的信任链。如果您部署了一个有效证书,但却缺少必要的中间证书,那么就会出现常见的配置问题。为避免这种情况的发生,您需要按相应顺序部署CA提供给您的所有证书。
SSL/TLS系列中有六种协议:SSL 2.0、SSL 3.0、TLS1.0、TLS 1.1、TLS 1.2 和 TLS 1.3:
要确保安全通信,必须首先确定您是直接与所需方通信(而不是通过窃听的其他人)并安全地交换数据。在 SSL 和 TLS 中,密码套件定义了安全通信的发生方式。 它们由不同的构建块组成,其理念是通过多样性实现安全。如果发现其中一个构建块薄弱或不安全,您应该能够切换到另一个构建块。
目前主要依赖提供强身份验证和密钥交换、前向保密和至少128位加密的AEAD套件。可能仍然有支持其他一些较弱的套件,前提是它们仅与不支持任何更好的旧客户端协商。下面是一些过时的密码原语,建议不要使用:
以下是专为RSA和ECDSA密钥设计的套件配置:
注意:建议先在临时环境中测试TLS配置,只有在确定一切按预期工作时才转移到生成环境。请注意,以上是一个通用列表,并非所有系统(尤其是旧系统)都支持所有套件,所以建议参考《SSL服务器配置评级指南》进行检测。
以上示例配置使用标准的TLS套件名称。一些平台使用非标准名称;有关更多详细信息,请参阅您平台的文档。例如,以下套件名称将与OpenSSL一起使用:
在 SSL 3.0 及更高版本的协议中,客户端需提交他们支持的密码套件列表,服务器从列表中选择一个用于连接的套件。然而,并非所有服务器都能做出最佳选择。有些服务器会从客户端列表中选择第一个支持的套件。因此,让服务器主动选择最佳可用密码套件才能使SSL部署安全达到最佳化。
前向保密(也称完美前向保密,简称PFS),它是一种协议功能,可不依赖于服务器私钥实现安全对话。如果不使用前向保密的密码套件,他人就能恢复服务器私钥,进而解密所有先前记录下来加密对话。使用ECDHE套件就能在Web浏览器中启用前向保密。为了支持更广泛的客户端,您还应该使用
DHE套件作为ECDHE后备。除非绝对必要,请避免RSA密钥交换。
对于密钥交换,公共站点通常可以选择常用的Diffie-Hellman密钥交换(DHE)或椭圆曲线变体ECDHE。RSA密钥交换应用非常广泛,但它不提供前向保密。当然还有其他密钥交换算法,但它们通常不安全。
2015年,一组研究人员发表了针对DHE的新攻击,他们的工作被称为Logjam攻击。 研究人员发现,较低强度的DH密钥交换(例如768位)很容易被破解。为了安全起见,如果部署 DHE,请至少配置2048位。一些老版本的客户端(例如Java 6)可能不支持这种强度级别。ECDHE相比之下性能更高、更快速。secp256r1命名曲线(也称为P-256)是一个不错的选择。
近年来发生了几次针对SSL和TLS的严重攻击,但如果您运行的是最新软件并遵循本指南中的SSL部署最佳实践建议,那就不必太过担心这些问题。但是,没有什么是绝对安全的,最好的做法是密切关注网络安全,及时解决安全漏洞问题。
相关文章推荐
2024-10-23 15:13:43
2024-10-21 15:28:32
2024-10-16 15:29:24
2024-10-15 15:02:14
2024-10-10 15:30:39
我的评论
还未登录?点击登录