首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >[975]python requests实现HTTPS客户端的证书导入

[975]python requests实现HTTPS客户端的证书导入

作者头像
周小董
发布2021-05-17 12:21:34
发布2021-05-17 12:21:34
5.3K0
举报
文章被收录于专栏:python前行者python前行者

最近需要测试一个HTTPS接口,基于CA证书、client key、 client 证书的ssl连接。

网上了解到的实现是用python+urllib,

代码语言:javascript
复制
import urllib.request

import ssl

if __name__ == '__main__':
    CA_FILE = "ca.crt"
    KEY_FILE = "client.key"
    CERT_FILE = "client.crt"

    context = ssl.SSLContext(ssl.PROTOCOL_TLS)
    context.check_hostname = False
    context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)
    context.load_verify_locations(CA_FILE)
    context.verify_mode = ssl.CERT_REQUIRED
    try:
        # 通过request()方法创建一个请求:
        request = urllib.request.Request('https://127.0.0.1:5000/')
        res = urllib.request.urlopen(request, context=context)
        print(res.code)
        print(res.read().decode("utf-8"))
    except Exception as ex:
        print("Found Error in auth phase:%s" % str(ex))

想用python+requests实现,但requests没有context参数,requests官网描述如下,

用requests的cert+verify参数实现,连接成功,代码如下:

代码语言:javascript
复制
import requests

import ssl

if __name__ == '__main__':  
    try:
        # 通过request()方法创建一个请求:
         r=requests.get("https://127.0.0.1:5000/",cert=('client.crt','client.key'),verify='ca.crt')
    	print(r.status_code)
   	 	print(r.text)
    	print(r.headers)

    except Exception as ex:
        print("Found Error in auth phase:%s" % str(ex))

来源:https://blog.csdn.net/weixin_51380973/article/details/113864819

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/05/13 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档