我试图在我编写的客户端和服务器之间使用openSSL进行安全连接。
当我尝试选择要使用的密码套件时,我会在客户机和服务器上做SSL_CTX_set_cipher_list(ctx,ECDH-ECDSA-AES18-GCM-SHA 256)。
但是当我检查get_cipher_list时,优先级别0的密码是ECDH-RSA-AES128-GCM-SHA 256(注意使用RSA而不是ECDSA),ECDH-ECDSA-AES18-GCM-SHA256只出现在1级。
客户端和服务器在由ECDSA签名的证书中都有ECDSA密钥。
我现在有几个问题:
发布于 2015-02-06 10:59:26
(我假设这两个AES18都是AES128的输入。)
一些早期版本的OpenSSL 1.0.1有一个错误,导致密码表中的几个新条目(包括这个条目)被错误地选择。使用补丁e(2013年2月)或更高版本应该可以修复它。(即1.0.2,几周前刚刚发布)。如果感兴趣,您可以通过在不同版本之间区分ssl/s3_lib.c来发现问题。
如果您使用RSA套件连接到服务器,服务器确实有RSA证书。请记住,服务器完全有可能拥有多个算法的密钥和证书(S),并为与客户端协商的密文套件选择合适的算法;OpenSSL库服务器尤其可以具有RSA、DSA、DH和EC (可以是ECDSA或ECDH)。(加上GOST,一种很少在其他地方使用的可选俄罗斯算法。)
旁白:你真的想要ECDH而不是ECDHE吗?只有后者提供前向保密。
https://security.stackexchange.com/questions/80964
复制相似问题