encryption - openssl s_client 和 s_server 密码不匹配

标签 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 ciphers 告诉我它是可用的,并且 key 也应该有效。
当我在 apache 2.4 的同一台机器上使用相同的 key 时,我的浏览器使用 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 密码。

最佳答案

You might add the -tls1_2 option. I seem to recall the AES/GCM ciphers are TLS 1.1 or TLS 1.2. If its Ubuntu prior to 14, then forget it. Ubuntu disables TLS 1.2 in clients for interop reasons. See Ubuntu 12.04 LTS: OpenSSL downlevel version, does not support TLS 1.2. – jww Aug 13 at 12:42



jww是对的!

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

关于encryption - openssl s_client 和 s_server 密码不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25286356/

相关文章:

delphi - Delphi-MadCrypt-加密和解密字符串时出现问题

java - 加密随机 6 位数字 -> 人类可读

node.js - OpenSSL EdDSA 指定 key 大小

c# - 在 .NET 中使用 OpenSSL 加密和解密文件

utf-8 - openSSL - 使用 ASCII 和 UTF-8 字符解析 subjectAltName

c# - C#中的Java加密代码

c# - 无法为 java 和 c# (winrt) 获得相同的 hmac_sha1 结果

python - 如何在 PyCrypto AES CTR 模式下设置 block 大小

php - 函数加密AES-256-CBC,搜索mysql

android - 无法获取 SHA1 证书指纹 Android Studio