当前位置: 首页 > 知识库问答 >
问题:

与客户端的https请求。crt和客户机。钥匙

杨成礼
2023-03-14

我想向https服务器发送POST请求并获得响应。下面是我在curl中所做的,它工作得很好。

curl--key/客户钥匙——证书/客户阴极射线管https://test-as.sgx.trustedservices.intel.com:443/attestation/sgx/v2/report-H'内容类型:application/json'--data'{“key”:“value”}'

这是我在围棋中尝试的代码片段。

    url := "https://test-as.sgx.trustedservices.intel.com:443/attestation/sgx/v2/report"
    pair, e := tls.LoadX509KeyPair("client.crt", "client.key")
    if e != nil {
        log.Fatal("LoadX509KeyPair:", e)
    }

    client := &http.Client{
        Transport: &http.Transport{
            TLSClientConfig: &tls.Config{
                InsecureSkipVerify: true,
                Certificates: []tls.Certificate{pair},
            },
        }}

    resp, e := client.Post(url, "application/json", bytes.NewBufferString(payload))

程序挂起在最后一行,错误消息为

Post: dial tcp connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

我觉得我的连接建立代码有问题,而不是服务器的问题,因为服务器与curl完美地工作。

共有1个答案

谭昱
2023-03-14

首先,永远不要使用unsecureskipverify:true,无论它看起来多么方便。相反,设置如下内容:

tls.Config {
    ServerName: "test-as.sgx.trustedservices.intel.com",
    Certificates: []tls.Certificate{pair}
}

第二,初始化http。运输-通过您的定制tls。Config-还将所有其他默认http设置置零。传输默认http附带的设置。客户端

其中一些零默认值可能会强制执行您可能无法预料的行为。请参见此处,了解如何恢复一些原始默认值。

 类似资料:
  • 客户端的HTTP/HTTPS请求。 进程:主进程​ ClientRequest是由EventEmitter来实现Writable Stream​ new ClientRequest(options) 作用:发起新的HTTP/HTTPS请求 options(Object | String) - options是String时即请求URL。 options 是Object时则按以下属性请求: meth

  • httplib 库主要用来模拟客户端发送 HTTP 请求,类似于 Curl 工具,支持 JQuery 类似的链式操作。使用起来相当的方便;通过如下方式进行安装: go get github.com/astaxie/beego/httplib 如何使用 首先导入包 import ( "github.com/astaxie/beego/httplib" ) 然后初始化请求方法,返回对象 r

  • 当浏览器请求一个网页时,它会向网络服务器发送一系列不能被直接读取的信息,因为这些信息是作为HTTP信息头的一部分来传送的。您可以查阅HTTP协议来获得更多的信息。 下表列出了浏览器端信息头的一些重要内容,在以后的网络编程中将会经常见到这些信息: 信息 描述 Accept 指定浏览器或其他客户端可以处理的MIME类型。它的值通常为 image/png 或 image/jpeg Accept-Char

  • 同步-向API发出一批请求,并定期将响应保存到我的数据库。 客户端-从我的客户端的用户向API请求的传递。 服务的文档指定了在给定时间段内可以发出的最大请求数的以下规则: 在一天中: null null 超过这些限制不会导致立即锁定-不会抛出任何异常。但供应商可能会感到恼火,联系我们,然后禁止我们使用他的服务。因此,我需要有一些请求延迟机制,在适当的地方,以防止这一点。我是这样看的: 最安全和最简

  • 当浏览器请求网页时,它会向 Web 服务器发送特定信息,这些信息不能被直接读取,因为这些信息是作为 HTTP 请求的头的一部分进行传输的。您可以查看 HTTP 协议 了解更多相关信息。 以下是来自于浏览器端的重要头信息,您可以在 Web 编程中频繁使用: 头信息 描述 Accept 这个头信息指定浏览器或其他客户端可以处理的 MIME 类型。值 image/png 或 image/jpeg 是最常

  • Java import java.io.IOException; import java.net.URLEncoder; import java.security.MessageDigest; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Collections; import jav