【问题标题】:Setting up a ssl server socket with signed certificate使用签名证书设置 ssl 服务器套接字
【发布时间】:2010-07-12 16:39:43
【问题描述】:

我正在尝试制作一个简单的服务器,它侦听端口并使用 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

【问题讨论】:

    标签: c# ssl x509certificate


    【解决方案1】:

    在表单中使用X509Certificate2

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

    您应该以 PKCS12 格式保存证书。见http://www.madboa.com/geek/openssl/#cert-pkcs12http://www.openssl.org/docs/apps/pkcs12.html

    【讨论】:

    • 我尝试过这样做:openssl req -x509 -nodes -days 365 -newkey rsa:1024 -keyout "temp\signkey.key" -out "temp\signkey.key" -config "openssl.cfg"openssl pkcs12 -export -out "temp\certificate.pfx" -in "temp\signkey.key" -name "NAME",但异常仍然存在。有什么想法吗?
    • @Christoph 您需要在导出过程中包含私钥,如下所示:openssl pkcs12 -export -out certificate.pfx -in certificate.cer -inkey certificate.key -name "SSL stream Certificate"-inkey 参数。
    猜你喜欢
    • 2013-11-13
    • 2017-05-08
    • 1970-01-01
    • 2011-02-06
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多