你如何在Go中建立一个tls.Certficate链?

时间:2016-12-01 15:35:00

标签: ssl go

我尝试配置TLS服务器以在连接上返回证书

我想创建一个tls.Config,其中包含证书

    // Certificates contains one or more certificate chains
    // to present to the other side of the connection.
    // Server configurations must include at least one certificate
    // or else set GetCertificate.
    Certificates []Certificate

假设我的链是root -> inter -> server,我可以独立加载每个证书,并使用一个列表,但只有serverCert被发送到SSL客户端。

我正在做一些事情:

root, err := tls.LoadX509KeyPair("root.crt", "root.key")
inter, err := tls.LoadX509KeyPair("inter.crt", "inter.key")
server, err := tls.LoadX509KeyPair("server.crt", "server.key")

config := tls.Config{
   Certificates : []tls.Certificates{root, inter, server}
}
config.BuildNameFromCertificates()

我错过了一些明显的东西吗?订单是否重要?

1 个答案:

答案 0 :(得分:3)

你的server.crt文件可以包含整个链[加上你不希望服务器拥有内部或根密钥],在server.crt中你可以拥有

-----BEGIN CERTIFICATE-----
[server cert]
-----END CERT-----
 ----BEGIN CERTIFICATE-----
[inter cert]
-----END CERT-----

根证书不应该在服务器提供的链中,只是服务器+中间件[s]。