Ошибка проверки сертификата SSL3 при подключении к JIRA API с помощью Python

в настоящее время я сталкиваюсь с ошибкой при попытке подключиться к JIRA с помощью Python2.7 и JIRA REST API (http://jira-python.readthedocs.org/en/latest/).

когда я выполняю следующее:

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

есть что-то, что я, возможно, пропустил или делаю неправильно?

спасибо!

2 ответов


Я знаю, что я опоздал на этот ответ, но, надеюсь, это поможет кому-то вниз по дороге.


почему вы не должны отключить проверку

пока поворачивать проверку сертификата самое легкое "решение", оно это неразумно. Это по существу говорит, - Мне все равно, доверяю я тебе или нет, я все равно вышлю тебе всю свою информацию." Это открывает вас для атаки "человек в середине".

если вы подключаетесь к серверу Jira вашей компании, и у него есть сертификат для TLS / SSL, вы должны проверить против этого. Я бы спросил ваш ИТ-отдел, где этот сертификат. Наверное в каком-то корневом сертификате для вашей компании.

если вы подключаетесь к серверу в браузере Chrome (например) он должен показывать блокировку в левом углу адресной строки, если она защищена через TLS / SSL.

вы можете Right-Click that lock -> Details -> View Certificate в Chrome.

Итак, что я делать?

предоставьте необходимый сертификат напрямую.

jira-python использует Requests для HTTP stuff (см. документацию). И согласно запрос на документацию путь к файлу сертификата можно указать в verify.

таким образом, вы можете предоставить корневой сертификат для вашей компании в verify вот так:

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

если вы используете машину Windows (безопасное предположение?), что корень сертификат хранится в реестре и лучший способ сделать это с помощью wincertstore.


я столкнулся с аналогичной ошибкой проверки сертификата 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)