Пытаюсь разобраться с SSL-сертификатами моей компании в блокноте jupyter

Пройдя некоторое глубокое обучение с помощью pytorch в моей компании, у меня в настоящее время возникают проблемы с системой ИТ-безопасности моей компании, несмотря на то, что они предоставили мне файлы сертификатов, которые я объединил в файл .pem

У меня нет опыта работы с сетями (SSL, ...), и, несмотря на то, что некоторое время просматривал, я не мог найти никакого решения, подходящего для моего случая.

Если я запустил следующий код:

import torchvision
from torchvision import datasets, models, transforms

model = models.densenet161(pretrained=True)

Я получу следующий код ошибки:

Error                                     Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname)
    443             try:
--> 444                 cnx.do_handshake()
    445             except OpenSSL.SSL.WantReadError:

C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\SSL.py in do_handshake(self)
   1906         result = _lib.SSL_do_handshake(self._ssl)
-> 1907         self._raise_ssl_error(self._ssl, result)
   1908 

C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\SSL.py in _raise_ssl_error(self, ssl, result)
   1638         else:
-> 1639             _raise_current_error()
   1640 

C:\ProgramData\Anaconda3\lib\site-packages\OpenSSL\_util.py in exception_from_error_queue(exception_type)
     53 
---> 54     raise exception_type(errors)
     55 

Error: [('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')]

During handling of the above exception, another exception occurred:

SSLError                                  Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    599                                                   body=body, headers=headers,
--> 600                                                   chunked=chunked)
    601 

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in _make_request(self, conn, method, url, timeout, chunked, **httplib_request_kw)
    342         try:
--> 343             self._validate_conn(conn)
    344         except (SocketTimeout, BaseSSLError) as e:

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in _validate_conn(self, conn)
    848         if not getattr(conn, 'sock', None):  # AppEngine might not have  `.sock`
--> 849             conn.connect()
    850 

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connection.py in connect(self)
    355             server_hostname=hostname,
--> 356             ssl_context=context)
    357 

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\util\ssl_.py in ssl_wrap_socket(sock, keyfile, certfile, cert_reqs, ca_certs, server_hostname, ssl_version, ciphers, ssl_context, ca_cert_dir)
    358         if HAS_SNI and server_hostname is not None:
--> 359             return context.wrap_socket(sock, server_hostname=server_hostname)
    360 

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\contrib\pyopenssl.py in wrap_socket(self, sock, server_side, do_handshake_on_connect, suppress_ragged_eofs, server_hostname)
    449             except OpenSSL.SSL.Error as e:
--> 450                 raise ssl.SSLError('bad handshake: %r' % e)
    451             break

SSLError: ("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')])",)

During handling of the above exception, another exception occurred:

MaxRetryError                             Traceback (most recent call last)
C:\ProgramData\Anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    448                     retries=self.max_retries,
--> 449                     timeout=timeout
    450                 )

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\connectionpool.py in urlopen(self, method, url, body, headers, retries, redirect, assert_same_host, timeout, pool_timeout, release_conn, chunked, body_pos, **response_kw)
    637             retries = retries.increment(method, url, error=e, _pool=self,
--> 638                                         _stacktrace=sys.exc_info()[2])
    639             retries.sleep()

C:\ProgramData\Anaconda3\lib\site-packages\urllib3\util\retry.py in increment(self, method, url, response, error, _pool, _stacktrace)
    397         if new_retry.is_exhausted():
--> 398             raise MaxRetryError(_pool, url, error or ResponseError(cause))
    399 

MaxRetryError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Max retries exceeded with url: /models/densenet161-8d451a50.pth (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')])")))

During handling of the above exception, another exception occurred:

SSLError                                  Traceback (most recent call last)
<ipython-input-2-8056c2401db5> in <module>
      1 # load model
----> 2 model = models.densenet161(pretrained=True)
      3 print(model)

C:\ProgramData\Anaconda3\lib\site-packages\torchvision\models\densenet.py in densenet161(pretrained, **kwargs)
    114         pattern = re.compile(
    115             r'^(.*denselayer\d+\.(?:norm|relu|conv))\.((?:[12])\.(?:weight|bias|running_mean|running_var))$')
--> 116         state_dict = model_zoo.load_url(model_urls['densenet161'])
    117         for key in list(state_dict.keys()):
    118             res = pattern.match(key)

C:\ProgramData\Anaconda3\lib\site-packages\torch\utils\model_zoo.py in load_url(url, model_dir, map_location, progress)
     64         sys.stderr.write('Downloading: "{}" to {}\n'.format(url, cached_file))
     65         hash_prefix = HASH_REGEX.search(filename).group(1)
---> 66         _download_url_to_file(url, cached_file, hash_prefix, progress=progress)
     67     return torch.load(cached_file, map_location=map_location)
     68 

C:\ProgramData\Anaconda3\lib\site-packages\torch\utils\model_zoo.py in _download_url_to_file(url, dst, hash_prefix, progress)
     70 def _download_url_to_file(url, dst, hash_prefix, progress):
     71     if requests_available:
---> 72         u = urlopen(url, stream=True)
     73         file_size = int(u.headers["Content-Length"])
     74         u = u.raw

C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py in get(url, params, **kwargs)
     73 
     74     kwargs.setdefault('allow_redirects', True)
---> 75     return request('get', url, params=params, **kwargs)
     76 
     77 

C:\ProgramData\Anaconda3\lib\site-packages\requests\api.py in request(method, url, **kwargs)
     58     # cases, and look like a memory leak in others.
     59     with sessions.Session() as session:
---> 60         return session.request(method=method, url=url, **kwargs)
     61 
     62 

C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py in request(self, method, url, params, data, headers, cookies, files, auth, timeout, allow_redirects, proxies, hooks, stream, verify, cert, json)
    531         }
    532         send_kwargs.update(settings)
--> 533         resp = self.send(prep, **send_kwargs)
    534 
    535         return resp

C:\ProgramData\Anaconda3\lib\site-packages\requests\sessions.py in send(self, request, **kwargs)
    644 
    645         # Send the request
--> 646         r = adapter.send(request, **kwargs)
    647 
    648         # Total elapsed time of the request (approximately)

C:\ProgramData\Anaconda3\lib\site-packages\requests\adapters.py in send(self, request, stream, timeout, verify, cert, proxies)
    512             if isinstance(e.reason, _SSLError):
    513                 # This branch is for urllib3 v1.22 and later.
--> 514                 raise SSLError(e, request=request)
    515 
    516             raise ConnectionError(e, request=request)

SSLError: HTTPSConnectionPool(host='download.pytorch.org', port=443): Max retries exceeded with url: /models/densenet161-8d451a50.pth (Caused by SSLError(SSLError("bad handshake: Error([('SSL routines', 'ssl3_get_server_certificate', 'certificate verify failed')])")))
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
496
1

Ответы 1

Чтобы исправить ошибку сертификата ssl, замените https на http

import torchvision
from torchvision.models.detection.densenet import model_urls
model_urls['densenet161'] = model_urls['densenet161'].replace('https://','http://')
model = models.densenet161(pretrained=True)

Другие вопросы по теме