Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Es kann schwierig sein, den Speicherort und den Namen der privaten Schlüsseldatei zu finden, die einem bestimmten X.509-Zertifikat im Zertifikatspeicher zugeordnet ist. Das FindPrivateKey.exe Tool erleichtert diesen Prozess.
Von Bedeutung
Sie müssen das FindPrivateKey-Beispiel erstellen, bevor Sie es verwenden.
X.509-Zertifikate werden von einem Administrator oder einem beliebigen Benutzer auf dem Computer installiert. Auf das Zertifikat kann jedoch von einem Dienst zugegriffen werden, der unter einem anderen Konto ausgeführt wird. Beispiel: das NETWORK SERVICE-Konto.
Dieses Konto hat möglicherweise keinen Zugriff auf die Datei des privaten Schlüssels, da das Zertifikat ursprünglich nicht installiert wurde. Mit dem FindPrivateKey-Tool erhalten Sie den Speicherort der privaten X.509-Zertifikatsdatei. Sie können dieser Datei Berechtigungen hinzufügen oder entfernen, sobald Sie den Speicherort der privaten X.509-Zertifikatdatei kennen.
Die Beispiele, die Zertifikate für die Sicherheit verwenden, verwenden das FindPrivateKey-Tool in der Setup.bat Datei. Nachdem die Datei mit dem privaten Schlüssel gefunden wurde, können Sie andere Tools wie Cacls.exe verwenden, um die entsprechenden Zugriffsrechte für die Datei festzulegen.
Stellen Sie beim Ausführen eines Windows Communication Foundation (WCF)-Diensts unter einem Benutzerkonto, z. B. einer selbst gehosteten ausführbaren Datei, sicher, dass das Benutzerkonto schreibgeschützten Zugriff auf die Datei hat. Beim Ausführen eines WCF-Diensts unter Internetinformationsdienste (IIS) sind die Standardkonten, unter denen der Dienst ausgeführt wird, der NETZWERKDIENST in IIS 7 und früheren Versionen oder Anwendungspoolidentität in IIS 7.5 und höheren Versionen. Weitere Informationen finden Sie unter Anwendungspoolidentitäten.
Leseberechtigungen
Beim Zugriff auf ein Zertifikat, für das der Prozess nicht über Leseberechtigung verfügt, wird eine Ausnahmemeldung wie im folgenden Beispiel angezeigt:
System.ArgumentException was unhandled
Message="The certificate 'CN=localhost' must have a private key that is capable of key exchange. The process must have access rights for the private key."
Source="System.ServiceModel"
Verwenden Sie in diesem Fall das FindPrivateKey-Tool, um die private Schlüsseldatei zu finden, und legen Sie dann den Zugriffsrecht für den Prozess fest, unter dem der Dienst ausgeführt wird. Dies kann z. B. mit dem Cacls.exe Tool erfolgen, wie im folgenden Beispiel gezeigt:
cacls.exe "C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\RSA\MachineKeys\8aeda5eb81555f14f8f9960745b5a40d_38f7de48-5ee9-452d-8a5a-92789d7110b1" /E /G "NETWORK SERVICE":R
Konventionen—Befehlszeileneinträge
"[option]" stellt einen optionalen Satz von Parametern dar.
"{option}" stellt einen obligatorischen Satz von Parametern dar.
"option1 | option2" stellt eine Auswahl zwischen Gruppen von Optionen dar.
"<value>" stellt einen Parameterwert dar, der eingegeben werden soll.
Verwendung
FindPrivateKey <storeName> <storeLocation> [{ {-n <subjectName>} | {-t <thumbprint>} } [-f | -d | -a]]
Ort:
| Parameter | BESCHREIBUNG |
|---|---|
<subjectName> |
Der Betreffname des Zertifikats |
<thumbprint> |
Der Fingerabdruck des Zertifikats (Sie können das Certmgr.exe Tool verwenden, um dieses Zu finden) |
-f |
Nur Ausgabedateiname |
-d |
Nur Ausgabeverzeichnis |
-a |
Absoluter Ausgabedateiname |
Wenn an der Eingabeaufforderung keine Parameter angegeben werden, wird Hilfetext mit diesen Informationen angezeigt.
Beispiele
In diesem Beispiel wird der Dateiname des Zertifikats mit dem Betreffnamen "CN=localhost" im persönlichen Speicher des aktuellen Benutzers gefunden.
FindPrivateKey My CurrentUser -n "CN=localhost"
In diesem Beispiel wird der Dateiname des Zertifikats mit dem Betreffnamen „CN=localhost“ im persönlichen Speicher des aktuellen Benutzers gesucht und der vollständige Verzeichnispfad ausgegeben.
FindPrivateKey My CurrentUser -n "CN=localhost" -a
In diesem Beispiel wird der Dateiname des Zertifikats mit dem Fingerabdruck "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" im persönlichen Speicher des lokalen Computers gesucht.
FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52"