2010-07-12 24 views
5

Estoy intentando hacer un servidor simple que escuche en un puerto y se autentique con ssl. Tengo archivosConfiguración de un socket de servidor ssl con certificado firmado

server.crt 
server.key 
my-ca.crt 

obtenidos con un tutorial openssl (http://www.vanemery.com/Linux/Apache/apache-SSL.html). my-ca.crt es mi propio certificado de CA, server.crt contiene el certificado de servidor x509 (firmado con my-ca.crt) y server.key es la clave privada correspondiente.

Ahora no sé cómo cargar estos tres archivos en C#; Tengo algo así como

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

que no funciona (I obtener una

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

) pero no tengo ni idea de cómo añadir el server.key y/o my-ca.crt.

Respuesta

3

Para utilizar X509Certificate2 en forma

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

que debe guardar el certificado en formato PKCS12. Ver http://www.madboa.com/geek/openssl/#cert-pkcs12 y http://www.openssl.org/docs/apps/pkcs12.html

+0

he tratado de hacerlo de esta manera: ' openssl req -x509 -nodes -days 365 -newkey RSA: 1024 -keyout "temp \ signkey.key" salida privado "temp \ signkey.key "-config" openssl.cfg "' y 'openssl pkcs12 -export -out" temp \ certificate.pfx "-in" temp \ signkey.key "-name" NAME "' pero la excepción permanece. ¿Alguna idea? –

+0

@Christoph necesita incluir la clave privada en el proceso de exportación de la siguiente manera: 'openssl pkcs12 -export -out certificate.pfx -in certificate.cer -inkey certificate.key -name" SSL stream Certificado "' con el parámetro '-inkey' . – Joseph

Cuestiones relacionadas