为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 ListenAndServeTLS 之前路由 https 请求

如何在 ListenAndServeTLS 之前路由 https 请求

Go
喵喔喔 2023-03-07 14:39:00
在我知道要使用哪些证书文件之前,我需要检查请求主机,该怎么做?我不能打电话http.ListenAndServeTLS(":443", "cerfile", "certkey", mux)因为要使用的证书文件和“mux”取决于请求主机地址,该地址仅在处理程序中可用!当然我应该只使用 443 端口!这可以单独使用 http 包来完成吗?
查看完整描述

1 回答

?
白猪掌柜的

TA贡献1893条经验 获得超10个赞

正如 Burak Serdar 评论的那样,您可以自定义GetCertificate返回tls.Config不同主机的特定证书。

示例代码

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示例代码


查看完整回答
反对 回复 2023-03-07
  • 1 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号