【问题标题】:openssl s_client and s_server cipher mismatchopenssl s_client 和 s_server 密码不匹配
【发布时间】: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


【解决方案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。也许这就是我必须明确给出这个选项的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-30
    • 1970-01-01
    • 1970-01-01
    • 2012-06-05
    相关资源
    最近更新 更多