这似乎是一个受欢迎的问题。我希望将我的版本与其他版本区分开来。以下是我在尝试使用-debug选项连接到Tomcat服务器时看到的内容:
# openssl s_client -connect example.com:443 -debug
CONNECTED(00000003)
write to 0x694230 [0x694ef0] (187 bytes => 187 (0xBB))
[...]
read from 0x694230 [0x69a450] (7 bytes => 7 (0x7))
0000 - 15 03 03 00 02 02 28 ......(
15633:error:140770FC:SSL routines:SSL23_GET_SERVER_HELLO:unknown protocol:s23_clnt.c:610:
答案 0 :(得分:0)
首先要注意的是响应不包含可见字符,因此我不太可能连接到不支持SSL的端口。我不确定我的openssl版本使用哪个SSL库,但查看https://boringssl.googlesource.com/boringssl/+/2214/ssl/s23_clnt.c是有帮助的,即使行号错误也是如此。 p [1]为0x03,即SSL3_VERSION_MAJOR,p [2]为0x03,即TLS1_2_VERSION_MINOR。 p [0]是0x15(十进制21),这是SSL3_RT_ALERT,这意味着p [3]和p [4]应该是0和2(代码不使用它们的符号名称),它们是。 p [5]也是0x02,它是SSL3_AL_FATAL,看起来不太好。我猜服务器不喜欢我最初的写作。但是,这应该给我一个不同的错误,所以我想知道openssl是否真的不能识别其他有效的协议。检查版本:
# openssl version
OpenSSL 0.9.8j-fips 07 Jan 2009
是的,看起来有点旧。我想我需要找一个更新的版本。