gpt4 book ai didi

go - 在 Golang 中使用 Gin 获取反向代理与 TLS(到代理服务器)一起工作时遇到问题

转载 作者:行者123 更新时间:2023-12-04 14:48:54 24 4
gpt4 key购买 nike

我的任务是创建与代理服务建立 TLS 连接所需的反向代理。我拥有的证书在每个请求和内存中都是唯一的。

我运气不太好,但我已经尝试了很多方法。这是我现在的位置,希望有人能提供帮助:

func proxy(c *gin.Context) {
/* snip: magic here to get the x509 cert strings and remoteUrl */

proxy := httputil.NewSingleHostReverseProxy(remoteUrl)

cert := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: []byte(signedCertString)})
key:= pem.EncodeToMemory(&pem.Block{Type: "PRIVATE KEY", Bytes: []byte(privateKeyString)})

certificate, err := tls.X509KeyPair(cert, key)
if err != nil {
c.JSON(400, gin.H{"message": "Invalid certificate"})
return
}

proxy.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
Certificates: []tls.Certificate{certificate},
InsecureSkipVerify: true,
}
}

c.Request.Host = remote.Host
c.Request.URL.Scheme = remote.Scheme
c.Request.URL.Host = remote.Host
c.Request.URL.Path = remote.Path

proxy.ServeHTTP(c.Writer, c.Request)
}

我也试过设置 RootCAs(我想也许我只是对现在 TLS 需要在这种情况下工作感到困惑):


func proxy(c *gin.Context) {
/* snip: magic here to get the x509 cert strings and remoteUrl */

proxy := httputil.NewSingleHostReverseProxy(remoteUrl)

cert := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: []byte(signedCertString)})

certPool := x509.NewCertPool()
certPool.AppendCertsFromPEM(cert)

proxy.Transport = &http.Transport{
TLSClientConfig: &tls.Config{
RootCAs: certPool,
InsecureSkipVerify: true,
}
}

c.Request.Host = remote.Host
c.Request.URL.Scheme = remote.Scheme
c.Request.URL.Host = remote.Host
c.Request.URL.Path = remote.Path

proxy.ServeHTTP(c.Writer, c.Request)
}

无论如何,我定位的服务器似乎没有发现代理请求是 TLS,我不确定该从哪里着手。

最佳答案

对于 TLS(即 https,即带有 TLS 的 http),您必须连接到正确的服务器端口。它通常是端口 43 或端口 8443。它永远不会与用于 http 的端口相同。所以这意味着要开始,服务器必须为 TLS 提供一个端口,尽管大多数都这样做。

您共享的唯一代码与服务器连接无关。

由于您没有共享任何向服务器发出请求的代码,因此无法显示哪里出错了。

Here is a sample

关于go - 在 Golang 中使用 Gin 获取反向代理与 TLS(到代理服务器)一起工作时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69408878/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com