【发布时间】:2014-10-06 19:47:03
【问题描述】:
我正在启动一个服务器:
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 ciphers 告诉我它是可用的,并且密钥也应该可以工作。 当我在 apache 2.4 的同一台机器上使用相同的密钥时,我的浏览器使用 ECDHE-RSA-AES128-GCM-SHA256。 于是我尝试用chrome浏览器访问s_server:
https://machineip:8888
服务器说:
CIPHER is ECDHE-RSA-AES128-GCM-SHA256
所以 s_server 和 key 确实支持密码,但 s_client 不支持? 为什么?
更多调查表明,只有使用 SHA-1 进行签名的密码似乎才能在客户端中工作...
PS:我遇到了这个问题,因为我的 node.js websocket 服务器似乎也仅限于 SHA-1 密码。
【问题讨论】:
-
您可以添加
-tls1_2选项。我似乎记得 AES/GCM 密码是 TLS 1.1 或 TLS 1.2。如果它的 Ubuntu 在 14 之前,那就忘了它。 Ubuntu 出于互操作原因在 clients 中禁用 TLS 1.2。见Ubuntu 12.04 LTS: OpenSSL downlevel version, does not support TLS 1.2。 -
非常感谢,成功了!即使在 12.04 下,该选项也能成功。
标签: encryption openssl sha1