Как импортировать файл ключа OpenSSL в хранилище сертификатов Windows

У меня есть сертификат X.509, сгенерированный OpenSSL в формате PEM, и связанный с ним файл ключа. Этот сертификат необходим для аутентификации при подключении к серверу-прототипу. Это отлично работает на Linux. Я использовал Microsoft SChannel API для управления соединениями SSL/TLS на платформах Windows, но я хочу использовать тот же тестовый сертификат. Я могу щелкнуть правой кнопкой мыши по файлу сертификата и импортировать его в свое хранилище сертификатов, но я считаю, что закрытый ключ не импортируется вместе с ним (даже если я объединил их в один файл).

Когда я запускаю код SChannel, я получаю ошибку 'SEC_E_NO_CREDENTIALS', когда инициирую контекст безопасности (через InitializeSecurityContext). Я подозреваю, что это означает, что закрытый ключ отсутствует.

Кто-нибудь знает, как проверить наличие или отсутствие закрытого ключа в сертификате, который находится в Личном (или "Моем") хранилище сертификатов, доступ к которому осуществляется через "certmgr.msc"?. Можно ли импортировать новый файл ключа для сертификата в магазине?

Любое понимание или совет будет высоко ценится.

1 ответ

Решение

Чтобы проверить, установлен ли закрытый ключ для сертификата, дважды щелкните значок сертификата в certmgr.msc. Если у него есть закрытый ключ, он покажет сообщение на странице свойств, что у вас есть закрытый ключ, в противном случае он не будет давать ссылки на закрытый ключ.

Сертификат с закрытым ключом


Чтобы импортировать сертификат с его закрытым ключом, вы можете сделать следующее:

  1. Упакуйте сертификат и его закрытый ключ в файл PKCS #12 или PFX, используя openssl pkcs12. Вот пример.
  2. Импортируйте этот файл PKCS #12 или PFX в хранилище сертификатов.

Обратите внимание, что при импорте файла pfx могут появляться ошибки, такие как "Этот файл недопустим для использования в качестве следующего: Обмен личной информацией". Эта ошибка была вызвана отсутствием в сертификате соответствующих расширений X.509 v3 (таких как поля использования (цифровая подпись и т. Д.))

Другие вопросы по тегам