Sdílet prostřednictvím


Ukázka FindPrivateKey

V úložišti certifikátů může být obtížné najít umístění a název souboru privátního klíče přidruženého ke konkrétnímu certifikátu X.509. Tento proces usnadňuje nástroj FindPrivateKey.exe.

Důležité

Před použitím je nutné vytvořit ukázku FindPrivateKey.

Certifikáty X.509 jsou nainstalovány Správa istratorem nebo libovolným uživatelem v počítači. K certifikátu ale může přistupovat služba spuštěná pod jiným účtem. Například účet NETWORK SERVICE.

Tento účet nemusí mít přístup k souboru privátního klíče, protože certifikát nebyl původně nainstalován. Nástroj FindPrivateKey vám poskytne umístění souboru privátního klíče certifikátu X.509. Jakmile znáte umístění souboru privátního klíče certifikátu X.509, můžete do tohoto souboru přidat oprávnění nebo odebrat oprávnění.

Ukázky, které používají certifikáty pro zabezpečení, používají nástroj FindPrivateKey v souboru Setup.bat . Jakmile se soubor privátního klíče najde, můžete k nastavení příslušných přístupových práv k souboru použít jiné nástroje, jako je Cacls.exe .

Při spuštění služby Windows Communication Foundation (WCF) v rámci uživatelského účtu, jako je například spustitelný soubor v místním prostředí, se ujistěte, že má uživatelský účet k souboru přístup jen pro čtení. Při spuštění služby WCF v rámci Internetová informační služba (IIS) výchozí účty, pod kterými služba běží, jsou SLUŽBA NETWORK SERVICE ve službě IIS 7 a starších verzích nebo identita fondu aplikací ve službě IIS 7.5 a novějších verzích. Další informace najdete v tématu Identity fondu aplikací.

Oprávnění ke čtení

Při přístupu k certifikátu, pro který proces nemá oprávnění ke čtení, se zobrazí zpráva o výjimce podobná následujícímu příkladu:

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"

V takovém případě pomocí nástroje FindPrivateKey vyhledejte soubor privátního klíče a pak nastavte přístupové právo pro proces, pod kterým je služba spuštěná. Můžete to například provést pomocí nástroje Cacls.exe, jak je znázorněno v následujícím příkladu:

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

Konvence – položky příkazového řádku

"[option]" představuje volitelnou sadu parametrů.

{option} představuje povinnou sadu parametrů.

Možnost1 | option2 představuje volbu mezi sadami možností.

>Hodnota< představuje hodnotu parametru, která se má zadat.

Využití

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

Kde:

Parametr Popis
<subjectName> Název subjektu certifikátu
<thumbprint> Kryptografický otisk certifikátu (k jeho vyhledání můžete použít nástroj Certmgr.exe).
-f Pouze název výstupního souboru
-d Pouze výstupní adresář
-a Výstupní absolutní název souboru

Pokud nejsou v příkazovém řádku zadány žádné parametry, zobrazí se text nápovědy s informacemi.

Příklady

Tento příklad najde název certifikátu s názvem subjektu CN=localhost v osobním úložišti aktuálního uživatele.

FindPrivateKey My CurrentUser -n "CN=localhost"

Tento příklad najde název certifikátu s názvem subjektu CN=localhost v osobním úložišti aktuálního uživatele a vypíše úplnou cestu k adresáři.

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

Tento příklad najde název certifikátu s kryptografickým otiskem "03 33 98 63 d0 47 e7 48 71 33 62 64 76 5c 4c 9d 42 1d 6b 52" v osobním úložišti místního počítače.

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