Encryption openssl s_客户端和s_服务器密码不匹配

Encryption openssl s_客户端和s_服务器密码不匹配,encryption,openssl,sha1,Encryption,Openssl,Sha1,我正在用以下命令启动服务器: openssl s_server -accept 8888 -cert server.de.crt -key server.de.key -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256' 然后从同一台机器与s_客户端连接: openssl s_client -connect localhost:8888 -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256' 给我: 3077933256:

我正在用以下命令启动服务器:

openssl s_server -accept 8888 -cert server.de.crt -key server.de.key -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256'
然后从同一台机器与s_客户端连接:

openssl s_client -connect localhost:8888 -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256'
给我:

3077933256:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:469:
但是openssl密码告诉我它是可用的,而且密钥也应该有效。 当我在apache 2.4的同一台机器上使用相同的密钥时,我的浏览器使用ECDHE-RSA-AES128-GCM-SHA256。 因此,我尝试将chrome浏览器连接到s_服务器:

https://machineip:8888
服务器说:

CIPHER is ECDHE-RSA-AES128-GCM-SHA256
所以s_服务器和密钥确实支持密码,但s_客户端不支持? 为什么?

更多的调查表明,只有使用SHA-1签名的密码似乎在客户端工作

PS:我遇到了这个问题,因为我的node.js websocket服务器似乎也仅限于SHA-1密码

您可以添加-tls1_2选项。我似乎记得AES/GCM密码是TLS1.1或TLS1.2。如果是14岁之前的Ubuntu,那就忘了它吧。Ubuntu出于互操作的原因在客户端禁用TLS1.2。请参阅Ubuntu 12.04 LTS:OpenSSL底层版本,不支持TLS 1.2jww 8月13日12:42

jww是对的


它与s_客户端中的-tls1_2选项一起工作,尽管我使用的是Ubuntu12.04LTS。也许这就是为什么我必须明确地给出这个选项。

您可以添加
-tls1_2
选项。我似乎记得AES/GCM密码是TLS1.1或TLS1.2。如果是14岁之前的Ubuntu,那就忘了它吧。Ubuntu出于互操作的原因在客户端禁用TLS1.2。看,非常感谢,这很有效!即使在12.04以下,期权也起到了作用。