当前位置: 首页 > 知识库问答 >
问题:

Golang-TLS握手错误

林德惠
2023-03-14

我正在go中运行https web服务器。我正在使用angular web应用程序(Chrome浏览器)对其进行测试,该应用程序可以对web服务器进行ajax调用。

如果我不断地点击网络服务器,一切似乎都正常。但每当我让它闲置一段时间并点击web服务器时,来自浏览器的ajax调用都不会得到响应。我几乎总是在服务器日志中看到此日志行。

2016/01/16 04:06:47.006977 http:TLS握手错误来自42.21。139.47:51463:EOF

我可以确认IP地址是我的IP地址。

我像这样启动我的https服务器:

r := mux.NewRouter()
r.HandleFunc("/status", handleStatus)
setUpLoginEndpoint(&cfg.Session, r)
setUpLogoutEndpoint(cfg.Session.CookieName, r)
setUpChangePasswordEndpoint(cfg.Session.CookieName, r)
setUpMetricSinkEndpoint(cfg.Metric.SinkApiKey, r)
setUpMetricQueryEndpoint(cfg.Session.CookieName, r)
http.ListenAndServeTLS(":443", "../cert.pem", "../keys.pem", &Server{r})

我可以确认我正在使用defer r.body关闭每个处理程序中的请求主体。Close()。

我用的是围棋1.5。2.

任何帮助都将不胜感激。

当做

萨提亚

共有2个答案

年烈
2023-03-14

我收到与OP相同的错误,但在我的示例中,我指定的TLSHandshakeTimeout值太低。我不确定什么是合适的值,但将其从100ms移动到700ms消除了我的错误。对于遇到相同错误且正在指定非默认http的其他用户。http中的传输配置值。在客户端设置中,您可能希望确保将TLSHandshakeTimeout设置为足够高的值。

&http.Client{
  Transport: &http.Transport{
    TLSHandshakeTimeout:   700 * time.Millisecond, //<-- I was receiving OP's error when I had this set to 100ms
  }
}
谢英光
2023-03-14

我启用了tcp keepalive,这个问题就解决了。我在谷歌计算引擎中运行我的虚拟机,可能是防火墙终止了空闲连接。

TCP保持活动状态

linux中配置tcp保持活动状态

Golang超文本传输协议服务器自动拾取了这个,所以我的Go语言代码不需要更改。

当做

萨提亚

 类似资料:
  • 我已经创建了自己的私有注册表(私有注册表),但我无法将图像推送到它。比我得到以下错误: 正在运行的注册表的日志显示以下内容: 我无法卷曲我的注册表(超时)。以下是我执行的步骤: 首先,我创建了自签名证书: 我已创建注册表,它将使用以下证书: 我授予了正确的权限: 我创建了:,并复制了我的在它里面。我编辑了我的并添加了:(我的内部ip和注册表名) 我还重新启动了docker和我的注册表。 编辑:

  • 我有一个关于TLS初次握手的问题。(我不是专家,所以我想要一个简单易懂的解释)。 根据维基百科: *谈判阶段: 客户端发送ClientHello消息,指定其支持的最高TLS协议版本、随机数、建议的密码套件列表和压缩方法 服务器用一条ServerHello消息进行响应,其中包含从客户端提供的选项中选择的协议版本、随机数、密码套件和压缩方法。服务器还可以发送会话id作为消息的一部分,以执行恢复的握手*

  • 我需要与外部服务连接,而且我的客户端身份验证有问题。该服务需要证书、用户名和密码以及请求。 我正在使用Windows Server 2008 R2。 我已经收到带有证书的PKCS#7包并导入: 本地计算机/个人的SSL证书(仅含公钥) 中间CA和根CA到本地计算机/受信任的RootCertificationAuthorities 我已经在Windows注册表中启用了TLS 1.0、1.1、1.2客

  • 我们很难与远程机器(如PayPal vb)建立https连接谁从我们的系统中禁用了SSL3协议。Net应用程序。HttpWebRequest实例的GetResponse方法出现以下异常。 请求被中止:无法创建SSL/TLS安全通道。 当我们使用WireShark深入并跟踪网络日志时,我们看到远程机器返回以下错误 TLSv1。2警报(级别:致命,描述:握手失败)握手失败40 更有趣的情况是,当我尝试

  • 我试图使用一个自签名证书来配置Linphone Android中的TLS,以便能够与FreeSWITCH SIP服务器通信。但是SSL握手失败,出现以下错误: 通道[0x9EC3C000]:SSL握手失败:X509-证书验证失败,例如CRL、CA或签名检查失败,无法连接到[TLS://52.3.207.224:5061] 谁能建议如何调试这个问题?或者如何在Linphone Android中配置自

  • 在JDK 11下使用TLS 1.3原则上是可行的。然而,一旦在两个并发线程中建立连接,两个线程的初始握手都会失败。 这显然是一个已知的问题,应该已经解决了: Oracle JDK 11.0.2 OpenJDK 11.0.3 使用OpenJDK,这应该是固定的: 或者甚至是OpenJDK(这是今天在AdoptOpenJDK. net上可用的最新选项): 这是正式修复的,但我似乎无法让它工作。 这是怎