Udostępnij za pośrednictwem


Przykład FindPrivateKey

Znalezienie lokalizacji i nazwy pliku klucza prywatnego skojarzonego z określonym certyfikatem X.509 w magazynie certyfikatów może być trudne. Narzędzie FindPrivateKey.exe ułatwia ten proces.

Ważne

Przed użyciem należy skompilować przykład FindPrivateKey.

Certyfikaty X.509 są instalowane przez Administracja istrator lub dowolny użytkownik na komputerze. Jednak dostęp do certyfikatu może uzyskać usługa działająca na innym koncie. Na przykład konto USŁUGI SIECIOWEJ.

To konto może nie mieć dostępu do pliku klucza prywatnego, ponieważ certyfikat nie został pierwotnie zainstalowany. Narzędzie FindPrivateKey udostępnia lokalizację danego pliku klucza prywatnego certyfikatu X.509. Możesz dodać uprawnienia lub usunąć uprawnienia do tego pliku, gdy znasz lokalizację określonego pliku klucza prywatnego certyfikatów X.509.

Przykłady korzystające z certyfikatów na potrzeby zabezpieczeń używają narzędzia FindPrivateKey w pliku Setup.bat . Po znalezieniu pliku klucza prywatnego można użyć innych narzędzi, takich jak Cacls.exe , aby ustawić odpowiednie prawa dostępu do pliku.

Podczas uruchamiania usługi Windows Communication Foundation (WCF) na koncie użytkownika, takim jak plik wykonywalny hostowany samodzielnie, upewnij się, że konto użytkownika ma dostęp tylko do odczytu do pliku. W przypadku uruchamiania usługi WCF w usługach Internet Information Services (IIS) domyślne konta, w których działa usługa, to usługa SIECIowa w usługach IIS 7 i starszych wersjach lub tożsamość puli aplikacji w usługach IIS 7.5 lub nowszych wersjach. Aby uzyskać więcej informacji, zobacz Tożsamości puli aplikacji.

Uprawnienia do odczytu

Podczas uzyskiwania dostępu do certyfikatu, dla którego proces nie ma uprawnień do odczytu, zostanie wyświetlony komunikat o wyjątku podobny do następującego przykładu:

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"

W takim przypadku użyj narzędzia FindPrivateKey, aby znaleźć plik klucza prywatnego, a następnie ustaw odpowiedni dostęp dla procesu, w którym działa usługa. Na przykład można to zrobić za pomocą narzędzia Cacls.exe, jak pokazano w poniższym przykładzie:

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

Konwencje — wpisy wiersza polecenia

Wyrażenie "[option]" reprezentuje opcjonalny zestaw parametrów.

Element "{option}" reprezentuje obowiązkowy zestaw parametrów.

Opcja "option12 | " reprezentuje wybór między zestawami opcji.

Wartość "<value>" reprezentuje wartość parametru, która ma zostać wprowadzona.

Użycie

FindPrivateKey <storeName> <storeLocation> [{ {-n <subjectName>} | {-t <thumbprint>} } [-f | -d | -a]]

Gdzie:

Parametr Opis
<subjectName> Nazwa podmiotu certyfikatu
<thumbprint> Odcisk palca certyfikatu (możesz użyć narzędzia Certmgr.exe, aby to znaleźć)
-f tylko nazwa pliku wyjściowego
-d tylko katalog wyjściowy
-a nazwa pliku bezwzględnego wyjściowego

Jeśli w wierszu polecenia nie określono żadnych parametrów, zostanie wyświetlony tekst pomocy dotyczącej tych informacji.

Przykłady

W tym przykładzie znajduje nazwę pliku certyfikatu o nazwie podmiotu "CN=localhost" w magazynie osobistym bieżącego użytkownika.

FindPrivateKey My CurrentUser -n "CN=localhost"

W tym przykładzie znajduje nazwę pliku certyfikatu o nazwie podmiotu "CN=localhost" w magazynie osobistym bieżącego użytkownika i wyświetli pełną ścieżkę katalogu.

FindPrivateKey My CurrentUser -n "CN=localhost" -a

W tym przykładzie znajduje nazwę pliku certyfikatu z odciskiem palca "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52", w magazynie osobistym komputera lokalnego.

FindPrivateKey My LocalMachine -t "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52"