Я создаю соединение SSL
с помощью OpenSSL API. Как мы знаем, при рукопожатии SSL серия аутентификаций сертификатов происходит для сервера или клиента. Теперь для проверки подлинности сертификата клиента сертификат клиента и связанный с ним закрытый ключ хранятся в Windows Certificate Store
.
Этот сертификат с private key
импортируется в хранилище после их объединения в формат pfx
, а затем этот файл pfx
импортируется в хранилище сертификатов Windows. Теперь при импорте этого pfx-файла с помощью оснастки mmc
он спрашивает, хотим ли мы сделать закрытый ключ exportable
или нет. Теперь на сцену выходит OpenSSL для создания SSL-соединения.
Для этого нам нужно создать объект SSL_CTX
, в который загружены все свойства, связанные с соединением. Теперь для загрузки закрытого ключа из хранилища сертификатов Windows в объект SSL_CTX
я отметил этот закрытый ключ exportable
, который я экспортирую с помощью Crypto API
. Но я думаю, что помечать закрытый ключ как экспортируемый не имеет никакого смысла, это нарушение безопасности.
Поскольку закрытый ключ всегда будет помечен Non-Exportable
, существует ли какой-либо метод или API OpenSSL и т. д., который может напрямую считывать и загружать закрытый ключ из хранилища сертификатов Windows в объект SST_CTX для установления соединения SSL.
Я точно знаю, что есть какой-то способ, чтобы это сработало, но я не понимаю. Я много искал это, но не нашел нужной вещи.
Обобщенный вопрос. Хранилище сертификатов содержит множество сертификатов и связанных закрытых ключей. Как осуществляется доступ к сертификатам и закрытым ключам при установлении соединения SSL?
EDIT: я прошел через API механизма openssl под названием
`EVP_PKEY *ENGINE_load_private_key(ENGINE *e, const char *key_id,
UI_METHOD *ui_method, void *callback_data);`
Теперь, как я могу получить этот key_id
закрытого ключа, а также я думаю, что этот API внутренне называется криптографическим API CryptExportKey
, и этот API терпит неудачу, если закрытый ключ помечен non-exportable
.
<insert reason here>
), то это немного другая проблема. . - person jww   schedule 01.01.2016SSL_CTX_use_PrivateKey
API openssl. - person User1234   schedule 02.01.2016SSL_CTX_use_PrivateKey
(openssl api). Теперь для этого механизма capi предоставляетсяcapi_load_privkey' that internally exports the
открытый ключ API, а неprivate key
. Я не нахожу никакого другого API-интерфейса capi engine, который позволяет нам использовать закрытый ключ из самого хранилища без его фактического экспорта. - person User1234   schedule 02.01.2016