Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ssl/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
带有证书的Python请求_Python_Ssl_Python Requests_Certificate - Fatal编程技术网

带有证书的Python请求

带有证书的Python请求,python,ssl,python-requests,certificate,Python,Ssl,Python Requests,Certificate,我正试图让汇丰银行开放银行业务的沙箱发挥作用。只有当我使用-k禁用验证时,他们的curl命令才会给我一个访问令牌。请注意,我从我的汇丰开发人员处下载了xyz.der和server.key curl-v-k-X POST\ --汇丰银行证书/qwac_PSP_PI、PSP_AS、PSP_IC、PSP_AI_27_10_2020.der\ --证书类型\ --key hsbc/server.key\ -H“内容类型:应用程序/x-www-form-urlencoded”\ -H“接受:应用程序/js

我正试图让汇丰银行开放银行业务的沙箱发挥作用。只有当我使用
-k
禁用验证时,他们的curl命令才会给我一个访问令牌。请注意,我从我的汇丰开发人员处下载了
xyz.der
server.key

curl-v-k-X POST\
--汇丰银行证书/qwac_PSP_PI、PSP_AS、PSP_IC、PSP_AI_27_10_2020.der\
--证书类型\
--key hsbc/server.key\
-H“内容类型:应用程序/x-www-form-urlencoded”\
-H“接受:应用程序/json”\
-H“x-fapi-financial-id:测试”\
-H“缓存控制:无缓存”\
-d'grant_type=client_-credentials&scope=accounts&client_-assertion_-type=urn:ietf:params:oauth:client-assertion-type:jwt-bearer&client_-assertion=xyz'\
"https://sandbox.hsbc.com/psd2/obie/v3.1/as/token.oauth2"
由于这是可行的,我正试图对
请求执行相同的操作
,但在如何使用证书方面遇到了困难。我知道
requests
支持
cert
关键字,但似乎我还需要添加其他参数。有没有办法指定证书类型和相应的密钥

导入请求
标题={
“内容类型”:“应用程序/x-www-form-urlencoded”,
“接受”:“应用程序/json”,
“x-fapi-financial-id”:“测试”,
“缓存控制”:“无缓存”,
}
参数={
“授予类型”:“客户端凭据”,
“范围”:“账户”,
“客户端断言类型”:“urn:ietf:params:oauth:client断言类型:jwt bearer”,
“客户端断言”:“xyz”,
}
url=”https://sandbox.hsbc.com/psd2/obie/v3.1/as/token.oauth2"
requests.post(url=url,
标题=标题,
params=params,
cert=“hsbc/qwac\u PSP\u PI、PSP\u AS、PSP\u IC、PSP\u AI\u 27\u 10\u 2020.der”,
verify=False).json()

感谢@KlausD。在使用
openssl
.der
转换为
.pem
后,现在可以使用此功能:

opensslx509-通知der-in-qwac_xyz.der-out-qwac_xyz.pem
导入请求
标题={
“内容类型”:“应用程序/x-www-form-urlencoded”,
“接受”:“应用程序/json”,
“x-fapi-financial-id”:“测试”,
“缓存控制”:“无缓存”,
}
参数={
“授予类型”:“客户端凭据”,
“范围”:“账户”,
“客户端断言类型”:“urn:ietf:params:oauth:client断言类型:jwt bearer”,
“客户端断言”:“xyz”,
}
url=”https://sandbox.hsbc.com/psd2/obie/v3.1/as/token.oauth2"
requests.post(url=url,
标题=标题,
params=params,
证书=(“hsbc/qwac_xyz.pem”,“hsbc/server.key”),
verify=False).json()

那里似乎有一些私有数据(“客户端断言”)。请把它移走,换上其他东西。我不认为这是必要的,因为它是一个沙箱。我现在已经删除了它。使用
openssl
将您的证书和密钥转换为PEM格式,并将
cert=
作为元组
(证书,密钥)
提供,或者将两者放在一个文件中。@klauds。这确实很有效。谢谢
请求
是否总是希望使用
.pem
格式?