我在围棋中写的反向程序有点麻烦。我想连接我的Golang Web服务器和我的Apache Web服务器。我的Apache Web服务器应该也在https和反向代理上运行。因此,我编写了以下代码,但我总是得到错误:代理错误:x509:由未知授权机构签署的证书。那么apache必须使用与apache相同的证书,还是有什么问题?这里有一些代码片段,但我认为没有ssl的证书存在问题,一切正常:(
func (p *Proxy) directorApache(req *http.Request) {
mainServer := fmt.Sprintf("%s:%d", Config.HostMain, Config.PortMain)
req.URL.Scheme = "https"
req.URL.Host = mainServer
}
func (p *Proxy) directorGo(req *http.Request) {
goServer := fmt.Sprintf("%s:%d", Config.GoHost, Config.GoPort)
req.URL.Scheme = "http"
req.URL.Host = goServer
}
func (p *Proxy) ServeHTTP(rw http.ResponseWriter, req *http.Request) {
fmt.Println(req.URL.Path)
if p.isGoRequest(req) {
fmt.Println("GO")
p.goProxy.ServeHTTP(rw, req)
return
}
p.httpProxy.ServeHTTP(rw, req)
}
func main() {
var configPath = flag.String("conf", "./configReverse.json", "Path to the Json config file.")
flag.Parse()
proxy := New(*configPath)
cert, err := tls.LoadX509KeyPair(Config.PathCert, Config.PathPrivateKey)
if err != nil {
log.Fatalf("server: loadkeys: %s", err)
}
config := tls.Config{InsecureSkipVerify: true, Certificates: []tls.Certificate{cert}}
listener, err := net.Listen("tcp",
net.JoinHostPort(proxy.Host, strconv.Itoa(proxy.Port)))
if err != nil {
log.Fatalf("server: listen: %s", err)
}
log.Printf("server: listening on %s")
proxy.listener = tls.NewListener(listener, &config)
serverHTTPS := &http.Server{
Handler: proxy.mux,
TLSConfig: &config,
}
if err := serverHTTPS.Serve(proxy.listener); err != nil {
log.Fatal("SERVER ERROR:", err)
}
}
我做了很多尝试并生成了几个自签名SSL证书,但都没有解决我的问题。希望有人能帮助我。
问候语
大卫
如果在后端服务器中使用自签名证书,则需要告诉代理的http客户端不要验证证书。
您可以覆盖http包的默认设置:
http.DefaultTransport.(*http.Transport).TLSClientConfig = &tls.Config{InsecureSkipVerify: true}
或专门为您的代理创建新的传输:
httpProxy.Transport = &http.Transport{
Proxy: http.ProxyFromEnvironment,
Dial: (&net.Dialer{
Timeout: 30 * time.Second,
KeepAlive: 30 * time.Second,
}).Dial,
TLSHandshakeTimeout: 10 * time.Second,
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
我试图从Web请求数据的一些基本示例,但是所有对不同主机的请求都会导致SSL错误:。注意:我不支持代理,也没有发生任何形式的证书拦截,因为使用curl或浏览器没有问题。 我目前使用的代码示例是: 编辑:代码运行在Arch linux内核4.9.37-1-lts上。 编辑2:显然在我的系统上的版本之间有差异,通过(重新)移动证书并重新手动安装包,问题得到了解决。
我正在使用Golang 1.9创建一个客户端应用程序。2,我在访问后端时遇到一些问题。问题是我的应用程序在最新版本的Windows和Linux中运行良好,但是,当我在Windows XP上运行它时(是的,不幸的是,我必须支持Windows XP,因为我们的一些客户拒绝升级他们的操作系统),我在尝试执行HTTP get和HTTP POST:
问题内容: 在运行docker命令时,我不断收到这样的错误: 我正在使用没有任何http代理的Fedora 20 x86_64。 我用google搜索,但找不到任何线索,也不知道如何解决此错误,有人可以给我一些解决此问题的提示吗? 以下是一些其他信息可能会有所帮助: 问题答案: 事实证明,这与CDN提供程序有关。 在这里检查:https : //github.com/dotcloud/docker
在我的Go应用程序中,我打电话到 这取决于环境,在本地将在http上,而在生产环境中,它将在 当我使用postman在https上测试生产路由时,没有问题,路由工作正常。 但是当我从WS运行它时,我得到: 这是我的代码: 我能做些什么来解决这个问题?
我正在配置一个Kubernetes集群,在CoreOS中有2个节点,如中所述https://coreos.com/kubernetes/docs/latest/getting-started.html没有法兰绒。两台服务器都在同一个网络中。 但在worker中运行kubelet时,我得到了:x509:未知授权机构签署的证书(可能是因为尝试验证候选授权机构证书“kube ca”时出现了“crypto
我正在使用Go包来查询pzug。应用程序的容器化如下: 但是,我得到以下错误: 我已经尝试过这里建议的x509证书,该证书由未知的权威机构签署,但运气不佳。有什么想法吗?