大家都知道在golang中发起普通的http请求是很简单的,使用http包的包级函数即可,例如:
那如果要发起https的请求呢?怎么跳过tls握手阶段里的证书校验呢?
方法1
即将http Client的Transport里的 TLSClientConfig 结构体字段 InsecureSkipVerify 设为true,当然,这里小编为了简单起见直接修改http包的默认http Client了。
方法2
这次依然设置 TLSClientConfig 结构体的字段,不过改为 VerifyPeerCertificate 了,这是一个函数,用来做证书校验的,在函数里什么也不做直接返回nil就相当于跳过证书校验了。
获取服务器返回的证书信息
注意上面的方法2,最好看看文档里的说明,VerifyPeerCertificate函数的第一个参数是服务器返回的证书数据,用 x509.ParseCertificate 函数可以获取证书信息:
示例只是输出证书的有效期,实际上证书的完整信息都可以拿到的,将以上代码稍加修改就能用到自己的项目了。
小编举例时用的golang版本为 1.11 哦。