【问题标题】:How can I use different encryption algorithms in OpenSSL for X.509 certificates?如何在 OpenSSL 中为 X.509 证书使用不同的加密算法?
【发布时间】:2012-10-17 23:42:52
【问题描述】:

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

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

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

感谢您的宝贵时间。

【问题讨论】:

    标签: algorithm encryption openssl ssl-certificate x509


    【解决方案1】:

    简答

    是的,您可以使用其他加密算法,但 X.509 证书在其中的作用很小。

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

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

    长答案

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-12-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-14
      相关资源
      最近更新 更多