2010-07-12 27 views
5

Tôi đang cố gắng tạo một máy chủ đơn giản có thể nghe trên cổng và xác thực bằng ssl. Tôi có các tệpThiết lập ổ cắm máy chủ ssl với chứng chỉ đã ký

server.crt 
server.key 
my-ca.crt 

thu được với hướng dẫn openssl (http://www.vanemery.com/Linux/Apache/apache-SSL.html). my-ca.crt là chứng chỉ CA của riêng tôi, server.crt chứa chứng chỉ máy chủ x509 (ký với my-ca.crt) và server.key là khóa riêng tương ứng.

Tôi hiện không biết cách tải ba tệp này trong C#; Tôi có một cái gì đó giống như

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

mà không làm việc (tôi nhận được một

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

) nhưng tôi không có đầu mối làm thế nào để thêm server.key và/hoặc my-ca.crt.

Trả lời

3

Để sử dụng X509Certificate2 theo hình thức

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

bạn nên lưu giấy chứng nhận ở định dạng pkcs12. Xem http://www.madboa.com/geek/openssl/#cert-pkcs12http://www.openssl.org/docs/apps/pkcs12.html

+0

tôi đã cố gắng để làm điều đó như thế này: 'openssl req -x509 -nodes -days 365 -newkey rsa: 1024 -keyout "temp \ signkey.key" out "temp \ signkey.key "-config" openssl.cfg "' và 'openssl pkcs12 -export -out" temp \ certificate.pfx "-in" temp \ signkey.key "-name" NAME "' nhưng ngoại lệ vẫn còn. Bất kỳ ý tưởng? –

+0

@Christoph bạn cần bao gồm khóa cá nhân trong quá trình xuất như sau: 'openssl pkcs12 -export -out certificate.pfx -in certificate.cer -inkey certificate.key -name" dòng SSL Chứng chỉ "' với tham số '-inkey' . – Joseph

Các vấn đề liên quan