2017-03-29 63 views
0

这似乎是一个受欢迎的问题。我希望将我的版本与其他版本区分开来。下面是我所看到的尝试连接到Tomcat服务器时,使用-debug选项:获取SSL23_GET_SERVER_HELLO:未知协议

# 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

首先要注意的事情是,响应不包括可见字符,所以我不可能连接到未启用SSL的端口。我不确定哪个SSL库是我的版本的openssl正在使用,但看看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 

是的,看起来有点老。我想我需要找到更新的版本。

+0

GnuWin版本(http://gnuwin32.sourceforge.net/packages/openssl.htm)是OpenSSL 0.9.8h 2008年5月28日。Bah! – samwyse

+1

OpenSSL 0.9.8没有实现TLS1.2(线路版本03 03)或1.1(03 02)。只有OpenSSL 1.0.1并且实现了TLS1.1和1.2(目前仅支持1.0.2)。如果您想要当前的Windows版本的OpenSSL,请转至http://www.slproweb.com/products/Win32OpenSSL.html(注意:尽管存在URL,但包含64位和32位Windows)。 –

相关问题