go - 来自 xx.xx.xx.xx :14333: EOF 的 TLS 握手错误

标签 go ssl https tls1.2 go-gin

我在 Linux (RHEL 7) 中运行 HTTPS 服务器。我一启动服务器就收到以下错误。

2019/09/04 15:46:16 http: TLS handshake error from xx.xx.xx.xx:60206: EOF
2019/09/04 15:46:21 http: TLS handshake error from xx.xx.xx.xx:31824: EOF

此错误在终端中自动且持续出现。 下面是创建 https 服务器的代码 -

package main

import (
    "fmt"
    "net/http"

    "github.com/gin-gonic/gin"
)

func main() {
    fmt.Println("Starting webserver")

    router := gin.Default()
    router.GET("/", func(c *gin.Context) {
        c.JSON(http.StatusOK, gin.H{
            "success": true,
        })
    })

    router.RunTLS(":9001", "server.pem", "server.key")
}

我们已经购买了服务器证书、中间证书和根证书并将其合并到一个文件中以制作server.pem 文件。

由于此错误在我启动服务器后不断出现在终端中,我认为 VM 中存在一些配置问题?

请建议我可以在这里检查哪些内容。

注意:此错误特定于 Go。我已经在 Node JS 中使用相同证书在同一端口上的同一服务器上进行了测试。它工作正常。 此外,错误消息中的 IP 是反向代理服务器 (WAF) 的 IP,它持续对 Web 应用程序服务器进行健康监控。

最佳答案

我会从两个角度来解决这个问题:

  1. xx.xx.xx.xx 地址是什么?我希望当我启动一些随机的软件时,没有什么可以连接到它本身,,对吧?

  2. 9001 端口有什么特别之处吗?尝试运行 nc -l -p 9001 并查看这些未识别的连接是否也发生。

    运行 tcpdump 并查看是否有任何来自建立这些连接的客户端的传入流量:TLS mchinery 报告的那些 EOF(即“文件结尾”)最有可能的意思是那些客户端——无论它们是什么——在 TLS 握手中的某个地方关闭了它们的连接端——而服务器正期望从它们读取一些数据。 这暗示那些客户端实际上并不希望在他们打开的连接中看到 TLS 协议(protocol);他们几乎可能会在其中发送一些明文,因此您将能够查看它。

  3. 谷歌搜索“9001 端口”暗示它用于某些“ETL 服务管理器”协议(protocol)——无论它是什么。 This暗示 9001 上的流量可能与 VoIP 有关。

    我不知道该怎么办,但它可能会给你一些进一步研究的线索。

关于go - 来自 xx.xx.xx.xx :14333: EOF 的 TLS 握手错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57786439/

相关文章:

go - 在 Go 中初始化成员时是否可以只使用一个返回值?

iis - 在 IIS 下使用 SSL 的多个子域

c# - 访问https页面

JRE 1.5 上的 java.lang.IllegalArgumentException : TLSv1. 2

google-app-engine - https ://onesignal. com/api/v1//notifications : http. DefaultTransport 和 http.DefaultClient 在 App Engine 中不可用

go - 修复 GoLand 未找到模块依赖项 ("cannot resolve...")?

Golang sqldatabase 行.Next

security - Poodle 漏洞的简单解释?

docker - Gitlab 不加载新的 ssl 证书和 key

javascript - 强制特定页面使用带有 angularjs 的 HTTPS