在Go中手动验证PEM证书?

时间:2018-08-19 00:36:16

标签: ssl go x509

我的情况是这样的:我正在向我的客户端应用程序手动验证Splunk实例的服务器证书。我用这种方法创建了一个新的httpclient包装器。有人可以向我确切解释我该怎么做吗?我的猜测是:1.没有指定IP地址作为CA; 2.尖叫出一些配置文件; 3.不知道

const SplunkPEM = `---BEGIN...jsldfjklsd---END`

func NewHttpClient() (*http.Client, error) {
rootcas := x509.NewCertPool()
ok := rootcas.AppendCertsFromPEM([]byte(SplunkPEM))
if !ok {
    return http.DefaultClient, ErrString("Failed to parse PEM!")

}

conf := &tls.Config{
    MinVersion: tls.VersionTLS12,
    RootCAs:    rootcas,
    ServerName: "SplunkServerDefaultCert",
}
tr := &http.Transport{TLSClientConfig: conf}
client := &http.Client{Transport: tr}
return client, nil
}

错误1: 无法验证10.0.0.112的证书,因为它不包含任何IP SAN -所以我尝试更改

&tls.Config{
ServerName: "SplunkServerDefaultCert",
}

错误2:  证书对SplunkServerDefaultCert有效,对splunk.com无效

错误3: 证书无权签署其他证书

0 个答案:

没有答案