1

我一直在为一家公司生成供内部使用的证书,随着时间的推移,该证书最终可能会变得越来越普遍(而不仅仅是在单个内部网站上)。我注意到,在使用 OpenSSL 时,生成的证书在 Chrome 中显示为使用 AES_256_CBC,如下所示。

Chrome 显示 AES_256_CBC

我一直在想,是否可以在 OpenSSL 中使用其他加密算法?我已经看到其他网站的证书显示为使用 RC4_128 和 CAMELLIA_256_CBC 等算法。

如果有帮助,我安装了两个版本的 OpenSSL;0.9.8l 和 1.0.1c,我使用的是 Windows 7。这些证书也是链式的;一个根证书,一个中间证书,然后是用于网站的证书。

谢谢你的时间。

4

1 回答 1

2

简短的回答

是的,您可以使用其他加密算法,但 X.509 证书在其中扮演的角色非常小。

为了在不修改客户端的情况下做到这一点,您必须配置您的服务器以支持某些密码套件而不是其他密码套件(例如,对于 Apache,请查看SSLCipherSuite配置)。

如果您可以修改客户端但不能修改服务器,则必须重新排序客户端在握手期间提供的密码套件。具有您首选算法的那些应该排在第一位。或者,您可以使用您不喜欢的加密算法删除那些(即使这意味着连接可能会因此而失败)。

长答案

SSL/TLS 连接上使用的加密算法是在握手期间协商的。客户端将其支持的密码套件发送到服务器,并根据其偏好进行排序。服务器选择它最喜欢的一个。

密码套件(例如TLS_RSA_WITH_AES_128_CBC_SHA)是一个元组,指示必须使用哪些算法:

  • 验证
  • 密钥交换
  • 批量加密
  • 密码摘要

服务器 X.509 证书的内容在此过程中起着很小的作用,因为它限制了身份验证和密钥交换的完成方式。如果服务器证书包含 RSA 密钥,则密码套件不能是任何以TLS_DH_DSS_*.

理论上,服务器 X.509 证书独立于批量加密算法。但是,由于并非所有可能的组合都被覆盖(或由客户端提供),服务器证书中的密钥类型可能会排除某些密码。

于 2012-10-18T07:13:30.067 回答