ssl - 具有多个证书的 http.ListenAndServeTLS

标签 ssl go https

如何使用多个域进行 ListenAndServeTLS?我看到该函数接受证书和 key 文件,但我相信 key 文件可能只包含一个私钥。我有几个私钥,用于不同的证书链。

最佳答案

http.ListenAndServeTLS 旨在提供最低限度的配置。如果您想添加其他选项,您可以创建一个带有自定义 tls.Confighttp.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/

相关文章:

java - 在我的服务器中,出现异常 "javax.net.ssl.SSLHandshakeException: Remote host closed connection during handshake"

golang autocert acme/autocert : missing server name

java - SSL 握手和服务器响应

google-app-engine - 如何对作为 slice 的接口(interface){}进行子 slice ?

go - 无法安装 ipfs

go - 使用 JWT,如何检查授权 header ?

c# - 带 SSL/TLS 的 wsdl.exe

amazon-web-services - 通过 ACM 在 AWS 上的单实例 tomcat 上配置 SSL 证书

apache2 和 ssl 模块

ssl - 在 CerEm J.V.M 中打开 https 连接时发生 ConnectionNotFoundException