删除旧的密码套件

删除旧的密码套件

我管理一些网站,其中一个网站的安全评级很差(来自安全评分卡)。我有一个托管服务器,所以我请 IT 人员帮忙,但也想进一步了解这个问题。

问题是,存在旧的 TLS1.0 和 TLS1.1 密码套件,例如:

TLS_RSA_WITH_IDEA_CBC_SHA (0x0007)
TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA
TLS_RSA_WITH_RC4_128_MD5
TLS_RSA_WITH_3DES_EDE_CBC_SHA

我首先想到的是,这些必须位于 OpenSSL 配置文件中。但看了一些教程后,我猜它指的是 Apache 配置。httpd.conf(和虚拟主机)没有明确设置密码套件。但包含的内容httpd-ssl.conf有一些东西。

SSLProtocol all -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder on
 SSLCipherSuite  ECDH+AESGCM:ECDH+CHACHA20:ECDH+AES256:!LOW:!MEDIUM:!3DES:!aNULL:!eNULL:!ADH:!DSS!EXP:!MD5:!PSK:!RC4:!SRP

我目前不明白的是:这是正确的地方吗?也许不是,或者为什么读起来不一样。

我在 ciphersuite.info 上看到,上面的第一个是 IANA 名称 (?),还有 OpenSSL 名称。但是ECDH+AESGCM例如是什么呢?

可能需要一些关于下一步该看什么的指导。不想复制粘贴信息,但想对这个主题多了解一点。但是,我不是安全或主要的 IT 人员,所以我不喜欢读一本 300 页的书 :-/

答案1

SSLCipherSuite是设置应使用的加密算法的正确指令。在 TLS 1.2 中,您需要设置四种算法的组合(称为密码套件):

  • 一种密钥交换算法,用于在客户端和服务器之间建立共享秘密。双方可以从该秘密中导出对称加密的密钥。
  • 用于密钥交换的签名算法。
  • 用于实际加密和解密要传输的数据的对称密钥算法。
  • 一种哈希算法,用于确保消息的完整性(通过消息认证码)或构建加密安全的伪随机数生成器。

每个密码套件都有一个唯一的标识符通过 IANA 注册并以 开头TLS_。例如, 代表TLS_DHE_RSA_WITH_AES_128_GCM_SHA256

  • 密钥交换算法是DHE,即使用临时密钥的Diffie-Hellman密钥交换。
  • 签名算法为RSA。
  • 对称加密算法是 GCM 模式下具有 128 位密钥的 AES。
  • 哈希算法是SHA-256。

OpenSSL 作为具体 TLS 实现的提供者,可让您通过以下方式选择 IANA 密码套件自定义格式,称为“密码列表”。此格式支持复杂的选择规则,例如,ECDH+AESGCM代表包含算法ECDH(用于密钥交换)和算法AESGCM(用于对称加密)的所有密码套件。您可以使用命令检查获取的确切密码套件openssl ciphers "ECDH+AESGCM"。在我的例子中,列表包括密码套件TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384(或 OpenSSL 称之为ECDHE-ECDSA-AES128-GCM-SHA256)。

字符串ECDH+AESGCM本身是不是密码套件。这是 OpenSSL 特定的密码套件选择规则。

在实践中,我会使用具体的安全密码套件列表,例如Mozilla 的建议使用 OpenSSL 选择规则时,可能会存在包含您实际上不想要的密码套件的风险(尽管您始终可以使用openssl ciphers上面提到的命令检查结果)。

相关内容