我在 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 应用程序服务器进行健康监控。
最佳答案
我会从两个角度来解决这个问题:
xx.xx.xx.xx
地址是什么?我希望当我启动一些随机的软件时,没有什么可以连接到它本身,,对吧?9001 端口有什么特别之处吗?尝试运行
nc -l -p 9001
并查看这些未识别的连接是否也发生。运行
tcpdump
并查看是否有任何来自建立这些连接的客户端的传入流量:TLS mchinery 报告的那些EOF
(即“文件结尾”)最有可能的意思是那些客户端——无论它们是什么——在 TLS 握手中的某个地方关闭了它们的连接端——而服务器正期望从它们读取一些数据。 这暗示那些客户端实际上并不希望在他们打开的连接中看到 TLS 协议(protocol);他们几乎可能会在其中发送一些明文,因此您将能够查看它。谷歌搜索“9001 端口”暗示它用于某些“ETL 服务管理器”协议(protocol)——无论它是什么。 This暗示 9001 上的流量可能与 VoIP 有关。
我不知道该怎么办,但它可能会给你一些进一步研究的线索。
关于go - 来自 xx.xx.xx.xx :14333: EOF 的 TLS 握手错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57786439/