https server踩坑,无法接受https请求

9,866 阅读1分钟

可以说是一个致命的bug,来自这次提交

github.com/go-chassis/…

为了能够支持随机端口,我们使用

listener, err = tls.Listen("tcp", listenAddress, tlsConfig)
err = r.server.ServeTLS(l, "", "")

的方式来代替过去的

r.server = &http.Server{Addr: config.Address, Handler: r.container, TLSConfig: r.opts.TLSConfig}
server.ListenAndServeTLS("", "")

而这样直接导致了以下错误

TLS handshake error tls:first record does not look like a tls hanshake

看字面的意思是我发的是一个http请求,但实际上我明明是用https://xxx来访问的啊

后来的修复方式是

github.com/go-chassis/…

也就是直接进行Serve,不区分是否是TLS

listener, err = tls.Listen("tcp", listenAddress, tlsConfig)
err = r.server.Serve(l, "", "")