当前位置: 首页 > 面试题库 >

如何使用证书golang发送https请求

贺恩
2023-03-14
问题内容

我有一台具有通过https运行的rest API的服务器。我想在我的应用程序中调用此rest
api,该应用程序在不同的端口中运行,但是由于这是通过https进行的,因此

Post https://localhost:8080/api/v1/myapi: x509: certificate signed by unknown authority

我有2个文件pulic_key.pem和private_key可用于验证证书。使用golang发送休假请求时如何验证证书?我正在&http.Client{}发送休息请求。这就是我现在忽略证书的操作。

tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}

client := &http.Client{Transport: tr}

问题答案:

您需要将证书的CA添加到传输中,例如:

package main

import (
    "crypto/tls"
    "io/ioutil"
    "log"
    "net/http"
    "crypto/x509"
)

func main() {
    caCert, err := ioutil.ReadFile("rootCA.crt")
    if err != nil {
        log.Fatal(err)
    }
    caCertPool := x509.NewCertPool()
    caCertPool.AppendCertsFromPEM(caCert)

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                RootCAs:      caCertPool,
            },
        },
    }

    _, err := client.Get("https://secure.domain.com")
    if err != nil {
        panic(err)
    }
}

但是我想您只是还没有创建CA来制作证书。这是没有说明的命令列表,可以帮助您制作使用自己的CA签名的证书。有关更多信息,您可以对其进行搜索。

  1. 生成CA

    openssl genrsa -out rootCA.key 4096
    

    openssl req -x509 -new -key rootCA.key -days 3650 -out rootCA.crt

  2. 生成证书以secure.domain.com与创建的CA签署

    openssl genrsa -out secure.domain.com.key 2048
    

    openssl req -new -key secure.domain.com.key -out secure.domain.com.csr

    openssl x509 -req -in secure.domain.com.csr -CA rootCA.crt -CAkey rootCA.key -CAcreateserial -days 365 -out secure.domain.com.crt



 类似资料:
  • 我需要发送https请求,请放心,有c.crt证书和公钥。密钥,如果我的证书和密钥在项目中,我该如何发送请求

  • 我有一个react本机项目,我必须使用为https请求创建本机模块。p12认证,但我从未使用Objective-C(有点复杂)或Swift。我找到了一个用于https请求的类,但我没有使用这个类,因为我没有证书。h文件和我的项目文件夹; 我的桥。H 我的桥。M 它作为基本的get请求工作,但当我尝试https服务时,我需要为每个请求固定一个证书。我如何发送此案例的请求?

  • 说我想得到以编程方式。目前是戈朗。org(ssl)有一个颁发给所以当我运行此命令时: 我得到了(如我所料) 现在,我想自己信任这个证书(想象一个自我颁发的证书,我可以验证指纹等):我如何发出请求并验证/信任证书? 我可能需要使用openssl下载证书,将其加载到我的文件中,并填写结构!?

  • 嗨,我想用Swift发出Https请求。当前im通过ip地址访问本地服务器。通过访问证书,本地服务器有一个SSL证书。要向服务器发出请求,当前我正在这样做。 我已经在plist中使用了上述代码来发出请求 在plist中,我已经给出了这样的结果,但我仍然得到了这样的错误

  • 问题内容: 说我想以编程方式获取。目前,golang.org(ssl)的证书不正确,因此我将其签发给So: 我得到了(如我所料) 现在,我想自己信任该证书(想象一个可以颁发指纹的自我发行的证书,等等):如何提出请求并验证/信任该证书? 我可能需要使用openssl下载证书,将其加载到我的文件中并填充struct!?。 问题答案: 安全说明:禁用安全检查是危险的,应避免 您可以全局禁用默认客户端的所

  • 我想使用TLS相互身份验证在Go中制造的API上对一个客户端进行身份验证。我已经创建了一个证书颁发机构,假设Bob有一个他想与客户机一起使用的密钥对。Bob创建了一个证书请求,并希望我验证他的证书,以便在API上进行授权和身份验证。 我已使用此方法创建了我的证书颁发机构: Bob使用它来创建他的证书和证书请求: 我想实现这一点,但在围棋: 但如果朱莉娅现在想登录怎么办?她将必须创建一个CSR,发送