所以我正在开发的程序涉及在银行DMS服务器中发布文档。他们为我提供了.cer格式的服务器证书,我已将其插入代码中的验证变量中。他们还提供了客户端id和密码,我必须将其嵌入标头中。我生成了自签名的客户端证书和私钥,并以cer格式和公钥向他们提供了客户端证书。在代码中,我还给出了客户端证书和证书元组中私钥的路径。在执行代码时,我得到了这个错误:
HTTPSConnectionPool(host='apimuat.xxxbank.com', port=9095): Max retries exceeded with url: /doc-mgmt/v1/uploadDoc (Caused by NewConnectionError('<urllib3.connection.HTTPSConnection object at 0x7fb01bd8a160>: Failed to establish a new connection: [Errno 60] Operation timed out'))
File "/Users/fpl_mayank/Documents/FPL/python-virtual-env/uploadDocApi/server.py", line 164, in main
result = requests.post(url,
File "/Users/fpl_mayank/Documents/FPL/python-virtual-env/uploadDocApi/server.py", line 189, in <module>
main()
我用‘https://postman-echo.com/post没有提到cert和验证,只是为了检查我的请求是否通过。那里工作得很好。
这是我使用请求函数的代码片段。
url='https://apimuat.xxxbank.com:9095/doc-mgmt/v1/uploadDoc'
headers = {"Content-Type": "application/json", "client_id":"af197b22539647fba4db8b971b43e38",
"client_secret":"c1AA406e24074d8887954472C78a924"}
data = req
result = requests.post(url,
data=data,
headers=headers,
cert=('/Users/fpl_mayank/Documents/FPL/python-virtual-
env/uploadDocApi/keystore/dms_csr_certificate_self.cer','/Users/fpl_mayank/Documents/FPL/python-virtual-env/uploadDocApi/keystore/dms_private_key.key'),
verify='/Users/fpl_mayank/Documents/FPL/python-virtual-env/uploadDocApi/truststore/APIM-UAT.cer'
)
res = result.json()
在apidoc中提到,双向SSL身份验证将在客户端和服务器之间实现。此外,我为这个程序制作了虚拟环境。请帮忙。我是我公司第一个使用python编写API的人,所以解决问题的唯一方法是通过良好的ol stackoverflow。
所以我解决了这个问题。idk确切地知道是什么解决了这个问题,但请确保在处理api时,根据要求从网络中获得端点的ip白名单,他们也一样。此外,我发送了带有标识和空格的格式化json请求,因此请确保将json保留在一行中。