#python #windows #ssl
#python #Windows #ssl
Вопрос:
Я использую ssl
модуль на python, в частности этот:
Большинство примеров использования этого показывают использование путей к файлам в качестве первых двух параметров, подобных этому:
context.load_cert_chain("/path/to/cert.pem", "/path/to/key.pem", password=password)
Что, если эти сертификаты хранятся в хранилище сертификатов Windows? (CA, Root и т.д.). Могу ли я по-прежнему извлекать, а затем использовать путь к файлу для перехода к вышеуказанному методу?
Ответ №1:
Краткий ответ: Это не так просто работает.
ssl
Модуль предлагает некоторый доступ к хранилищу сертификатов Windows через ssl.enum_certificates
, но он довольно ограничен и не предоставляет доступ к закрытому ключу (который может быть даже помечен как не подлежащий экспорту).
Хранилище сертификатов Windows автоматически используется для клиентских подключений для проверки сертификата сервера. Но вы не можете легко использовать его для создания контекста на стороне сервера.
Если вы хотите хранить ключи и сертификаты в хранилище сертификатов Windows, вам необходимо использовать Windows SSPI (SChannel) API для реализации уровня TLS. В этом случае модуль python ssl
не помогает. SSPI предоставляет API, аналогичный ssl.SSLObject
, который обертывает протокол OpenSSL MemoryBIO, поэтому теоретически можно было бы реализовать ssl.SSLObject
поверх API-интерфейсов Win32 вместо API-интерфейсов Openssl.