2016-06-07 53 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