我有一个用 Golang 编写的代理应用程序。目前,代理不需要身份验证。我可以使用或不使用 TLS 证书来部署它。
一开始我使用 tls 证书部署了它。我尝试使用 Firefox 中的 foxyproxy 插件进行连接,一切正常。然后我尝试使用 curl 进行连接,如下所示
curl --proxy https://myproxy.com:port -v icanhazip.com
并且它返回正确的 IP,由于结果很详细,因此我看到握手成功。密码套件是ECDHE-RSA-AES256-GCM-SHA384
。使用 foxyproxy 一切也运行正常。
现在,当我尝试在 Ubuntu 中使用此代理系统时,我收到错误。我HTTPS Proxy
在 Ubuntu 的网络设置中的网络字段中设置了代理。现在,当我尝试访问类似https://www.google.com我收到来自 Chrome 的错误ERR_RESPONSE_HEADERS_TRUNCATED
。似乎握手失败了。当我检查服务器日志时,我看到两种类型的错误:
http: TLS handshake error from myip:56126: tls: oversized record received with length 20037
或者
http: TLS handshake error from myip:55262: EOF
我进行了一些调查,发现当客户端未使用 tls 通信时会发生这些错误。我不知道问题是什么。
我像这样部署我的服务器:
server := &http.Server{
Addr: addr,
Handler: handler,
}
err := server.ListenAndServeTLS("path/to/cert", "path/to/key")
log.Fatal(err)
我不知道它是否有帮助,但我正在使用 Certbot 从 LetsEncrypt 获取我的证书。
现在,当我部署没有 tls 证书的代码时,一切都正常,但我知道这会存在安全漏洞,并且只能用于调试。
任何帮助都非常感谢。我在 stackoverflow 上问了这个问题,但他们把我的问题标记为离题。我希望这是正确的地方。