Freigeben über


Gewusst wie: Ändern des Kryptografieanbieters für den privaten Schlüssel eines X.509-Zertifikats

In diesem Thema wird erläutert, wie Sie den Kryptografieanbieter ändern, mit dessen Hilfe der private Schlüssel eines X.509-Zertifikats bereitgestellt wird, und wie Sie den Anbieter in das Windows Communication Foundation (WCF)-Sicherheitsframework integrieren. Weitere Informationen zum Verwenden von Zertifikaten finden Sie unter Verwenden von Zertifikaten.

Das WCF-Sicherheitsframework ermöglicht die Einführung neuer Sicherheitstokentypen, wie unter Gewusst wie: Erstellen eines benutzerdefinierten Tokens beschrieben. Es ist auch möglich, ein benutzerdefiniertes Token zu verwenden, um vorhandene vom System bereitgestellte Tokentypen zu ersetzen.

In diesem Thema wird das vom System bereitgestellte X.509-Sicherheitstoken durch ein benutzerdefiniertes X.509-Token ersetzt, das für den privaten Schlüssel des Zertifikats eine andere Implementierung bereitstellt. Dies ist bei Szenarios nützlich, bei denen der eigentliche private Schlüssel von einem anderen Kryptografieanbieter als dem standardmäßigen Kryptografieanbieter von Windows bereitgestellt wird. Ein Beispiel für einen alternativen Kryptografieanbieter ist ein Hardwaresicherheitsmodul, das alle Kryptografievorgänge durchführt, die private Schlüssel betreffen, und das die privaten Schlüssel nicht im Arbeitsspeicher speichert. Auf diese Weise wird die Sicherheit des Systems erhöht.

Das folgende Beispiel dient nur der Veranschaulichung. Es stellt keinen Ersatz für den standardmäßigen Kryptografieanbieter dar, aber es verdeutlicht, an welcher Stelle ein Anbieter dieser Art integriert werden kann.

Prozeduren

Jedes Sicherheitstoken, das über einen zugeordneten Sicherheitsschlüssel bzw. mehrere Sicherheitsschlüssel verfügt, muss die SecurityKeys-Eigenschaft implementieren. Diese Eigenschaft gibt eine Auflistung der Schlüssel aus der Sicherheitstokeninstanz zurück. Wenn es sich bei dem Token um ein X.509-Sicherheitstoken handelt, enthält die Auflistung eine einzelne Instanz der X509AsymmetricSecurityKey-Klasse, die sowohl öffentliche als auch private Schlüssel darstellt, die dem Zertifikat zugeordnet sind. Erstellen Sie eine neue Implementierung dieser Klasse, um den standardmäßigen Kryptografieanbieter zu ersetzen, der zum Bereitstellen der Zertifikatschlüssel verwendet wird.

So erstellen Sie einen benutzerdefinierten asymmetrischen X.509-Schlüssel

  1. Definieren Sie eine neue Klasse, die von der X509AsymmetricSecurityKey-Klasse abgeleitet ist.

  2. Überschreiben Sie die schreibgeschützte KeySize-Eigenschaft. Diese Eigenschaft gibt die tatsächliche Schlüsselgröße für das Paar aus öffentlichem und privatem Schlüssel des Zertifikats zurück.

  3. Überschreiben Sie die DecryptKey-Methode. Diese Methode wird vom WCF-Sicherheitsframework aufgerufen, um einen symmetrischen Schlüssel mit dem privaten Schlüssel des Zertifikats zu entschlüsseln. (Der Schlüssel wurde vorher mit dem öffentlichen Schlüssel des Zertifikats verschlüsselt.)

  4. Überschreiben Sie die GetAsymmetricAlgorithm-Methode. Diese Methode wird vom WCF-Sicherheitsframework aufgerufen, um eine Instanz der AsymmetricAlgorithm-Klasse zu erhalten, die den Kryptografieanbieter entweder für den privaten oder den öffentlichen Schlüssel des Zertifikats darstellt. Dies hängt von den Parametern ab, die an die Methode übergeben werden.

  5. Optional. Überschreiben Sie die GetHashAlgorithmForSignature-Methode. Überschreiben Sie diese Methode, wenn eine andere Implementierung der HashAlgorithm-Klasse erforderlich ist.

  6. Überschreiben Sie die GetSignatureFormatter-Methode. Diese Methode gibt eine Instanz der AsymmetricSignatureFormatter-Klasse zurück, die dem privaten Schlüssel des Zertifikats zugeordnet ist.

  7. Überschreiben Sie die IsSupportedAlgorithm-Methode. Diese Methode wird verwendet, um anzugeben, ob ein bestimmter Kryptografiealgorithmus von der Implementierung des Sicherheitsschlüssels unterstützt wird.

