在我知道要使用哪些證書文件之前,我需要檢查請求主機,該怎么做?我不能打電話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 關注
- 102 瀏覽
添加回答
舉報
0/150
提交
取消