HOW TO:變更 X.509 憑證私密金鑰的密碼編譯提供者

本主題將說明如何變更用於提供 X.509 憑證之私密金鑰的密碼編譯提供者,以及如何將提供者整合至 Windows Communication Foundation (WCF) 安全性架構中。如需有關使用憑證的詳細資訊,請參閱使用憑證

WCF 安全性架構提供一種方法,以引入如 HOW TO:建立自訂權杖 中所述新的安全性權杖型別。也可以使用自訂權杖來取代現有由系統提供的權杖型別。

在本主題中,系統提供的 X.509 安全性權杖會由自訂 X.509 權杖取代,為憑證私密金鑰提供不同的實作。在實際的私密金鑰是由與預設 Windows 密碼編譯提供者不同的密碼編譯提供者所提供的案例中,這十分有用。替代密碼編譯提供者的其中一個範例是硬體安全性模組,它執行所有私密金鑰相關密碼編譯作業,且不會將私密金鑰儲存在記憶體中,因而增強系統的安全性。

下列範例僅供示範之用。它不會取代預設的 Windows 密碼編譯提供者,但會顯示可以整合此類提供者之處。

程序

每個具有相關安全性金鑰的安全性權杖都必須實作 SecurityKeys 屬性,它會從安全性權杖執行個體傳回金鑰的集合。如果權杖是 X.509 安全性權杖,集合就會包含 X509AsymmetricSecurityKey 類別的單一執行個體,表示與憑證有關聯的公開和私密金鑰。如果要取代用於提供憑證金鑰的預設密碼編譯提供者,請建立這個類別的新實作。

建立自訂 X.509 非對稱金鑰

  1. 定義衍生自 X509AsymmetricSecurityKey 類別的新類別。

  2. 覆寫 KeySize 唯讀屬性。這個屬性會傳回憑證之公開/私密金鑰組的實際金鑰大小。

  3. 覆寫 DecryptKey 方法。這個方法是由 WCF 安全性架構所呼叫,以使用憑證的私密金鑰來解密對稱金鑰 (金鑰之前是使用憑證的公開金鑰來加密)。

  4. 覆寫 GetAsymmetricAlgorithm 方法。這個方法是由 WCF 安全性架構所呼叫,以取得 AsymmetricAlgorithm 類別的執行個體,表示憑證之私密或公開金鑰的密碼編譯提供者,這要視傳遞至方法的參數而定。

  5. 選擇項,覆寫 GetHashAlgorithmForSignature 方法。如果需要 HashAlgorithm 類別的不同實作,請覆寫這個方法。

  6. 覆寫 GetSignatureFormatter 方法。這個方法會傳回與憑證私密金鑰有關聯之 AsymmetricSignatureFormatter 類別的執行個體。

  7. 覆寫 IsSupportedAlgorithm 方法。這個方法是用於指出安全性金鑰實作是否支援特定的密碼編譯演算法。

下列程序將示範如何整合在上述程序中建立的自訂 X.509 非對稱安全性金鑰實作與 WCF 安全性架構,以便取代系統提供的 X.509 安全性權杖。

使用自訂的 X.509 非對稱安全性金鑰權杖來取代系統提供的 X.509 安全性權杖

  1. 請建立自訂 X.509 安全性權杖,它會傳回自訂 X.509 非對稱安全性金鑰而非系統提供的安全性金鑰,如下列範例所示。如需有關自訂安全性權杖的詳細資訊,請參閱 HOW TO:建立自訂權杖

  2. 請建立會傳回自訂 X.509 安全性權杖的自訂安全性權杖提供者,如範例所示。如需自訂安全性權杖提供者的詳細資訊,請參閱HOW TO:建立自訂安全性權杖提供者

  3. 如果自訂安全性金鑰需要用在啟動器端,請建立自訂用戶端安全性權杖管理員和自訂用戶端認證類別,如下列範例所示。如需有關自訂用戶端認證和用戶端安全性權杖管理員的詳細資訊,請參閱HOW TO:建立自訂用戶端與服務認證

  4. 如果自訂安全性金鑰需要用在收件者端,請建立自訂服務安全性權杖管理員和自訂服務認證,如下列範例所示。如需有關自訂服務認證和服務安全性權杖管理員的詳細資訊,請參閱HOW TO:建立自訂用戶端與服務認證

請參閱

工作

HOW TO:建立自訂安全性權杖提供者

參考

X509AsymmetricSecurityKey
AsymmetricSecurityKey
SecurityKey
AsymmetricAlgorithm
HashAlgorithm
AsymmetricSignatureFormatter

概念

HOW TO:建立自訂用戶端與服務認證
HOW TO:建立自訂安全性權杖驗證器
HOW TO:建立自訂權杖
安全性架構