Die folgende Prozedur zeigt, wie Sie die Implementierung des benutzerdefinierten asymmetrischen X.509-Sicherheitsschlüssels, die in der vorherigen Prozedur erstellt wurde, auf das WCF-Sicherheitsframework abstimmen, um das vom System bereitgestellte X.509-Sicherheitstoken zu ersetzen.

So ersetzen Sie das vom System bereitgestellte X.509-Sicherheitstoken durch ein benutzerdefiniertes asymmetrisches X.509-Sicherheitsschlüsseltoken

  1. Erstellen Sie ein benutzerdefiniertes X.509-Sicherheitstoken, das anstelle des vom System bereitgestellten Sicherheitsschlüssels den benutzerdefinierten asymmetrischen X.509-Sicherheitsschlüssel zurückgibt. Weitere Informationen zu benutzerdefinierten Sicherheitstoken finden Sie unter Gewusst wie: Erstellen eines benutzerdefinierten Tokens.

  2. Erstellen Sie einen benutzerdefinierten Sicherheitstokenanbieter, der ein benutzerdefiniertes X.509-Sicherheitstoken zurückgibt. Dies ist im Beispiel gezeigt. Weitere Informationen zu benutzerdefinierten Sicherheitstokenanbietern finden Sie unter Gewusst wie: Erstellen eines benutzerdefinierten Sicherheitstokenanbieters.

  3. Wenn Sie den benutzerdefinierten Sicherheitsschlüssel auf der initiierenden Seite verwenden müssen, erstellen Sie einen benutzerdefinierten Clientsicherheitstoken-Manager und benutzerdefinierte Clientanmeldeinformationen-Klassen, wie im folgenden Beispiel gezeigt. Weitere Informationen zu benutzerdefinierten Clientanmeldeinformationen und Clientsicherheitstoken-Managern finden Sie unter Gewusst wie: Erstellen von benutzerdefinierten Client- und Dienstanmeldeinformationen.

  4. Wenn Sie den benutzerdefinierten Sicherheitsschlüssel auf der Empfängerseite verwenden müssen, erstellen Sie einen benutzerdefinierten Dienstsicherheitstoken-Manager und benutzerdefinierte Dienstanmeldeinformationen, wie im folgenden Beispiel gezeigt. Weitere Informationen zu benutzerdefinierten Dienstanmeldeinformationen und Dienstsicherheitstoken-Managern finden Sie unter Gewusst wie: Erstellen von benutzerdefinierten Client- und Dienstanmeldeinformationen.

Siehe auch

Aufgaben

Gewusst wie: Erstellen eines benutzerdefinierten Sicherheitstokenanbieters

Referenz

X509AsymmetricSecurityKey
AsymmetricSecurityKey
SecurityKey
AsymmetricAlgorithm
HashAlgorithm
AsymmetricSignatureFormatter

Konzepte

Gewusst wie: Erstellen von benutzerdefinierten Client- und Dienstanmeldeinformationen
Gewusst wie: Erstellen eines benutzerdefinierten Sicherheitstokenauthentifizierers
Gewusst wie: Erstellen eines benutzerdefinierten Tokens
Sicherheitsarchitektur