2015-06-22 3 views
0

Я пытаюсь подключиться к JIRA с помощью оболочки Python для интерфейса Rest, и я не могу заставить его работать вообще. Я читал все, что мог найти, поэтому это последнее средство.Python -> запрос Ошибка соединения с ошибкой сертификата не удалось

Я пробовал много вещей, в том числе

verify=False

, но ничего не работает до сих пор.

Самое странное в том, что с urllib.request он работает без сертификата SSL (это только некоторые внутренние CERT), но цель состоит в том, чтобы использовать обертку Python Jira, так что это не вариант ...

Я пробовал Python 3.4 и 2.7 ... получать отчаянные ...

Любые идеи?

Код очень прост:

import requests 
r = requests.get('https://jiratest.myurl.com/rest/api/2/serverInfo') 
print(r.content) 

Ошибка:

C:\Python34\python.exe C:/projects/jirascriptsx/delete_worklogs.py 
Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 544, in urlopen 
    body=body, headers=headers) 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 341, in _make_request 
    self._validate_conn(conn) 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 761, in _validate_conn 
    conn.connect() 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\connection.py", line 238, in connect 
    ssl_version=resolved_ssl_version) 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\util\ssl_.py", line 279, in ssl_wrap_socket 
    return context.wrap_socket(sock, server_hostname=server_hostname) 
    File "C:\Python34\lib\ssl.py", line 365, in wrap_socket 
    _context=self) 
    File "C:\Python34\lib\ssl.py", line 583, in __init__ 
    self.do_handshake() 
    File "C:\Python34\lib\ssl.py", line 810, in do_handshake 
    self._sslobj.do_handshake() 
ssl.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:\Python34\lib\site-packages\requests\adapters.py", line 370, in send 
    timeout=timeout 
    File "C:\Python34\lib\site-packages\requests\packages\urllib3\connectionpool.py", line 574, in urlopen 
    raise SSLError(e) 
requests.packages.urllib3.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) 

During handling of the above exception, another exception occurred: 

Traceback (most recent call last): 
    File "C:/projects/jirascriptsx/delete_worklogs.py", line 4, in <module> 
    r = requests.get('https://jiratest.uniqa.at/rest/api/2/serverInfo') 
    File "C:\Python34\lib\site-packages\requests\api.py", line 69, in get 
    return request('get', url, params=params, **kwargs) 
    File "C:\Python34\lib\site-packages\requests\api.py", line 50, in request 
    response = session.request(method=method, url=url, **kwargs) 
    File "C:\Python34\lib\site-packages\requests\sessions.py", line 465, in request 
    resp = self.send(prep, **send_kwargs) 
    File "C:\Python34\lib\site-packages\requests\sessions.py", line 573, in send 
    r = adapter.send(request, **kwargs) 
    File "C:\Python34\lib\site-packages\requests\adapters.py", line 431, in send 
    raise SSLError(e, request=request) 
requests.exceptions.SSLError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:600) 

Process finished with exit code 1 
+0

Вы пытаетесь открыть порт 8080 URL-адрес? –

+0

Возможный дубликат [Запросы Python, бросающие SSLError] (http://stackoverflow.com/questions/10667960/python-requests-throwing-up-sslerror) –

+0

Что должен делать порт? Ни одно из предложений другого вопроса не помогло (я прочитал это) – SebK

ответ

0

Существует проблема с нашей инфраструктурой, которая, кажется, чтобы выявить ошибку в модуле запросов, где проверка SSL игнорировать флаг не работает должным образом. Ни одно из решений, предлагаемых в любом из сообщений Stackoverflow, не работало.

Как обходной путь Я запускаю код непосредственно на сервере.

0

Если у вас есть файл сертификата (certificate.pem) и файл ключа (key.pem), то мы можем проверить подлинность как этот

cert=/path/to/certificate_file 
key_file=/path/to/key_file 
url=https://jiratest.myurl.com/rest/api/2/serverInfo 

with requests.session() as session: 
    session.cert=(cert,key_file) 
    session.auth=(username,base64.urlsafe_b64decode(password)) 
    response=session.get(url) 
if response.status_code == 200: 
    json_data = response.json() 
Смежные вопросы