2016-06-07 49 views
0

我不時得到這個「隨機」的TLS握手錯誤,但我不知道具體發生了什麼,它只是在日誌中的所有位置出現。在Go中繼續發生TLS握手錯誤

2016/06/07 18:27:05 http: TLS handshake error from 169.229.3.91:53522: tls: oversized record received with length 34831 

我從namecheap.com獲得了Comodo PositiveSSL證書。他們給我發了兩封電子郵件。其中的一個文件的他們所謂的「阿帕奇捆綁」

Your Apache "bundle" file - mydomainname_com.ca-bundle 

而對於我的特定領域的另外一個:

Your PositiveSSL Certificate - mydomainname_com.crt 

我串連這兩個文件到SSL-bundle.crt文件。並將其與我在服務器上生成的私鑰一起使用。

我使用它們像這樣:

router := httprouter.New() 

// ... 

certificate := "/srv/ssl-bundle.crt" 
privateKey := "/srv/mydomainname.com-2016.01.01.key" 
log.Fatal(http.ListenAndServeTLS(":443", certificate, privateKey, router)) 

爲什麼我總是收到此TLS握手錯誤?我能做些什麼來防止這種情況發生?這並不是真的打破了網站或拒絕連接。這似乎並不是這樣。它看起來像事情正在工作。但是我仍然在日誌中看到這個錯誤或警告,我不知道該怎麼做。我沒有正確使用我從證書頒發者獲取的文件嗎?

讓我們假設Apache的「捆綁」文件 - mydomainname_com.ca束,看起來像這樣:

-----BEGIN CERTIFICATE----- 
(apache bundle block of string 1) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(apache bundle block of string 2) 
-----END CERTIFICATE----- 

基本上兩個生成的字符串的大塊。

,我的PositiveSSL證書 - mydomainname_com.crt是這樣的:

-----BEGIN CERTIFICATE----- 
(positivessl block of string) 
-----END CERTIFICATE----- 

這些被連接成順序單SSL-bundle.crt文件:

-----BEGIN CERTIFICATE----- 
(positivessl block of string) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(apache bundle block of string 1) 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
(apache bundle block of string 2) 
-----END CERTIFICATE----- 

在網絡它表示它是有效的https:

enter image description here

我該怎麼辦?

+0

什麼客戶導致錯誤? – JimB

+0

PC上的Google Chrome瀏覽器。 – Aiden

+0

或者,也許它不是我而是爬蟲?我不知道。我該如何檢查服務器端的客戶端? – Aiden

回答

1

如果我沒記錯的話。這是遠程主機即使被告知要執行TLS連接也不支持的問題。如果您記錄這些連接,它可能會是純文本HTTP請求的抓取工具。

UDP

您誤差來源於這裏https://golang.org/src/crypto/tls/conn.go?s=17185:17253#L594,這意味着客戶端發送你壞密文(太大)。當你試圖從tls.Conn中讀取時(或者在握手期間,因爲它從連接本身讀取),它就會發生。它返回你tls.RecordHeaderError爲錯誤,你可以解析它的Msg字段尋找這個字符串。

無論如何,這是因爲客戶端發送格式錯誤的請求,它可能是損壞的數據包或客戶端如何不尊重您的TLS配置,或portscanner,或壞的代理,很多原因。但在這種狀態下,連接是不可恢復的。

檢查您提供的IP地址:http://169.229.3.91/,它表示「這是來自加利福尼亞大學伯克利分校的一臺研究掃描儀,該機器定期對整個互聯網進行掃描,因此您可能已將掃描作爲正在進行的研究的一部分項目。」

+0

如果有原因是抓取工具,那麼我如何忽略錯誤並且如果它們來自抓取工具則不會將其記錄下來?或者我怎麼知道錯誤是否是TLS握手錯誤? – Aiden

+0

在https://golang.org/src/crypto/tls/conn.go中的Conn結構中有一個handshakeErr。但我不知道如何從另一個軟件包中找到它並比較錯誤是否相同。 – Aiden

+0

在帖子中更新 – Darigaaz