2010-07-12 2 views
5

Я пытаюсь создать простой сервер, который прослушивает порт и аутентифицируется с помощью ssl. У меня есть файлыНастройка сокета ssl-сервера с подписанным сертификатом

server.crt 
server.key 
my-ca.crt 

, полученные с помощью OpenSSL учебника (http://www.vanemery.com/Linux/Apache/apache-SSL.html). my-ca.crt - мой собственный сертификат CA, server.crt содержит сертификат сервера x509 (подписанный с my-ca.crt), а server.key - это соответствующий закрытый ключ.

Теперь я не знаю, как загрузить эти три файла в C#; У меня есть что-то вроде

serverCertificate = new X509Certificate2("server.crt", "secret_password"); 
sslStream.AuthenticateAsServer(serverCertificate, false, SslProtocols.Tls, true); 

, который не работает (я получаю

Unhandled Exception: System.NotSupportedException: The server mode SSL must use a certificate with the associated private key. 

) , но я понятия не имею, как добавить server.key и/или my-ca.crt.

ответ

3

Чтобы использовать X509Certificate2 в виде

serverCertificate = new X509Certificate2("server.pfx", "secret_password"); 

вы должны сохранить сертификат в формате PKCS12. См http://www.madboa.com/geek/openssl/#cert-pkcs12 и http://www.openssl.org/docs/apps/pkcs12.html

+0

я пытался сделать это следующим образом: 'OpenSSL REQ -x509 -nodes -days 365 -newkey ЗГА: 1024 -keyout "TEMP \ signkey.key" отъезда«TEMP \ signkey.key "-config" openssl.cfg "и ' openssl pkcs12 -export -out "temp \ certificate.pfx" -in "temp \ signkey.key" -name "NAME" ', но исключение остается. Есть идеи? –

+0

@Christoph вам нужно включить закрытый ключ в процесс экспорта следующим образом: 'openssl pkcs12 -export -out certificate.pfx -in certificate.cer -inkey certificate.key -name" SSL-поток Сертификат "' с параметром '-inkey' , – Joseph

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