我正在启动一个服务器:
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密码.