2014-04-25 5 views
1

Я пытаюсь создать SSL-сервер, который загружает сертификат с .crt. Я пробовал и X509Certificate.CreateFromCertFile(@".\Secure\Certificate\" + CertName + ".crt");, и cert.import, и ни один из них не работает. В обоих случаях возникает вопрос: «Режим сервера SSL должен использовать сертификат с соответствующим закрытым ключом». И ключ есть! Мой каталог:Проверка сертификата TLS/SSL-сервер

Secure/ 
    Certificate/ 
     ZeusHTTP.crt 
     ZeusHTTP.csr 
     ZeusHTTP.key 
    Plugins/ 
     ... 

Сертификаты создаются с использованием OpenSSL.

+0

Что делать, если вы укажете абсолютный путь?Боковое примечание: я удалил текст «искали alot»/«спасибо» из вашего поста - постарайтесь не добавлять его в свои сообщения, поскольку они редко дают какие-либо дополнительные данные. –

+0

@AlexeiLevenkov Я действительно пытался это сделать. Однако я получил ответ, который сработал. Кроме того, я поставил, что я много искал, потому что мне не нравятся люди, которые просят без поиска, и, возможно, это было так. – Zeusoflightning125

+0

Ваш вопрос показывает некоторое исследование уже и содержит достаточно деталей для диагностики проблемы. «Вы обыскали что-нибудь», комментарий обычно делается, когда вопрос не показывает никаких усилий/деталей - добавление «искал много» не собирается внезапно задавать вопрос без подробностей и не показывать усилия в поиске ответа. –

ответ

1

Прост прочитанный the docs говорит нам, что вы должны использовать файл pkcs7, который обычно имеет суффикс файла p7b. Вам нужно либо преобразовать ваш сертификат OpenSSL в этот формат, либо найти утилиту, которая может сгенерировать ее с нуля.

+1

Сертификат с закрытым ключом не может содержаться в файле p7b. Ваш ответ не решит проблему OP. –

+1

Кроме того, документы являются неправильными (иногда это бывает, да) - «Любой подписанный файл PKCS7 может использоваться, включая подписанный Authenticode файл .pfx». - Authenticode использует PKCS # 7 для подписи, но .pfx не является «Authenticode», а PKCS # 12. –

0

Режим сервера SSL должен использовать сертификат с соответствующим закрытым ключом». И ключ есть ...

Как другие заявили, что они должны быть в том же файле. Вот шаги, чтобы сделать это

Первый

Копия ZeusHTTP.crt в ZeusHTTP-chain.crt:.

cp ZeusHTTP.crt ZeusHTTP-chain.crt 

Второй

Open ZeusHTTP-chain.crt и убедитесь, что он имеет все Промежуточные сертификаты, необходимые для проверки сертификата сервера. Таким образом, у вас будет два или более сертификата:

-----BEGIN CERTIFICATE----- 
<server certificate> 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
<intermediate certificate> 
-----END CERTIFICATE----- 
-----BEGIN CERTIFICATE----- 
<intermediate certificate> 
-----END CERTIFICATE----- 

Добавить сертификаты по мере необходимости. Например, если у вас есть бесплатный сертификат Startcom, вам необходимо добавить sub.class1.server.ca.pem промежуточный от StartSSL's Index of Certs.

Отправка всех сертификатов необходима для решения проблемы «какой директории» в PKI. Его хорошо известная проблема в PKI, и, по сути, это означает, что клиент не знает, куда идти, чтобы получить отсутствующие промежуточные сертификаты.

Третий

Выполните следующие действия для создания файла PKCS 12:

openssl pkcs12 -export -in ZeusHTTP-chain.crt -inkey ZeusHTTP.key -out ZeusHTTP.p12 

Четвертый

Наконец, установить сертификат на IIS в качестве теста.

Для вашего кода, я считаю, вам необходимо загрузить его в Certificate2, а не Certificate.


Также см How to read a .p12 file in my web service на переполнение стека и how to create x509 certificate and use it in sslstream на MSDN.

Смежные вопросы