Porovnání certifikátu a privátního klíče

Vložte certifikát, který server používá, a soukromý klíč, který s ním hodláte nasadit, a tato stránka odpoví na otázku, na které nasazený web selhává: pocházejí oba ze stejného páru klíčů? Odpověď není odhad z délek modulů nebo jen z otisků — stránka podepíše pevnou výzvu soukromým klíčem a ověří ten podpis veřejným klíčem uvnitř certifikátu. Projde-li ověření, patří k sobě; selže-li, žádné úpravy konfigurace je nezprovozní. Oba údaje se zobrazují vedle sebe s algoritmem, délkou klíče, identifikátorem klíče subjektu a otiskem veřejného klíče a nic, co vložíte, neopouští prohlížeč.
1. Certifikát nebo řetězec
Vložte kolik bloků chcete. Každý certifikát se kontroluje proti každému klíči, takže řetězec a jeden klíč vám řeknou přesně, který certifikát v řetězci k tomuto klíči patří — častý překvapivý nález na serveru, který z balíku podává nesprávný certifikát. Čte se PEM, holé tělo base64 nebo hexadecimální tělo i soubor PKCS#7 .p7b; kontrola certifikátů pak audituje samotný certifikát, jakmile je klíč vyřešen.
2. Soukromý klíč, nebo veřejný klíč
Rozumí se PKCS#8 (BEGIN PRIVATE KEY), PKCS#1 (BEGIN RSA PRIVATE KEY), SEC1 (BEGIN EC PRIVATE KEY) a holému veřejnému klíči SPKI (BEGIN PUBLIC KEY), stejně jako souboru klíče vloženému jako base64 nebo hexadecimálně. Zašifrovaný klíč PKCS#8 (BEGIN ENCRYPTED PRIVATE KEY) prohlížeč nedokáže přečíst a je tak označen, včetně příkazu, který heslo odstraní.
zatím nic nezkontrolováno
Ukázka je certifikát s vlastním podpisem a soukromý klíč, který k němu patří; obojí bylo vytvořeno pro tuto stránku a nic nechrání. Nahraďte klíč libovolným jiným klíčem, abyste viděli jiný verdikt, nebo místo soukromého klíče vložte blok veřejného klíče, abyste viděli shodu veřejného klíče.
Soukromý klíč vložený na libovolnou webovou stránku si nejprve zaslouží druhé zamyšlení. Tato stránka je jediný soubor prostého JavaScriptu, nic odnikud nenačítá a neprovádí žádný požadavek, takže klíč se přečte, použije a zapomene uvnitř této karty. To je stále slib daný kódem, který si můžete přečíst, nikoli záruka od sítě, kterou byste viděli: pokud pracujete s produkčním klíčem, pracujte offline a považujte nejbezpečnější kontrolu za stejný příkaz openssl na vašem vlastním serveru. Klíč vložený sem se nikdy neukládá, nikdy se nezapisuje do souboru a nikam se neodesílá — včetně exportních tlačítek, která zapisují zjištění o klíči, nikdy však samotný klíč.
Proč je odpovědí podpis. Dva soubory mohou vypadat podobně a přesto nesouhlasit: klíče RSA se v většině návodů porovnávají podle modulu, ale to funguje jen pro RSA, a klíč může nést správný modul s poškozeným exponentem nebo špatným doplněním. Tato stránka dvojici ověří stejným způsobem jako handshake — podepíše pevnou výzvu soukromým klíčem a ověří podpis veřejným klíčem v certifikátu — takže verdikt platí stejně pro RSA, ECDSA i Ed25519. Když vložíte jen veřejnou polovinu, porovnají se přímo bajty veřejného klíče s bajty v certifikátu, což je pro totožnost stejně průkazné, jen to nedokazuje, že někdo drží soukromou polovinu.

Co shoda neříká. Že je to klíč, který server skutečně načetl, že certifikát je důvěryhodný, že soubor klíče je na disku neporušený, nebo že jej někdo jiný nezkopíroval. Nemůže také říct, zda je to certifikát, který dostane klient, protože vyvažovač zátěže nebo CDN před webem může podávat jiný. Chcete-li zkontrolovat, co živý server skutečně předkládá, spusťte openssl s_client -connect example.com:443 -servername example.com -showcerts a výstup vložte do pole pro certifikát.

Odkud soubory pocházejí. Certifikát je ten, s nímž je váš server nakonfigurovaný, nebo ten exportovaný z prohlížeče či vyjmutý z balíku .p7b. Soukromý klíč je soubor, který váš webový server čte při startu, typicky něco jako privkey.pem nebo server.key. Je-li klíč zašifrovaný, nejprve dešifrujte kopii příkazem openssl pkcs8 -topk8 -nocrypt -in key.pem -out key-plain.pem, vložte ji a pak kopii smažte.
Zatím nic nezkontrolováno. Vložte výše certifikát a klíč a stiskněte Zkontrolovat, zda se shodují. Verdikt se zobrazí zde i s podklady, na kterých stojí, a zprávu lze zkopírovat nebo uložit.
Stejná kontrola pomocí openssl na vašem vlastním počítači
# veřejný klíč uvnitř certifikátu openssl x509 -in cert.pem -noout -pubkey | openssl pkey -pubin -outform DER | openssl sha256 # veřejný klíč uvnitř soukromého klíče openssl pkey -in key.pem -pubout | openssl pkey -pubin -outform DER | openssl sha256 # oba výtahy jsou shodné jen tehdy, když pár patří k sobě # starší způsob, jen pro RSA: porovnání modulů openssl x509 -in cert.pem -noout -modulus | openssl md5 openssl rsa -in key.pem -noout -modulus | openssl md5
Porovnání otisků funguje pro každý typ klíče a odpovídá tomu, co tato stránka hlásí jako otisk veřejného klíče, zatímco porovnání modulů existuje jen pro RSA. Ani jedno neprokazuje, že někdo drží soukromou polovinu — to dokáže až kontrola podpisem výše, proto ji tato stránka používá.
Co zpráva obsahuje. Verdikt, dvojici údajů, z nichž vycházel (algoritmus, délka klíče, křivka, identifikátor klíče subjektu a otisk veřejného klíče pro certifikát i pro klíč), a přesný test, který proběhl. Zpráva nikdy neobsahuje samotný soukromý klíč: klíč se použije k vytvoření podpisu a nezapisuje se do textu, do JSON ani do schránky. To, co zkopírujete nebo uložíte, lze bezpečně připojit k tiketu; klíč, který jste vložili, bezpečné není, a schránku berte jako jediné další místo, kde kdy existoval.

Soukromí: certifikát i klíč se čtou v kartě prohlížeče, nic se nenahrává a stránka nevytváří žádný požadavek — žádná sonda, žádné vyhledávání. Pár pro shodu vytvoříte pomocí generátoru certifikátů s vlastním podpisem; chcete-li požádat o certifikát pro klíč, který již máte, použijte generátor CSR; chcete-li zjistit, co certifikát obsahuje, použijte dekodér certifikátů.