Загрузка сертификатов в ssl с хранилищем сертификатов, а не путем к файлу; с питоном - PullRequest
0 голосов
/ 18 марта 2019

Я использую модуль ssl в Python, а именно:

SSLContext.load_cert_chain

Большинство примеров использования этого шоу с использованием путей к файлам в качестве первых двух параметров, подобных этому:

context.load_cert_chain("/path/to/cert.pem", "/path/to/key.pem", password=password)

Что если эти сертификаты хранятся в хранилище сертификатов Windows? (CA, Root и т. Д.). Могу ли я получить и использовать путь к файлу, чтобы перейти к описанному выше методу?

1 Ответ

1 голос
/ 19 марта 2019

Краткий ответ: это не работает легко.

Модуль ssl предлагает некоторый доступ к хранилищу сертификатов Windows через ssl.enum_certificates, но он довольно ограничен и не предоставляет доступа к закрытому ключу.(который может даже быть помечен как неэкспортируемый).

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

Если вы хотите хранить ключи и сертификаты в хранилище сертификатов Windows, вам нужно использовать API SSPI (SChannel) Windows для реализации уровня TLS.Модуль python ssl не помогает в этом случае.SSPI предоставляет API, аналогичный ssl.SSLObject, который охватывает протокол OpenSSL MemoryBIO, поэтому теоретически можно реализовать ssl.SSLObject поверх API Win32 вместо API Openssl.

https://docs.microsoft.com/en-us/windows/desktop/secauthn/creating-a-secure-connection-using-schannel

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