在拥有 .pfx 文件和其密码(若有加密)的前提下进行 https 请求
(关于这些文件的说明,参考:https://blog.51cto.com/wushank/1915795);
所有方法均忽略了服务器响应包的签名认证,即只对请求使用自签名证书进行加密。
1. requests-pkcs12 使用 .pfx
pip install requests-pkcs12
import requests_pkcs12
resp = requests_pkcs12.post('https://www.example.com/path', data='payload', pkcs12_filename='server.pfx', pkcs12_password='password', verify=False) # 若需要对响应包进行验证,则需要给 verify 传参
2. requests 使用 .crt 和 .key
import requests
resp = requests.post('https://www.example.com/path', data='payload', cert=('example.crt', 'example.key'), verify=False) # 若需要对响应包进行验证,则需要给 verify 传参
example.key 和 example.crt 由 .pfx 文件使用 openssl 转换而来(若 pfx 有密码则会提示输入密码):
openssl pkcs12 -in example.pfx -nocerts -nodes -out example.key
openssl pkcs12 -in example.pfx -clcerts -nokeys -out example.crt
3. httplib.HTTPSConnection 使用 .crt 和 .key
import httplib
import ssl
ssl._create_default_https_context = ssl._create_unverified_context # 指明不验证响应包
conn = httplib.HTTPSConnection("www.example.com", port=443, key_file='example.key', cert_file='example.crt')
conn.request('POST', '/path', body='payload')
retCreateCon = conn.getresponse()
网友评论