我尝试配置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()
我错过了一些明显的东西吗?订单是否重要?
答案 0 :(得分:3)
你的server.crt文件可以包含整个链[加上你不希望服务器拥有内部或根密钥],在server.crt中你可以拥有
-----BEGIN CERTIFICATE-----
[server cert]
-----END CERT-----
----BEGIN CERTIFICATE-----
[inter cert]
-----END CERT-----
根证书不应该在服务器提供的链中,只是服务器+中间件[s]。