nepodporovaný účel certifikátu: prečo medziľahlá CA zlyháva
Keď OpenVPN nahlási nepodporovaný účel certifikátu, koncový certifikát môže byť nevinný. Pred akýmkoľvek opätovným vydaním porovnajte účel koncového certifikátu s politikou reťazca.
Účel serverového certifikátu vyzerá správne, kľúč sedí, dátumy sú v poriadku a spojenie napriek tomu zlyháva s unsupported certificate purpose. Detail, ktorý to vyrieši, býva na tom istom riadku ako chyba: hodnota hĺbky a subject, ktoré pomenúvajú certifikát vyššie v reťazci. Vykonávajú sa dva rôzne testy a iba jeden z nich sa týka koncového certifikátu. Ich porovnanie vysvetľuje, prečo výmena serverového certifikátu nič nezmení.
Ktorý certifikát overovateľ skutočne odmietol
Reťazec nie je jeden objekt zopakovaný trikrát. Koncový certifikát nesie meno a kľúč servera, medziľahlé ho prepájajú s koreňom a každý má vlastnú dobu platnosti, obmedzenia a použitia. Keď chyba uvedie hĺbku, toto číslo označuje pozíciu v reťazci, ktorý overovateľ zostavil, a tá nemusí byť pozícia, ktorú očakávate, ak server posiela neočakávaný reťazec.
Čítajte polia certifikátu v tejto hĺbke, nie certifikátu, ktorý ste považovali za vinníka. Vyžiadajte si dve rozšírenia, ktoré obmedzujú vydávanie, namiesto výpisu všetkých polí, pretože odpoveď je takmer vždy v jednom z nich. Výstup rozšírení je bezpečné zdieľať; súkromné kľúče nikdy.
openssl x509 -in issuing-ca.pem -noout -subject -issuer -ext basicConstraints -ext extendedKeyUsage
Ak je uvedený certifikát medziľahlý a jeho rozšírené použitie kľúča spomína niečo nesúvisiace s overovaním servera TLS, zvyšok zlyhania nasleduje mechanicky. Reťazec sa nedá použiť na účel, ktorý požadoval OpenVPN.
Účel koncového certifikátu a politika reťazca sú dva testy
Test koncového certifikátu kladie úzku otázku: dovoľuje tento certifikát koncovej entity overovanie servera pre toto meno? Test reťazca kladie širšiu: smie každý certifikát v ceste slúžiť tomuto účelu? Certifikačná autorita, ktorá smie vydávať len klientske certifikáty, prejde vlastnými kontrolami podpisu a napriek tomu zlyhá v druhom teste, pretože cesta, ktorú povoľuje, nezahŕňa účel, ktorý aplikácia potrebuje. Oba testy zlyhávajú rovnakými slovami a majú úplne odlišné opravy.
Preto môže novo vydaný koncový certifikát, správny vo všetkých viditeľných poliach, zlyhať okamžite. Preto oprava zvyčajne patrí do profilu vydávajúcej autority, nie do konfigurácie VPN.
Chýbajúce EKU nie je obmedzujúce EKU
RFC 5280 robí rozšírenie rozšíreného použitia kľúča voliteľným a, ak je prítomné, obmedzujúcim. Certifikát CA bez rozšírenia teda nepovedal „nie“ overovaniu servera, zatiaľ čo ten, ktorý uvádza len nesúvisiaci účel, povedal niečo veľmi konkrétne. Považovať tieto dva stavy za rovnocenné vedie k nesprávnej diagnóze a, horšie, k nesprávnej oprave. Rozdiel tiež vysvetľuje, prečo sa dve autority, ktoré v konzole vyzerajú podobne, v reťazci správajú úplne odlišne.
Správanie knižníc ani tu nie je jednotné. dokument OpenSSL o možnostiach overovania opisuje vlastný prístup ku kontrolám účelu pri certifikátoch CA a tento prístup je politika implementácie, nie pravidlo, ktoré by každý zásobník TLS dodržiaval rovnako. Opíšte, čo robí váš overovateľ, a potom to potvrďte na verzii, ktorú skutočne prevádzkujete.
Pred opätovným vydaním reprodukujte zlyhanie offline
Overenie offline vyberá aplikáciu z rovnice. Ak reťazec zlyháva rovnako pri rovnakom účele, problémom je certifikát a žiadna konfigurácia servera to neskryje. Ak reťazec prejde offline, zatiaľ čo služba stále odmieta, aplikácia žiada iný účel alebo používa iný reťazec, než ste testovali.
openssl verify -purpose sslserver -show_chain -CAfile root-ca.pem -untrusted issuing-ca.pem vpn-server.pem
-show_chain je dôležitý, pretože vypisuje cestu, ktorú nástroj zostavil, a tá často nie je poradím súborov, ktoré ste zadali. Tento výstup je najrýchlejší spôsob, ako zistiť, že druhý medziľahlý certifikát sa ťahá z úložiska dôvery, že server posiela krížovo podpísaný variant, ktorý ste nezamýšľali, alebo že príznak účelu skopírovaný z návodu patrí inej role, než ktorá je obsluhovaná.
Opravte politiku vydávania, nie volanie overenia
Trvalou opravou je medziľahlý certifikát vydaný podľa politiky, ktorá povoľuje účely, ktorým musí slúžiť, s obmedzením zapísaným a preskúmaným. Pridávať každý účel každej autorite nie je politika; odstraňuje obmedzenie, ktoré dávalo rozšíreniu zmysel, a zvyčajne prežije incident, ktorý ho vyvolal. Krátka poznámka v profile opisujúca, ktoré roly autorita smie certifikovať, zabráni tomu, aby ďalšie vydanie zopakovalo rovnakú diskusiu.
Vypnutie overovania je druhá lákavá skratka a mení problém certifikátu na problém dôvery. Ponechajte kontrolu účelu, opravte reťazec a znova spustite to isté overenie offline, aby ste potvrdili, že cesta teraz slúži zamýšľanej role, než sa znova dotknete služby.