如何使用多个域的ListenAndServeTLS?我看到该函数接受证书和密钥文件,但是我相信密钥文件可能只包含一个私钥。我有一些私钥,用于不同的证书链。
http.ListenAndServeTLS旨在提供一种基本的最小配置。如果您想添加其他选项,则可以http.Server使用custom 创建一个tls.Config。然后,您可以在中手动映射名称tls.Config.NameToCertificate,也可以调用BuildNameToCertificate()以编程方式构建地图。
http.ListenAndServeTLS
http.Server
tls.Config
tls.Config.NameToCertificate
BuildNameToCertificate()
Server.ListenAndServeTLS但是,您仍然可以使用,因为它将加载配置文件中的证书以及通过args方法传入的证书。
Server.ListenAndServeTLS
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("", "")