如何使用多个域进行 ListenAndServeTLS?我看到该函数接受证书和 key 文件,但我相信 key 文件可能只包含一个私钥。我有几个私钥,用于不同的证书链。
最佳答案
http.ListenAndServeTLS
旨在提供最低限度的配置。如果您想添加其他选项,您可以创建一个带有自定义 tls.Config
的 http.Server
。然后,您可以在 tls.Config.NameToCertificate
中手动映射名称,或调用 BuildNameToCertificate()
以编程方式构建映射。
但是您仍然可以使用 Server.ListenAndServeTLS
,因为它会在配置中加载证书以及通过方法 args 传入的证书。
cfg := &tls.Config{}
cert, err := tls.LoadX509KeyPair("cert_one.pem", "key_one.pem")
if err != nil {
log.Fatal(err)
}
cfg.Certificates = append(cfg.Certificates, cert)
// keep adding remaining certs to cfg.Certificates
cfg.BuildNameToCertificate()
server := http.Server{
Addr: "127.0.0.1:443",
Handler: myHandler,
TLSConfig: cfg,
}
server.ListenAndServeTLS("", "")
关于ssl - 具有多个证书的 http.ListenAndServeTLS,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32175300/