Я использую 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, как этот ? Если так, как я могу заставить это работать?