python 双向https client

1.https单向认证。

https单向认证:客户端不需要发送证书,只需要认证服务器端证书是否正确即可。

https单向认证流程:客户端发送请求前,先认证服务器端证书,证书认证通过,则发送请求。

2.https双向认证。

https双向认证:简单来讲,就是客户端需要认证服务器端的证书,服务器端需要认证客户端的证书。

https双向认证流程:客户端发送请求前,先认证服务器端证书,证书认证通过,则发送请求。客户端发送客户端证书到服务器,服务器再进行认证确定客户端证书正确,通过后,返回请求的内容。

 

3.python 发送https 请求并带证书文件:直接上代码(get和post)

CLIENT_PEM = "C:\\Users\\haha\\Desktop\\client.pem"

KEY_FILE = "C:\\Users\\haha\\Desktop\\mykey.pem"
SERVER_PEM = "C:\\Users\\haha\\Desktop\\server.pem"

context = ssl.SSLContext(ssl.PROTOCOL_SSLv23)

#context.verify_mode = ssl.CERT_REQUIRED

context.check_hostname = False

#context.load_cert_chain(certfile=CLIENT_PEM,keyfile=KEY_FILE,password=getpasswd())

try:

context.load_cert_chain(certfile=SERVER_PEM)

except IOError, ioError:

log.error(ioError)

log.error(u'证书文件%s不存在' % SERVER_PEM)

raise CommonException


try:

f = urllib2.urlopen(url, context=context)

buf = f.read()

f.close()

代码说明:

SERVER_PEM = "C:\\Users\\haha\\Desktop\\server.pem" 此文件中包含了证书信息和私钥信息。

CLIENT_PEM = "C:\\Users\\haha\\Desktop\\client.pem" 此文件中包含证书信息

KEY_FILE = "C:\\Users\\haha\\Desktop\\mykey.pem" 此文件中包含私钥

加载证书可以通过两种方式:

1.将两个文件单独传入:

  context.load_cert_chain(certfile=CLIENT_PEM,keyfile=KEY_FILE)

2.只传入单个包含证书和私钥信息的文件

  context.load_cert_chain(certfile=SERVER_PEM)

 

说明:

 

根据官方文档,python https导证书只支持pem格式的证书:certfile(证书文件,包含证书的信息),keyfile(私钥文件(生成加密证书时的私钥)),主要用于导入证书。

你可以直接传入包含证书和私钥的一个文件,也可以分别传入私钥文件和证书文件。

 

 

  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值