2017-03-29 64 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)。 –

相關問題