验证证书TLS/SSL服务器



我一直在尝试创建一个从.crt加载证书的SSL服务器。我尝试了X509Certificate.CreateFromCertFile(@".SecureCertificate" + CertName + ".crt");和cert.import,但都不起作用。在这两种情况下,我都会遇到一个问题,即"服务器模式SSL必须使用带有关联私钥的证书"。钥匙就在那儿!我的目录:

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

证书是使用OpenSSL创建的。

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

服务器模式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的证书索引中添加sub.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上的web服务中读取.p12文件,以及如何创建x509证书并在MSDN上的sslstream中使用它。

最新更新