美文网首页
Python 发送带自签名证书的 https 请求

Python 发送带自签名证书的 https 请求

作者: wizdzz | 来源:发表于2019-04-16 15:50 被阅读0次

    在拥有 .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()
    

    相关文章

      网友评论

          本文标题:Python 发送带自签名证书的 https 请求

          本文链接:https://www.haomeiwen.com/subject/kbmbwqtx.html