C# 验证证书TLS/SSL服务器

C# 验证证书TLS/SSL服务器,c#,.net,networking,ssl,C#,.net,Networking,Ssl,我一直在尝试创建一个SSL服务器,从.crt加载证书。我已经尝试了这两个X509Certificate.CreateFromCertFile(@“\Secure\Certificate\”+CertName+“.crt”)和cert.import,两者都不起作用。在这两方面,我都遇到了一个问题,即“服务器模式SSL必须使用带有相关私钥的证书”。钥匙在那儿!我的目录: Secure/ Certificate/ ZeusHTTP.crt ZeusHTTP.cs

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

Secure/
    Certificate/
        ZeusHTTP.crt
        ZeusHTTP.csr
        ZeusHTTP.key
    Plugins/
        ...
证书是用OpenSSL创建的

一个简单的阅读告诉我们,您应该使用通常具有文件后缀p7b的pkcs7文件。您需要将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-----
第四

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

对于您的代码,我相信您需要将其加载到
Certificate2
而不是
证书中



另请参见堆栈溢出和MSDN。

如果指定绝对路径怎么办?旁注:我已经删除了“搜索了很多”/“谢谢“文章中的文字-尽量不要将其添加到文章中,因为他们很少提供任何额外的细节。@AlexeiLevenkov我确实尝试过。然而,我确实得到了一个有效的答案。另外,我把我搜索了很多,因为我不喜欢不搜索就提问的人,这可能看起来是这样的。你的问题已经显示了一些研究,包括足够的细节来诊断问题。“您是否搜索过任何内容”注释通常在问题显示没有努力/详细信息时出现-添加“搜索过很多”不会突然出现使没有详细信息的问题成为一个好问题,也不会显示搜索答案的努力。p7b文件中不能包含带私钥的证书。您的回答无法解决OP的问题。此外,文档也不正确(有时会出现这种情况,是的)-“可以使用任何PKCS7签名文件,包括Authenticode签名的.pfx文件。”-Authenticode使用PKCS#7进行签名,但是.pfx不是“Authenticode”,而是PKCS#12。
openssl pkcs12 -export -in ZeusHTTP-chain.crt -inkey ZeusHTTP.key -out ZeusHTTP.p12