2013-03-27 2 views
8

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

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

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

Любое понимание или совет будут очень признательны.

+0

Какая милая головоломка, я все еще пытаюсь найти там вопрос на C++. –

+0

Справедливая точка, я удалил тег –

ответ

8

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

Certificate with a private key


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

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

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

+0

Что вы будете делать, когда получите ошибку? –

+0

Я получил эту ошибку в тестовом сертификате. Итак, я исправил сертификат. Если у вас есть ошибка, переиздайте ее. – doptimusprime

+0

Обратите внимание, что он создает файл, даже если есть проблема. Я пропустил сообщение об ошибке во время объединения сертификата с файлом закрытого ключа. Он не нашел один из файлов. –