登录
首页 >  Golang >  Go问答

如何在 ListenAndServeTLS 之前路由 https 请求

来源:stackoverflow

时间:2024-02-22 12:06:24 163浏览 收藏

学习知识要善于思考,思考,再思考!今天golang学习网小编就给大家带来《如何在 ListenAndServeTLS 之前路由 https 请求》,以下内容主要包含等知识点,如果你正在学习或准备学习Golang,就都不要错过本文啦~让我们一起来看看吧,能帮助到你就更好了!

问题内容

在知道要使用哪些证书文件之前,我需要检查请求主机,该怎么做?

我无法打电话

http.ListenAndServeTLS(":443", "cerfile", "certkey", mux)

因为要使用的证书文件和“mux”取决于请求主机地址,该地址仅在处理程序中可用!

当然我应该只使用 443 端口!

这可以单独使用 http 包来完成吗?


正确答案


正如 burak serdar 评论,您可以自定义 tls.Configgetcertificate 以返回不同主机的特定证书。

示例代码

    mux := http.NewServeMux()
    cfg := &tls.Config{
        GetCertificate: func(info *tls.ClientHelloInfo) (*tls.Certificate, error) {
            // get certificate by info.ServerName

        },
    }
    srv := &http.Server{
        Addr:      ":443",
        Handler:   mux,
        TLSConfig: cfg,
    }
    fmt.Println(srv.ListenAndServeTLS("defaulttls.crt", "defaulttls.key"))

如何通过clienthelloinfo获取证书,可以参考autocert sample codes

今天关于《如何在 ListenAndServeTLS 之前路由 https 请求》的内容介绍就到此结束,如果有什么疑问或者建议,可以在golang学习网公众号下多多回复交流;文中若有不正之处,也希望回复留言以告知!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>