Stejný název souboru ca.crt, jiný certifikát: co porovnávat
Dva profily mohou přinést ca.crt s odlišným obsahem. Zaznamenejte otisk toho, co proces načítá, a pak ověřte, zda je to kořen důvěry, který jste zamýšleli.
Dva profily oba přinášejí soubor nazvaný ca.crt, jeden tunel se zvedne a druhý selže s chybou řetězce. Otevření obou souborů vedle sebe to málokdy vyřeší a vypnutí ověřování to vyřeší špatným směrem. Otázka, kterou chyba vlastně klade, je užší: který certifikát každý proces načítá jako svůj kořen důvěry a jsou ty dva stejný objekt? Odpovězte nejdřív na to a zbytek diagnostiky dostane směr. Název souboru je etiketa obalu a cesta zapsaná v profilu také není směrodatná, takže všechno závisí na tom, co proces skutečně čte.
Najděte certifikát, který klient skutečně načítá
OpenVPN přijímá autoritu ve dvou formách a forma rozhoduje, které bajty jsou podstatné. Profil může odkazovat na vnější soubor pomocí ca, nebo certifikát vložit do bloku <ca> přímo v profilu. Když existují oba, vyhrává vložený blok a soubor vedle profilu se nikdy neotevře.
Přečtěte selhávající profil a zjistěte, kterou formu používá, než cokoli porovnáte. Kopie vytažená ze sousedního adresáře nebo z balíčku, odkud přišel druhý profil, vám o tom, čemu tento proces důvěřuje, nic neřekne. Totéž platí pro cestu v konfiguraci: rozlišuje se relativně k místu, kde byl klient spuštěn, což nemusí být adresář, na který se díváte. Čtěte profil, ne složku.
Certifikáty se identifikují podle obsahu: veřejný klíč, subjekt a vystavitel, období platnosti a podpis nad tím vším. Dva soubory s totožnými bajty jsou stejný certifikát, ať se jmenují jakkoli, a dva soubory se stejným názvem mohou být nesouvisející autority. Název je etiketa obalu, ne identita.
Zaznamenejte otisk obou kopií pomocí openssl
Otisk je hash přes DER kódování certifikátu, tedy formu, kterou podpis pokrývá, takže konce řádků a text hlavičky jej nemohou ovlivnit. Spočítejte jej pro každý soubor a máte dva hexadecimální řetězce oddělené dvojtečkou, které buď souhlasí, nebo ne. Ke zodpovězení otázky porovnání není třeba číst nic dalšího v certifikátu.
openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256
Nasměrovat openssl na samotný profil je lákavé, ale přečte první blok certifikátu, který se v souboru objeví, a profil obvykle nese <cert> před <ca>. Vyjměte blok autority a potom zaznamenejte otisk vyjmutého souboru, protože to je kopie, kterou klient skutečně použije.
sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256
Totožné otisky znamenají, že materiál důvěry je stejný a chyba řetězce má jinou příčinu, což je jiné vyšetřování. Různé otisky znamenají různé certifikáty a právě tam začíná další část.
Přečtěte nesoulad, než předpokládáte útok
Různé otisky znamenají různé certifikáty a nic víc. Opětovné vydání, rotace, přejmenovaná autorita nebo zastaralý balík všechny vytvářejí různé soubory s naprosto legitimními historiemi. Který z nich patří do nasazení, je otázka pro operátora nebo záznam o nasazení, ne pro čas změny souboru. Archivy kopírují časová razítka, takže novější soubor není automaticky správný kořen.
Kořen, který podepisuje sám sebe, je normální, takže nalezení takového není důkazem problému. Úkolem ověřovatele je sestavit cestu od certifikátu serveru ke kořeni, který mu byl předán, a chyba řetězce obvykle znamená, že tuto cestu nebylo možné dokončit.
Zkontrolujte, zda kořen selhávajícího profilu je autorita, ze které nasazení stále vydává. Pokud se otisk neshoduje s ničím v záznamu o nasazení, profil je prostě zastaralý a žádné ladění na straně klienta to nespraví.
Obnovte důvěru bez vypnutí ověřování
Krátkodobým řešením je vypnout ověřování nebo přidat každý certifikát v řetězci jako kořen. Obě řešení způsobí, že zpráva zmizí, a obě mění, které servery klient od té doby přijme. Zapněte ověřování zpět, nainstalujte zamýšlený kořen a znovu otestujte.
Pokud se řetězec nyní sestaví, ale objeví se jiná chyba, je to pokrok: ověření názvu, data platnosti a odvolání jsou samostatné kontroly se samostatnými zprávami. Uchovávejte dvojici otisků a původní text chyby společně v tiketu, aby další člověk viděl, který kořen byl načten a který se očekával. Dvojice otisků je dost malá na vložení do předávací poznámky a příští výskyt pak zabere pět minut místo odpoledne.
Získejte správnou autoritu stejným ověřeným kanálem, který doručil profil. Stahování certifikátu ze serveru proto, že jeho subjekt vypadá povědomě, je jiný čin a tiše rozšiřuje to, čemu bude klient důvěřovat.