当前位置:   article > 正文

python发送https请求并验证服务端证书_python requests请求怎么传入证书crt file,key file

python requests请求怎么传入证书crt file,key file
  1. import urllib.request
  2. import ssl
  3. def send_request():
  4. CA_FILE = r"D:\station\python_demo\cert\xxx.cer"
  5. # 如果服务端需要验证客户端证书,则需要额外传入以下两个参数
  6. # KEY_FILE = "client.key"
  7. # CERT_FILE = "client.crt"
  8. # 这里屏蔽了不安全的TLSv1与V1.1协议
  9. context = ssl.SSLContext(ssl.PROTOCOL_TLS)
  10. context.options |= ssl.OP_NO_TLSv1
  11. context.options |= ssl.OP_NO_TLSv1_1
  12. # 这里不检查证书的hostname是否与服务端一致,这是用来连接存储的api管理工具的,一般这个hostname都对不上
  13. context.check_hostname = False
  14. # context.load_cert_chain(certfile=CERT_FILE, keyfile=KEY_FILE)
  15. # 加载受信任的ca列表
  16. context.load_verify_locations(CA_FILE)
  17. # context.verify_mode = ssl.CERT_REQUIRED
  18. try:
  19. # 通过request()方法创建一个请求:
  20. request = urllib.request.Request('https://x.x.x.x:xxxx')
  21. res = urllib.request.urlopen(request, context=context)
  22. print(res.code)
  23. print(res.read().decode("utf-8"))
  24. except Exception as ex:
  25. print("Found Error in auth phase:%s" % str(ex))
  26. if __name__ == '__main__':
  27. send_request()

如果使用requests包则使用一下方法:

  1. import requests
  2. ca_file = r'D:\station\python_demo\cert\xxxx.cer'
  3. ret = requests.get(url="https://8.46.19.193:8088", verify=ca_file)

但是使用该方法目前还不知道怎么跳过hostname验证

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/215247
推荐阅读
相关标签
  

闽ICP备14008679号