Использование SSL-сертификата IIS Express Dev для запроса python - PullRequest
0 голосов
/ 19 января 2020

Я использую IIS Manager для экспорта самозаверяющего сертификата разработки IIS Express (экспорт в виде файла .pfx)

Затем я использую следующий код в python для преобразования файла .pfx в Файл .pem, который я могу использовать в сеансе.

@contextlib.contextmanager
def pfx_to_pem(pfx_path, pfx_password):
  # Decrypts the .pfx file to be used with requests.
  with tempfile.NamedTemporaryFile(suffix='.pem', delete=False) as t_pem:
     pfx = open(pfx_path, 'rb').read()
     p12 = OpenSSL.crypto.load_pkcs12(pfx, pfx_password)
     t_pem.write(OpenSSL.crypto.dump_privatekey(OpenSSL.crypto.FILETYPE_PEM, p12.get_privatekey()))
     t_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, p12.get_certificate()))
     ca = p12.get_ca_certificates()
     if ca is not None:
         for cert in ca:
             t_pem.write(OpenSSL.crypto.dump_certificate(OpenSSL.crypto.FILETYPE_PEM, cert))
     t_pem.close()
     yield t_pem.name


def start_server():
  with pfx_to_pem(pfx_path, 'localhost') as t_pem:
    ssl_context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
    ssl_context.load_cert_chain(t_pem)
    pem_path = t_pem

  session = Session()
  session.verify = pem_path

Когда я делаю запрос, я получаю ошибку:

SSLError: HTTPSConnectionPool (host = 'localhost', port = 44300): максимальное количество попыток превышено с помощью url: /signalr/negotiate?connectionData=%5B%7B%22name%22%3A+%22ValuationHub%22%7D%5D&clientProtocol=1.5 (вызвано SSLError (SSLError ("плохое рукопожатие: ошибка ([('Подпрограммы SSL', 'tls_process_server_certificate', 'сбой проверки сертификата')],) ",),))

Возможно ли повторно использовать сертификат IIS dev, как этот ? Если так, как я могу заставить это работать?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...