作为标题,在Go中有没有一种信任自签名证书的方法?场景描述:我设置了一个https服务器,它使用自签名证书。当我想使用go客户端调用此服务器时,go需要信任此自签名证书。
发布于 2021-02-05 10:41:53
信任自签名证书(服务器提供自身)意味着https客户端必须能够验证自签名证书是否由受信任的颁发机构颁发-即用于签署服务器证书的CA需要由客户端根据受信任的CA列表进行验证。此列表可以由客户端本身管理,也可以由客户端利用操作系统信任的CA存储来获取此列表。
客户端信任操作系统不信任的额外CA的第一个选项可以通过获取操作系统信任的证书并在其中附加额外的CA cert来实现,如下所示:
rootCAs, _ := x509.SystemCertPool()
// handle case where rootCAs == nil and create an empty pool...
if ok := rootCAs.AppendCertsFromPEM(cert); !ok {
...
}
config := &tls.Config{
InsecureSkipVerify: *insecure,
RootCAs: rootCAs,
}
tr := &http.Transport{TLSClientConfig: config}
client := &http.Client{Transport: tr}第二种选择取决于操作系统(您不需要指定您正在使用的操作系统)。例如,在Linux Go中查找these locations中的可信CA,因此您需要在那里安装用于签署服务器证书的CA(这因操作系统或甚至操作系统的分发而异-您将在操作系统文档中找到如何做到这一点)。
https://stackoverflow.com/questions/66056820
复制相似问题