使用Python连接到JIRA API时SSL3证书验证失败

时间:2014-05-30 19:18:51

标签: python python-2.7 jira jira-rest-api

我尝试使用Python2.7和JIRA REST API(http://jira-python.readthedocs.org/en/latest/)尝试连接到JIRA时遇到错误。

执行以下操作时:

from jira.client import JIRA

options = {
    'server': 'https://jira.companyname.com'
}
jira = JIRA(options)

我在控制台中收到以下错误消息:

requests.exceptions.SSLError: [Errno 1] _ssl.c:507: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed

有什么我可能错过或做错了吗?

谢谢!

4 个答案:

答案 0 :(得分:12)

我遇到了类似的SSL证书验证错误并查看了" JIRA"方法定义,可以关闭验证。

    :param options: Specify the server and properties this client will use. Use a dict with any
     of the following properties:
      * server -- the server address and context path to use. Defaults to ``http://localhost:2990/jira``.
      * rest_path -- the root REST path to use. Defaults to ``api``, where the JIRA REST resources live.
      * rest_api_version -- the version of the REST resources under rest_path to use. Defaults to ``2``.
      * verify -- Verify SSL certs. Defaults to ``True``.
      * resilient -- If it should just retry recoverable errors. Defaults to `False`.

试试这个:

from jira.client import JIRA

options = {'server': 'https://jira.companyname.com','verify':False}
jira = JIRA(options)

答案 1 :(得分:6)

我知道我对这个答案迟到了,但希望这有助于有人在路上。

为什么你不应该关闭验证

虽然关闭证书验证是最简单的“解决方案”,但确实如此 不是明智之举。它基本上说, “我不在乎我是否信任你,无论如何我都会把你的所有信息发给你。” 这打开了你的中间人攻击。

如果您正在连接到公司的Jira服务器并且它有一个 对于TLS / SSL的证书,您应该对此进行验证。 我会问你的IT部门证书在哪里。这可能是 在贵公司的一些根证书中。

如果您要在Chrome中连接服务器(例如) 如果它是安全的,它应该在地址栏的左上角显示一个锁 超过TLS / SSL。

您可以在Chrome中Right-Click that lock -> Details -> View Certificate

好的,我该怎么办?

直接向verify选项提供必要的证书。

jira-pythonRequests用于HTTP内容(See documentation)。 根据{{​​3}} 您可以在verify中指定证书文件的路径。

因此,您可以在verify中为您的公司提供根证书,如下所示:

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

如果你正在使用Windows机器(一个安全的假设?),那根 证书存储在注册表中,是获取它的最佳方式 正在使用Requests documentation

答案 2 :(得分:0)

在Windows系统上,请执行以下操作:-

  1. 使用google chrome浏览网站,然后单击“锁定”按钮。
  2. 现在单击证书,会弹出一个新窗口。
  3. 接下来单击 Certification Path ,从列表中选择第一个选项作为根,然后选择 View Certificate ,弹出另一个窗口。
  4. 转到详细信息标签,单击复制到文件。然后单击下一步,选择 Base-64编码的x509。(CER)单选按钮,单击下一步并将.cer文件保存在本地。

获得.cer文件后,将其添加到python脚本中,如下所示:-

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

这应该没有任何安全警告。

答案 3 :(得分:0)

只需安装 python-certifi-win32 模块,这应该可以帮助您轻松解决这些错误