我正在嘗試在 Azure 應用服務的 Web 作業中實體化 X509Certificate2 物件。該證書是一個 PFX 檔案。
當我嘗試像這樣實體化時,它無法在 WS 呼叫中使用該物件:
new X509Certificate2(byteArray, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.UserKeySet | X509KeyStorageFlags.EphemeralKeySet)
失敗,我的意思是它開始拋出:
System.Net.WebException: The request was aborted: Could not create SSL/TLS secure channel.
但是當我這樣嘗試時,WS 作業正常:
new X509Certificate2(byteArray, password, X509KeyStorageFlags.MachineKeySet | X509KeyStorageFlags.UserKeySet)
唯一的區別是X509KeyStorageFlags.EphemeralKeySet的用戶。該應用程式在 .Net Framework 4.7.2 上運行。有人知道為什么會這樣嗎?
一點解釋:我們在應用服務中遇到了磁盤空間問題,我們在一些文章和一些 SO 問題/答案中閱讀了這可能是由于 Windows 將所有證書寫入磁盤的事實引起的,從而占用大量空間。
這個問題就是一個例子。
uj5u.com熱心網友回復:
SslStream, 在 Windows 上,不能使用EphemeralKeySet鍵。根本原因是 Windows 不在行程內執行 TLS,而是在不同的行程中執行所有加密操作。他們當前的功能不會嘗試將臨時密鑰匯出/傳輸到其他行程,因此它在另一端失敗并顯示“我找不到私鑰”。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/329476.html
