Skip Ribbon Commands
Skip to main content

Ondrej Sevecek's Blog

:

Engineering and troubleshooting by Directory Master!
Ondrej Sevecek's Blog > Posts > Jak správně naimportovat novější certifikát (renewed) a spárovat ho s existujícím privátním klíčem
říjen 02
Jak správně naimportovat novější certifikát (renewed) a spárovat ho s existujícím privátním klíčem

Problém

Máme v počítačovém úložišti certifiikátů nějaký certifikát (obvykle certifikát webového serveru), který se buď pomalu chystá expirovat, nebo bychom jen rádi přidali nějaká další jména do SAN (Subject Alternative Name), nebo ho nějak pozměnili. Veřejné certifikační autority (CA, certificate authority), od kterých si takový certifikát kupujete, mají obvykle více možností, jak to provést.

Už od nich nejspíš máte právě onen předchozí certifikát i s privátním klíčem. Znamená to, že certifikační autorita má k němu uložen původní požadavek s veřejným klíčem. Služba, kterou jste si zaplatili, obvykle umožňuje provádět různé operace s existujícím požadavkem (certificate request), který si certifikační autorita uložila v době, kdy jste si službu poprvé objednali. To znamená, že nemusíte při každé změně procházet celým kolečkem generování nové žádosti, jejího exportu a importu do certifikační autority. Úpravy budou možná také rychleji potvrzeny, aniž by se muselo procházet kompletní úvodní proces potvrzení vlastnictví domény podle certifikační politiky.

Prostě se připojíte do nějakého webového rozhraní certifikační autority a vyplníte parametry nového požadavku s tím, že se má použít požadavek (a tedy hlavně veřejný klíč) původní. Na základě toho dostanete certifikát - něco jako soubor CER nebo CRT.

Jenže co je to certifikát? Jen podepsaný soubor s veřejným klíčem (public key). Privátní klíč máte na tom serveru, kde se prozatím používá onen původní certifikát.

Import nového certifikátu a jeho spárování s původním soukromým klíčem (private key)

Když nový certifikát naimportujete na počítači, bude se jevit tak, že prozatím nemá asociován žádný privátní klíč (nemá ikonečku klíčku a není v něm napsáno You have a private that corresponds to this certificate). Nelze ho tedy ještě použít, protože není čím podepisovat ani dešifrovat. Musíte ho tedy spárovat s jeho odpovídajícím privátním klíčem.

Jenže pozor. Teď důležité! Pokud nemáte náhodou cement, tak si tam dejte nějakej jinej prášek :-)

Ne, to podstatné je CSP nebo CNG poskytovatel - tedy buď správný Cryptographic Services Provider, nebo CNG Key Storage Provider. Každý privátní klíč je obsluhován nějakým CSP nebo CNG kryptografickým modulem. Takové moduly jsou například Microsoft RSA SChannel Cryptographic Provider, nebo Microsoft Enhanced RSA and AES Cryptographic Provider a Microsoft Enhanced Cryptographic Provider v1.0. Seznam všech modulů, které máte na počítači si můžete vypsat pomocí následujícího příkazu:

certutil -csplist

O tom, že různé programy podporují různé kryptografické moduly jsem se zmiňoval už alespoň například v následujících článcích:

Podpora CNG v aplikacích
Chyby SSTP připojení a ověřování s EAP-PEAP a klientským certifikátem

Jednoduše řečeno, každý program používá jen nějakého CSP nebo CNG poskytovatele. Pokud certifikát spárujete s privátním klíčem špatně, nebude program fungovat, i když by se zdálo, že certifikát třeba vidí. Klasickým příkladem je například IIS 6.0 na Windows 2003, které vyžaduje pouze Microsoft RSA SChannel Cryptographic Provider, nebo EFS na jakémkoliv systému, které vyžaduje jen Microsoft Enhanced Cryptographic Provider v1.0, nebo trošku flexibilnější SQL Server 2012, který ale neumí žádného CNG poskytovatele.

Korektní párování certifikátu s privátním klíčem

Nejprve se podívejte, jakého poskytovatele používá původní certifikát. To zjistíte jednoduše z výpisu:

certutil -verifystore my *

Ve výpisu u každého certifikátu, který má připojen i privátní klíč, uvidíte položku Provider. Takže si uvědomte, kterého poskytovatele v tuto chvíli používá váš existující certifikát, který vám až do teď fungoval. Druhá důležitá položka je Serial number právě u vašeho nového, dosud nespárovaného certifikátu.

Až to budete vědět, použijete jméno CSP v parametru -csp v následujícím příkazu a sériové číslo zjištěné v minulém kroku následovně, podle příkladu:

certutil -repairstore -csp "Microsoft RSA Schannel Cryptographic Provider" 2b8cbed312bd7a

Ověřit, že to je dobře lze znovu už jen takto jednoduše. Jen bacha, tenhle příkaz nesmíte spustit dříve, než to máte korektně spárováno. Nebo se vám to spáruje s výchozím poskytovatelem, kterým je Microsoft Enhanced Cryptographic Provider v1.0:

certutil -repairstore my *

Comments

There are no comments for this post.

Add Comment

Title


Pole Title nemusíte vyplňovat, doplní se to samo na stejnou hodnotu jako je nadpis článku.

Author *


Pole Author nesmí být stejné jako pole Title! Mám to tu jako ochranu proti spamu. Roboti to nevyplní dobře :-)

Body *


Type number two as digit *


Semhle vyplňte číslici dvě. Předchozí antispemové pole nefunguje úplně dokonale, zdá se, že jsou i spamery, které pochopily, že je občas potřeba vyplnit autora :-)

Email


Emailová adresa, pokud na ni chcete ode mě dostat odpověď. Nikdo jiný než já vaši emailovou adresu neuvidí.

Attachments