簡體   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