我一直在为公司内部使用生成证书,随着时间的推移可能会变得更加普及(而不是仅仅在一个内部网站上)。我注意到,在使用OpenSSL时,生成的证书显示为在Chrome中使用AES_256_CBC,如下所示。
我一直在想,是否可以在OpenSSL中使用其他加密算法?我已经看到其他网站的证书显示为使用RC4_128和CAMELLIA_256_CBC等算法。
如果有帮助,我安装了两个版本的OpenSSL; 0.9.8l和1.0.1c,我使用的是Windows 7.这些证书也是链接的;一个根证书,一个中间证书,然后是用于该网站的证书。
感谢您的时间。
答案 0 :(得分:2)
是的,您可以使用其他加密算法,但X.509证书在其中扮演的角色非常小。
为了在不修改客户端的情况下执行此操作,您必须将服务器配置为支持某些密码套件而不是其他密码套件(例如,对于Apache,请查看SSLCipherSuite配置)。 / p>
如果您可以修改客户端而不是服务器,则必须重新排序客户端在握手期间提供的密码套件。那些首选算法的应该是第一个。或者,您可以删除那些您不喜欢的加密算法(即使这意味着连接可能因此而失败)。
在握手期间协商SSL / TLS连接上使用的加密算法。客户端向服务器发送它支持的cipher suites,根据其偏好进行排序。服务器选择最喜欢的那个。
密码套件(例如TLS_RSA_WITH_AES_128_CBC_SHA
)是一个元组,指示必须使用哪些算法:
服务器X.509证书的内容在此过程中起着很小的作用,因为它限制了身份验证和密钥交换的完成方式。如果服务器证书包含RSA密钥,则密码套件不能是以TLS_DH_DSS_*
开头的任何密码套件。
理论上,服务器X.509证书独立于批量加密算法。但是,由于并非涵盖(或由客户端提供)所有可能的组合,服务器中的密钥类型可能排除某些密码。