Curl访问https

自签名HTTPS服务器访问

  • 参数 -k 可以忽略服务器证书错误:

    -k, --insecure           Allow insecure server connections
    

对于自签名的HTTPS服务器,可以采用这个方式访问:

curl -k https://myserver

但是不推荐忽略服务器证书错误,这样容易出现中间人攻击。建议下载服务器证书,然后以确认的服务器证书来访问服务器:

使用openssl获取https服务器的证书
openssl s_client -showcerts -connect <Domain Name or IP Address>:<Port>

上述命令会长时间连接服务器直到超时断开,我们会在终端完整看到服务器证书链

  • 将上述命令修改成截取服务器证书文件保存到本地:

使用openssl获取https服务器的证书pem并保存
openssl s_client -showcerts -connect https://<server>:<server_port> </dev/null | sed -n -e '/-.BEGIN/,/-.END/ p' > server.pem
  • 使用服务器证书访问https:

curl使用下载的服务器证书访问HTTPS
curl --cacert server.pem https://<server>:<server_port>

备注

这个使用服务器证书的方法还有一些疑问,我实际使用时依然出现证书问题(服务器的证书签名和域名不一致,还是无法使用),目前还是用 -k 参数绕过问题

参考