Python请求-客户端证书的SSL错误

Python Requests - SSL error for client side cert(Python请求-客户端证书的SSL错误)
本文介绍了Python请求-客户端证书的SSL错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用 python 中的请求调用 REST API,到目前为止,当我设置 verify=False 时已经成功.

I'm calling a REST API with requests in python and so far have been successful when I set verify=False.

现在,我必须使用需要导入的客户端证书进行身份验证,每次使用 cert (.pfx) 时都会收到此错误.cert.pfx 受密码保护.

Now, I have to use client side cert that I need to import for authentication and I'm getting this error everytime I'm using the cert (.pfx). cert.pfx is password protected.

r = requests.post(url, params=payload, headers=headers, 
                  data=payload, verify='cert.pfx')

这是我得到的错误:

Traceback (most recent call last):
File "C:UsersmeDesktop	est.py", line 65, in <module>
r = requests.post(url, params=payload, headers=headers, data=payload, verify=cafile)
File "C:Python33libsite-packages
equestsapi.py", line 88, in post
return request('post', url, data=data, **kwargs)
File "C:Python33libsite-packages
equestsapi.py", line 44, in request
return session.request(method=method, url=url, **kwargs)
File "C:Python33libsite-packages
equestssessions.py", line 346, in request
resp = self.send(prep, **send_kwargs)
File "C:Python33libsite-packages
equestssessions.py", line 449, in send
r = adapter.send(request, **kwargs)
File "C:Python33libsite-packages
equestsadapters.py", line 322, in send
raise SSLError(e)
requests.exceptions.SSLError: unknown error (_ssl.c:2158)

我也尝试使用 openssl 获取 .pem 和密钥,但使用 .pem 并获取 SSL: CERTIFICATE_VERIFY_FAILED

I've also tried openssl to get .pem and key but with .pem and getting SSL: CERTIFICATE_VERIFY_FAILED

有人可以指导我如何导入证书以及将其放置在哪里吗?我尝试搜索,但仍然遇到同样的问题.

Can someone please direct me on how to import the certs and where to place it? I tried searching but still faced with the same issue.

推荐答案

我也遇到了同样的问题.verify 参数是指服务器的证书.您希望 cert 参数指定您的客户端证书.

I had this same problem. The verify parameter refers to the server's certificate. You want the cert parameter to specify your client certificate.

import requests
cert_file_path = "cert.pem"
key_file_path = "key.pem"

url = "https://example.com/resource"
params = {"param_1": "value_1", "param_2": "value_2"}
cert = (cert_file_path, key_file_path)
r = requests.get(url, params=params, cert=cert)

这篇关于Python请求-客户端证书的SSL错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Leetcode 234: Palindrome LinkedList(Leetcode 234:回文链接列表)
How do I read an Excel file directly from Dropbox#39;s API using pandas.read_excel()?(如何使用PANDAS.READ_EXCEL()直接从Dropbox的API读取Excel文件?)
subprocess.Popen tries to write to nonexistent pipe(子进程。打开尝试写入不存在的管道)
I want to realize Popen-code from Windows to Linux:(我想实现从Windows到Linux的POpen-code:)
Reading stdout from a subprocess in real time(实时读取子进程中的标准输出)
How to call type safely on a random file in Python?(如何在Python中安全地调用随机文件上的类型?)