在我知道要使用哪些證書檔案之前,我需要檢查請求主機,該怎么做?
我不能打電話
http.ListenAndServeTLS(":443", "cerfile", "certkey", mux)
因為要使用的證書檔案和“mux”取決于請求主機地址,該地址僅在處理程式中可用!
當然我應該只使用 443 埠!
這可以單獨使用http包完成嗎?
uj5u.com熱心網友回復:
正如 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示例代碼
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/524298.html
標籤:去
