验证证书TLS/SSL服务器
本文关键字:SSL 服务器 TLS 证书 验证 | 更新日期: 2023-09-27 18:00:08
我一直在尝试创建一个从.crt加载证书的SSL服务器。我尝试了X509Certificate.CreateFromCertFile(@".'Secure'Certificate'" + 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中使用它。