繁体   English   中英

服务器模式 SSL 必须使用具有关联私钥的证书 - 在 TLS 握手期间

[英]The server mode SSL must use a certificate with the associated private key - during TLS handshake

我有证书someCert.cer 我使用 MMC 实用程序将它导入到我的本地证书存储中。 我的 C# 应用程序可以使用以下代码访问它:

var store = new X509Store(StoreName.My, StoreLocation.CurrentUser);
X509Certificate2 certificate = null;
store.Open(OpenFlags.ReadOnly);
try
{
    var certificateCollection = store.Certificates.Find(X509FindType.FindByThumbprint, "THUMBPRINT", false);
    certificate = certificateCollection[0];
}
finally
{
    store.Close();
}

该应用程序公开 TCP 套接字,当我尝试使用客户端应用程序连接到它时,出现异常: The server mode SSL must use a certificate with the associated private key

事实上,我的证书的 PrivateKey 属性是空的。 我导入的证书不正确还是应该在将证书导入商店之前对其进行处理?

我的服务器身份验证代码如下所示:

stream.AuthenticateAsServerAsync(certificate, false, SslProtocols.Tls | SslProtocols.Tls11 | SslProtocols.Tls12, true);

对于正确的 tls 握手,服务器需要具有与嵌入在证书中的公钥配对的私钥。 当客户端连接时,它会显示证书。 这允许基于颁发机构的信任来验证服务器就是它所说的那个人。 客户端在握手期间将生成一个对称密码密钥,该密钥使用证书中的公钥为服务器加密。 服务器将使用私钥解密对称密钥。

我在这里过分简化了握手过程。 因此,对上述内容持保留态度。 (没有加密双关语意图)

在 Jesse 的评论和 Dave 的回答之间,我可以确定我以某种方式创建并安装了某种部分证书,对它进行了排序。

我已经使用makecert.exe制作了一个证书,并以某种方式设法安装它并将其加载到 Kestrel 中,但是当来自 Chrome 的请求进来时它失败了。

我找不到pvk2pfx.exe的副本,以便从makecert.exe踢出的两个文件中制作 PFX 文件,所以我只是尝试在没有它的情况下继续。

在失败并阅读上述内容之后,我认为 PFX 步骤是强制性的。 所以我使用了经典的 PowerShell 4(PS6 Core 不会加载模块):

> $cert = New-SelfSignedCertificate -certstorelocation cert:\currentuser\my -dnsname windows
> $pwd = ConvertTo-SecureString -String 'password1234' -Force -AsPlainText
> $path = 'cert:\currentuser\my\' + $cert.thumbprint
> Export-PfxCertificate -cert $path -FilePath c:\DATA\~Scrap\windows.pfx -Password $pwd

归功于https://medium.com/the-new-control-plane/generating-self-signed-certificates-on-windows-7812a600c2d8

Tbh,我最初做了一半。 我在第一个在我的商店中生成证书的命令后停止了,但是当我从 Chrome 命中时,给了我一个与 Kestrel 堆栈不同的奇怪错误。 同样,出于某种原因需要 PFX 步骤。

目前我找不到信任签名者的方法,但 Chrome 让我继续,所以当我不太累的时候我会解决这个问题。

你是如何创建证书的? 创建证书时,还使用私钥对其进行签名,这正是您所需要的。 如果您已导出证书,您可能可以选择在某个时候提供密码。 如果导出时未提供密码,则导出证书时不带私钥。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM