验证证书TLS / SSL服务器

时间:2014-04-25 23:59:42

标签: c# .net networking ssl

我一直在尝试创建一个从.crt加载证书的SSL服务器。我已经尝试了X509Certificate.CreateFromCertFile(@".\Secure\Certificate\" + CertName + ".crt");和cert.import,但都不起作用。在两者上,我都会遇到一个问题"服务器模式SSL必须使用带有相关私钥的证书"。关键在那里!我的目录:

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

证书是使用OpenSSL创建的。

2 个答案:

答案 0 :(得分:1)

简单阅读the docs告诉我们您应该使用通常具有文件后缀p7b的pkcs7文件。您需要将OpenSSL证书转换为此格式,或者找到可以从头开始生成一个的实用程序。

答案 1 :(得分:0)

  

服务器模式SSL必须使用带有相关私钥的证书“。密钥就在那里......

正如其他人所说,它们必须在同一个文件中。以下是执行此操作的步骤。

<强>第一

ZeusHTTP.crt复制到ZeusHTTP-chain.crt

cp ZeusHTTP.crt ZeusHTTP-chain.crt

<强>第二

打开ZeusHTTP-chain.crt并确保其所有验证服务器证书所需的中间证书。所以你将拥有2个或更多证书:

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

根据需要添加证书。例如,如果您获得免费的Startcom证书,则需要添加StartSSL's Index of Certssub.class1.server.ca.pem中间版。

需要发送所有证书才能解决PKI中的“哪个目录”问题。它是PKI中一个众所周知的问题,实际上它意味着客户端不知道去哪里获取缺少的中间证书。

<强>第三

执行以下操作以生成PKCS 12文件:

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

<强>四

最后,在IIS上安装证书作为测试。

对于您的代码,我认为您需要将其加载到Certificate2而不是Certificate


另请参阅Stack Overflow上的How to read a .p12 file in my web service和MSDN上的how to create x509 certificate and use it in sslstream