openssl s_client和s_server密码不匹配

Axe*_*den 5 encryption openssl sha1

我正在启动一个服务器:

openssl s_server -accept 8888 -cert server.de.crt -key server.de.key -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256'
Run Code Online (Sandbox Code Playgroud)

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

openssl s_client -connect localhost:8888 -state -cipher 'ECDHE-RSA-AES128-GCM-SHA256'
Run Code Online (Sandbox Code Playgroud)

给我:

3077933256:error:140740B5:SSL routines:SSL23_CLIENT_HELLO:no ciphers available:s23_clnt.c:469:
Run Code Online (Sandbox Code Playgroud)

但openssl密码告诉我它可用,密钥也应该有效.当我在apache 2.4的同一台机器上使用相同的密钥时,我的浏览器使用ECDHE-RSA-AES128-GCM-SHA256.所以我尝试使用chrome浏览器访问s_server:

https://machineip:8888
Run Code Online (Sandbox Code Playgroud)

服务器说:

CIPHER is ECDHE-RSA-AES128-GCM-SHA256
Run Code Online (Sandbox Code Playgroud)

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

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

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

Axe*_*den 2

\n

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

\n
\n\n

jww是对的!

\n\n

尽管我使用的是 Ubuntu 12.04 LTS,但它可以与 s_client 中的 -tls1_2 选项一起使用。也许这就是为什么我必须明确给出这个选项的原因。

\n