Python / SSL身份验证

时间:2015-04-03 06:35:59

标签: python ssl request

我正在尝试连接到Visa Direct API,但我没有通过基本的SSL证书验证,这是我的代码:

import requests             
headers = { 'Content-Type' : 'Application/json' }
url = 'https://sandbox.visa.com/rsrv_vpp/v1/acnl'

 payload = {"SystemsTraceAuditNumber":565690,
"RetrievalReferenceNumber":"505012455690",
"AcquiringBin":409999,
"AcquirerCountryCode":"840",
"PrimaryAccountNumber":"4895070000008881"}

r = requests.post(url, data=json.dumps(payload), 
 cert =('/etc/ssl/certs/sandbox_cert.pem'), headers=headers,
 auth=('370df57a-a8aa-4446-a23e-44a0ef06ea09',
 '6023e518-c36c-47a8-b16e-c8a5b3a941ef'))

你可以看到我正在使用请求并传递cert参数以及API用户和密码信息,但我一直收到错误:

  

requests.exceptions.SSLError:[Errno 1] _ssl.c:510:错误:14090086:SSL例程:SSL3_GET_SERVER_CERTIFICATE:证书验证失败

1 个答案:

答案 0 :(得分:1)

当我尝试在Google Chrome中打开https://sandbox.visa.com/rsrv_vpp/v1/acnl时出现SSL错误。

签证文件说

  
      
  1. SSL服务器身份验证
  2.         

    sandbox.visa.com服务器上安装的SSL服务器证书是   签证签发自签证书。客户端应用程序需要添加   sandbox.visa.com SSL证书到他们的本地信任商店   在运行时防止SSL握手错误。

         

    确保连接到Visa Direct API的应用程序是   配置(或构建)以将受信任的证书存储区用作信任   商店,而不是钥匙商店。

         

    验证应用程序是否配置为使用正确的密码   与信任库文件相关联。

看起来您需要先进行一些SSL身份验证才能连接到Visa。