Python无法通过

时间:2018-11-27 10:20:51

标签: python-3.x jira-rest-api

我想通过python(3.6)连接jira的API,但我不断收到错误消息:

警告:root:HTTPSConnectionPool(host ='jira',port = 443):URL超过最大重试次数:/ secure / rest / api / 2 / serverInfo / rest / api / 2 / serverInfo(由SSLError(SSLError引起) (“握手失败:错误([(('SSL例程','tls_process_server_certificate','证书验证失败')],)”))))))))在执行GET https://jira/secure/rest/api/2/serverInfo/rest/api/2/serverInfo [{'params':None,' headers':{'User-Agent':'python-requests / 2.20.1','Accept-Encoding':'gzip,deflate','Accept':'application / json,; q = 0.9','Connection':'keep-alive','Cache-Control':'no-cache','Content-Type':'application / json','X-Atlassian-Token':'no-校验'}}] 警告:root:Got ConnectionError [HTTPSConnectionPool(host ='jira',port = 443):URL超过最大重试次数:/ secure / rest / api / 2 / serverInfo / rest / api / 2 / serverInfo(由SSLError(SSLError引起) (“错误的握手:错误([[('SSL例程','tls_process_server_certificate','证书验证失败')],)“))))] errno:GET https://jira/secure/rest/api/2/serverInfo/rest/api/2/serverInfo上没有 {'response':无,'request':} {'response':无,'request':} 警告:root:从GET https://jira/secure/rest/api/2/serverInfo/rest/api/2/serverInfo获得可恢复的错误,将在7.466325591185807s中重试1/3。错误:HTTPSConnectionPool(host ='jira',端口= 443):网址超过了最大重试次数:/ secure / rest / api / 2 / serverInfo / rest / api / 2 / serverInfo(由SSLError(SSLError(“错误的握手:错误([[('SSL例程','tls_process_server_certificate','证书验证失败')],),)))

这是我的代码

un='myusername'
pwd='mypassword'
server='https://jira/xxxx'

jira = jira = JIRA(basic_auth=(un, pwd), options={'server': server})
issue = jira.issue('some issue name')

print(issue.fields.project.key)
print(issue.fields.issuetype.name) 

在同一台服务器上使用curl时,一切正常。

2 个答案:

答案 0 :(得分:2)

您可以为verify选项提供必要的证书。

jira-python对HTTP (docs)使用Requests

根据Requests documentation 您可以在verify中指定证书文件的路径。 因此,您可以像这样在verify中提供根证书:

jira_options = {
   'server': jira_server_name,
   'verify': 'path/to/root/certificate',
}

因此,在您的情况下,请更改为:

jira = jira = JIRA(basic_auth=(un, pwd), options={'server': server,'verify': 'path/to/root/certificate',})

例如,在Chrome中,您可以显示此article

中所述的证书

编辑:

在Chrome中连接到服务器,然后单击地址栏左上角显示的锁,然后右键单击该锁,然后单击“详细信息”,然后单击“查看证书”。然后将此证书保存到文件中,并在verify中引用它。

从文档中

SSL CERT验证:

  

如果将verify设置为目录的路径,则必须已使用OpenSSL随附的c_rehash实用程序处理了该目录。

客户端证书:

  

本地证书的私钥必须未加密。当前,“请求”不支持使用加密密钥。

还有设置'verify':false的选项-不建议您这样做,因为关闭证书验证会使您容易受Man-in-the-Middle attacks的攻击。<​​/ p>

答案 1 :(得分:1)

只需安装“python-certifi-win32”,我就清除了 SSL 错误。我没有提供任何证书或任何东西。