首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何信任自签名证书

如何信任自签名证书
EN

Stack Overflow用户
提问于 2021-02-05 10:36:13
回答 1查看 716关注 0票数 0

作为标题,在Go中有没有一种信任自签名证书的方法?场景描述:我设置了一个https服务器,它使用自签名证书。当我想使用go客户端调用此服务器时,go需要信任此自签名证书。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-02-05 10:41:53

信任自签名证书(服务器提供自身)意味着https客户端必须能够验证自签名证书是否由受信任的颁发机构颁发-即用于签署服务器证书的CA需要由客户端根据受信任的CA列表进行验证。此列表可以由客户端本身管理,也可以由客户端利用操作系统信任的CA存储来获取此列表。

客户端信任操作系统不信任的额外CA的第一个选项可以通过获取操作系统信任的证书并在其中附加额外的CA cert来实现,如下所示:

代码语言:javascript
复制
    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(这因操作系统或甚至操作系统的分发而异-您将在操作系统文档中找到如何做到这一点)。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66056820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档