12

我目前在尝试使用 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

4 回答 4

14

我遇到了类似的 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)
于 2014-06-17T17:37:42.160 回答
12

我知道我在这个答案上迟到了,但希望这可以帮助别人。


为什么不应该关闭验证

虽然关闭证书验证是最简单的“解决方案”,但这并不是一个明智的做法。它本质上是说,“我不在乎我是否信任你,无论如何我都会把我所有的信息都发给你。” 这为您打开了中间人攻击的大门。

如果您要连接到公司的 Jira 服务器并且它具有 TLS/SSL 证书,那么您应该对此进行验证。我会问您的 IT 部门该证书在哪里。它可能在您公司的某些根证书中。

如果您在 Chrome 中连接到服务器(例如),如果它通过 TLS/SSL 保护,它应该在地址栏的左角显示一个锁。

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

好的,那我该怎么办?

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

jira-python用于RequestsHTTP 的东西(参见文档)。根据请求文档 ,您可以在verify.

因此,您可以像这样为您的公司提供根证书verify

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

如果您使用的是 Windows 机器(一个安全的假设?),该根证书存储在注册表中,获取它的最佳方法是使用wincertstore.

于 2016-10-12T20:16:39.523 回答
7

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

  1. 使用谷歌浏览器访问该网站,然后单击锁定按钮。
  2. 现在点击证书,会弹出一个新窗口。
  3. 接下来点击Certification Path,从列表中选择第一个选项,这将是 root ,然后选择View Certificate,弹出另一个窗口。
  4. 转到详细信息选项卡,单击复制到文件。然后点击Next,选择Base-64 encoded x509.(CER)单选按钮,点击 Next 并在本地保存 .cer 文件。

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

jira_options = {
    'server': jira_server_name,
    'verify': 'path_to_directory_containing_certificate_file/certificate.cer'
}

这应该在没有任何安全警告的情况下工作。

于 2019-05-27T18:23:50.143 回答
2

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

于 2021-06-03T06:10:24.160 回答