首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> 關於.NET

WCF 分散式開發常見錯誤 (25):憑證必須擁有可進行金鑰交換的私鑰

     編輯:關於.NET

錯誤現象

The certificate 'CN=WCFHTTPS' must have a private key that is capable of key exchange. The process must have access rights for the private key.

原因

使用 makecert 建立憑證時未指定 -sky exchange,導致私鑰標記為「簽名」用途而非「金鑰交換」,WCF 傳輸/訊息安全需私鑰支援加密解密操作。此外,進程身分可能缺乏讀取私鑰權限。

解決方法

  1. 重建憑證並指定 exchange:
    makecert -sr localmachine -ss My -n "CN=MyServerCer" -sky exchange -pe -r
    
  2. 匯出含私鑰的 PFX 並安裝至信任存儲區(同錯誤 26 步驟 2-3)。
  3. 授予服務進程私鑰讀取權限:
    • MMC → 憑證(電腦帳戶)→ 個人 → 右鍵憑證 → 所有任務 → 管理私鑰 → 加入 IIS_IUSRS / 應用程式池身分 → 讀取權限。

常見誤區

  • 以為 -pe(私鑰可匯出)即代表可交換金鑰,實際需 -sky exchange。
  • 憑證安裝在 CurrentUser 而服務跑在 LocalSystem/NetworkService,導致找不到私鑰。

參考連結

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved