程序用http.ListenAndServeTLS启动服务器
启动的时候绑定一个证书
我现在有两个域名,如果只设置一个证书的话另一个域名就会显示证书错误,请问下有什么好的解决办法
问对人了,我来说,创建结构 str,实现ServeHTTP接口 ,字段包含 *http.Server (我是匿名字段 ),然后就有这个字段str.TlsConfig ,设置证书认证程序 str.TLSConfig.GetCertificate = XXX.GetCertificate ,GetCertificate z这个函数是这样的。
func (cm *XXX) GetCertificate(clientInfo *tls.ClientHelloInfo) (*tls.Certificate, error) {
if x509Cert, ok := cm.Tlsconfig.NameToCertificate[clientInfo.ServerName]; ok {
return x509Cert, nil
}
}
xxx先把证书全部加载到自己的tlsconfig中就行了
type XXX struct {
*tls.Config
}
xxx.CertConfigs[domain] 就是证书字典
然后. str.ListenAndServeTLS("", "") 不要放任何东西,空的字符串就行
#1