remote-cert-tls server: čo kontroluje v profile OpenVPN
Direktíva kontroluje rolu zakódovanú v certifikáte protistrany, nie jeho názov. Pred vypnutím čohokoľvek porovnajte rolu, kotvu dôvery a kontrolu názvu hostiteľa.
Tri rôzne otázky dostávajú odpovede od troch rôznych častí profilu OpenVPN, a práve ich spájanie vedie k tomu, že ľudia napokon vypnú kontrolu, ktorá fungovala. Je certifikát protistrany podpísaný autoritou, ktorej dôverujem? Deklaruje tento certifikát rolu servera TLS? Je to práve ten server, ktorý som chcel dosiahnuť? remote-cert-tls server odpovedá len na strednú otázku a robí to čítaním rozšírení v certifikáte.
Tri kontroly, ktoré sa v hlave ľahko spoja
Kotva dôvery žije v direktíve ca. Kontrola roly patrí remote-cert-tls. Kontrola identity patrí verify-x509-name, keď ju profil používa, alebo akejkoľvek kontrole názvu, ktorú pridá nasadenie.
Pokrývajú rôzne zlyhania:
| Question | Directive | Failure it catches |
|---|---|---|
| Who signed this? | ca | Certificate from an unrelated authority |
| Is this a server? | remote-cert-tls | Client certificate presented by a peer |
| Is this my server? | verify-x509-name | Another valid server from the same CA |
Profil môže mať všetky tri a napriek tomu byť slabý, ak je CA zdieľaná príliš široko, čo je otázka správy kľúčov, nie direktívy.
Čo kontrola roly číta
Direktíva je makro. Rozbaľuje sa na požiadavku používania kľúča a požiadavku rozšíreného používania kľúča, ktorá pomenúva rolu webového servera TLS, takže certifikát protistrany musí tento účel skutočne deklarovať. Certifikát vydaný na autentifikáciu klienta to nespĺňa, aj keď oba podpísala tá istá autorita.
To je dôležité, pretože zdieľaná CA je v malých nasadeniach bežná. Jedna autorita podpisuje každého klienta a server, a bez kontroly roly by ktorýkoľvek z týchto certifikátov mohol dokončiť serverovú stranu podania ruky. Kontrola taký scenár neznemožňuje, ale odstraňuje jeho triviálnu verziu.
Direktíva je zámerne asymetrická: klienti nesú remote-cert-tls server a servery nesú remote-cert-tls client. Vymeňte ich a každé pripojenie zlyhá s chybou roly, ktorá vyzerá ako poškodený certifikát.
Staršie profily niekedy používajú ns-cert-type na rovnaký účel. Aktuálne manuálové stránky považujú túto voľbu za nahradenú, takže profil, ktorý sa na ňu stále spolieha, si zaslúži migráciu, nie ladenie.
Prečo vypnutie vyzerá ako oprava
Keď kontrola roly zlyhá, pripojenie sa zastaví s chybou overenia a zjavným krokom je riadok vymazať. Pripojenie potom naskočí, čo vyzerá ako pokrok a v skutočnosti je to režim zlyhania, ktorému má direktíva zabrániť. Teraz prijímate protistranu, ktorej certifikát nikdy nebol určený pre túto rolu.
Namiesto toho si prečítajte chybu. Pomenúva kontrolu, ktorá zlyhala, a certifikát na druhej strane možno preskúmať, aby ste videli, ktoré rozšírenia skutočne nesie. Dve minúty čítania rozhodnú, či je chyba vo vydávaní, alebo v konfigurácii. Hádanie stojí popoludnie a zvyčajne končí oslabeným profilom. Obnovený serverový certifikát, ktorý stratil rozšírené používanie kľúča, je skutočná chyba pri obnove, nie dôvod uvoľniť klienta.
Kontrola názvu je samostatná direktíva
Splnenie kontroly roly hovorí, že protistrana je nejaký server podpísaný vašou autoritou. Nehovorí nič o tom, ktorý, čo je dôležité, keď tá istá CA vydáva certifikáty pre viacero brán a jedna z nich je kompromitovaná alebo preúčelovaná.
verify-x509-name porovnáva subjekt certifikátu s hodnotou, ktorú konfigurujete, s režimami zhody pre presný subjekt, prefix alebo jedno pole. Použite pole, ktoré bránu skutočne identifikuje, a očakávajte, že ho pri zmene názvu vedome aktualizujete.
Ani jedna direktíva nenahrádza dobré zaobchádzanie s kľúčmi. Ak sa súbor klientskeho kľúča kopíruje spolu s profilom, identita protistrany je len taká silná, ako je distribučný zoznam.
Preskúmajte certifikát pred úpravou profilu
Prečítajte certifikát protistrany a klientsky protokol, v tomto poradí. Certifikát vám povie, ktoré roly deklaruje; protokol vám povie, ktorá kontrola ho odmietla.
Tieto príkazy vypíšu rozšírenia používania a riadky overenia z podrobného pripojenia:
openssl x509 -in server.crt -noout -text | grep -A1 -E "Key Usage|Extended Key Usage"
sudo openvpn --config client.ovpn --verb 4 2>&1 | grep -i verifyAk rozšírenia ukazujú rolu servera a protokol stále hlási zlyhanie roly, profil pravdepodobne ukazuje na nesprávny súbor certifikátu, nie na zlý certifikát. Ak rozšírenia ukazujú len autentifikáciu klienta, prestaňte sa pozerať na klienta a opravte vydávanie. V každom prípade obnovte kontrolu, kým pripojenie nazvete zdravým, pretože úspešné podanie ruky po odstránení overenia dokazuje menej než chyba, ktorú nahradilo.