在我知道要使用哪些证书文件之前,我需要检查请求主机,该怎么做?我不能打电话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示例代码
- 1 回答
- 0 关注
- 124 浏览
添加回答
举报
0/150
提交
取消