golang GET 出现 x509: certificate signed by unknown authority

摘要:
我们编写一个Go程序来尝试与这个HTTPSserver建立连接并通信。=nil{fmt.Printlnreturn}deferresp.Body.Close()body,err:=ioutil.ReadAllfmt.Println}运行这个client,我们得到如下错误:$gorunclient1.goerror:Gethttps://localhost:8081:x509:certificatesignedbyunknownauthority此时服务端也给出了错误日志提示:2015/04/3016:03:31http:TLShandshakeerrorfrom127.0.0.1:62004:remoteerror:badcertificate显然从客户端日志来看,go实现的Client端默认也是要对服务端传过来的数字证书进行校验的,但客户端提示:这个证书是由不知名CA签发的!我们可以修改一下client1.go的代码,让client端略过对证书的校验://gohttps/4-https/client2.gopackagemainimportfuncmain(){tr:=&http.Transport{TLSClientConfig:&tls.Config{InsecureSkipVerify:true},}client:=&http.Client{Transport:tr}resp,err:=client.Getiferr!

我们编写一个Go程序来尝试与这个HTTPS server建立连接并通信。

//gohttps/4-https/client1.go
package main

import (
"fmt"
"io/ioutil"
"net/http"
)

func main() {
resp, err := http.Get("https://localhost:8081")
if err != nil {
fmt.Println("error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}

运行这个client,我们得到如下错误:

$go run client1.go
error: Gethttps://localhost:8081: x509: certificate signed by unknown authority

此时服务端也给出了错误日志提示:
2015/04/30 16:03:31 http: TLS handshake error from 127.0.0.1:62004: remote error: bad certificate

显然从客户端日志来看,go实现的Client端默认也是要对服务端传过来的数字证书进行校验的,但客户端提示:这个证书是由不知名CA签发 的!

我们可以修改一下client1.go的代码,让client端略过对证书的校验:

//gohttps/4-https/client2.go
package main

import (
"crypto/tls"
"fmt"
"io/ioutil"
"net/http"
)

func main() {
tr := &http.Transport{
TLSClientConfig: &tls.Config{InsecureSkipVerify: true},
}
client := &http.Client{Transport: tr}
resp, err := client.Get("https://localhost:8081")

if err != nil {
fmt.Println("error:", err)
return
}
defer resp.Body.Close()
body, err := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}

通过设置tls.Config的InsecureSkipVerify为true,client将不再对服务端的证书进行校验。执行后的结果 也证实了这一点:
$go run client2.go
Hi, This is an example of http service in golang!

免责声明:文章转载自《golang GET 出现 x509: certificate signed by unknown authority》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇SpringBoot集成NacosbootstrapTable复选框下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

godror基于ODPI-C的 oracle golang 驱动使用

godror 是一个很不错的oracle golang 驱动,基于ODPI-C 编写,好处是我们需要需要依赖编译 我们只需要安装oracle client 就可以了,不像go-oci8需要编译,同时目前也有一个纯golang 的 oracle驱动,但是目前还不是很稳定,以下是godror的参考使用 参考代码 package main ​ import (...

如何加速golang写业务的开发速度

如何加速golang写业务的开发速度 不要忌讳panic golang写业务代码经常会被吐槽,写业务太慢了,其中最大的吐槽点就是,处理各种error太麻烦了。一个项目中,会有30%或者更多的是在处理error。 对于golang的error这个事情,golang的官方也说的很详细,建议函数返回error,并且让上层调用处理。 error和panic实际上就...

25 Zabbix系统数据表结构介绍

点击返回:自学Zabbix之路 点击返回:自学Zabbix4.0之路 点击返回:自学zabbix集锦 25 Zabbix系统数据表结构介绍自学Zabbix之路15.1 Zabbix数据库表结构简单解析-Hosts表、Hosts_groups表、Interface表自学Zabbix之路15.2 Zabbix数据库表结构简单解析-Items表自学Zabbix之...

Golang反射上篇

目录 1、反射的定义 2、反射的基础数据类型 3、Type 4、Value 5、反射三大定律 5.1 反射第一定律 5.2 反射第二定律 5.3 反射第三定律 6、反射常用的API 6.1 获取type类型 6.2 获取Field信息 6.3 获取method信息 6.4 获取函数信息 6.5 赋值和转换关系 6.6 是否实现接口 6.7 v...

Hyperledger Fabric1.4的多机部署

之前的文章深入解析Hyperledger Fabric启动的全过程主要讲解了Fabric的网络搭建,以及启动的整体流程,但是都是通过单机完成的。而区块链本身就是去中心化的,所以最终还是要完成Fabric网络的多机部署。在本文中,将会详细说明Fabric如何完成多机部署。 1 搭建环境 本文使用的是Fabric 1.4版本,搭建solo模式的4+1的架构:1...

golang 服务平滑重启小结

背景 golang 程序平滑重启框架 supervisor 出现 defunct 原因 使用 master/worker 模式 背景 在业务快速增长中,前期只是验证模式是否可行,初期忽略程序发布重启带来的暂短停机影响。当模式实验成熟之后会逐渐放量,此时我们的发布停机带来的影响就会大很多。我们整个服务都是基于云,请求流量从 四层->七层->...