openssl s_client和s_server密码不匹配

时间:2014-08-13 12:36:52

标签: encryption openssl sha1

我用:

启动服务器
openssl s_server -accept 8888 -cert server.de.crt -key server.de.key -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256'

然后使用s_client连接同一台机器:

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_server:

https://machineip:8888

服务员说:

CIPHER is ECDHE-RSA-AES128-GCM-SHA256

所以s_server和密钥确实支持密码,但是s_client不支持? 为什么呢?

更多调查显示,只有使用SHA-1签名的密码才能在客户端中运行...

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

1 个答案:

答案 0 :(得分:1)

  

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

jww是对的!

它使用了s_client中的-tls1_2选项,尽管我使用的是Ubuntu 12.04 LTS。也许这就是我必须明确给出这个选项的原因。