我有一个证书文件,位置是:/usr/abc/my.crt
,我希望将该证书用于我TLS配置,以便我的http客户端在与其他服务器通信时使用该证书.我当前的代码如下:
mTLSConfig := &tls.Config {
CipherSuites: []uint16 {
tls.TLS_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_3DES_EDE_CBC_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_RC4_128_SHA,
tls.TLS_RSA_WITH_AES_128_CBC_SHA,
tls.TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,
}
}
mTLSConfig.PreferServerCipherSuites = true
mTLSConfig.MinVersion = tls.VersionTLS10
mTLSConfig.MaxVersion = tls.VersionTLS10
tr := &http.Transport{
TLSClientConfig: mTLSConfig,
}
c := &http.Client{Transport: tr}
那么如何在我的TLS配置中分配证书呢?我看到证书设置为http://golang.org/pkg/crypto/tls/#Config.有人能建议如何在那里配置我的证书位置吗?
mTLSConfig.Config{Certificates: []tls.Certificate{'/usr/abc/my.crt'}}
<;——是错误的,因为我在传递字符串.正当我没有任何其他文件,比如.pem或. keys 等等,只有这是我的.当然,我一片空白怎么办?
早些时候,我编辑了Go源代码http://golang.org/src/pkg/crypto/x509/root_unix.go,并在第12行后面添加了/usr/abc/my.crt
,它起作用了.但问题是我的证书文件位置可能会更改,因此在构建TLSConfig时,我从root_unix.go中删除了硬编码行,并try 动态传递它.