remote-cert-tls server: šta provjerava u OpenVPN profilu
Direktiva provjerava ulogu kodiranu u sertifikatu druge strane, a ne njeno ime. Uporedite ulogu, sidro povjerenja i provjeru imena hosta prije nego što bilo šta onemogućite.
Tri različita pitanja odgovaraju tri različita dijela OpenVPN profila, a njihovo spajanje je način na koji ljudi na kraju isključe provjeru koja je radila. Da li je sertifikat druge strane potpisala vlast kojoj vjerujem? Da li taj sertifikat deklarira ulogu TLS servera? Da li je to baš onaj server koji sam namjeravao dosegnuti? remote-cert-tls server odgovara samo na srednje pitanje i to čini čitajući ekstenzije unutar sertifikata.
Tri provjere koje je lako spojiti u glavi
Sidro povjerenja živi u direktivi ca. Provjera uloge pripada remote-cert-tls. Provjera identiteta pripada verify-x509-name, kada je profil koristi, ili bilo kojoj provjeri imena koju postavljanje doda.
One pokrivaju različite kvarove:
| 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 može imati sve tri i dalje biti slab ako je CA podijeljen preširoko, što je pitanje upravljanja ključevima, a ne pitanje direktive.
Šta provjera uloge čita
Direktiva je makro. Širi se u zahtjev za korištenje ključa i zahtjev za prošireno korištenje ključa koji imenuje ulogu TLS web servera, pa sertifikat druge strane mora stvarno deklarisati tu namjenu. Sertifikat izdat za autentifikaciju klijenta to ne zadovoljava, čak i kada je ista vlast potpisala oba.
To je važno jer je dijeljeni CA uobičajen u malim postavljanjima. Jedna vlast potpisuje svakog klijenta i server, a bez provjere uloge bilo koji od tih sertifikata mogao bi završiti serversku stranu rukovanja. Provjera ne čini taj scenario nemogućim, ali uklanja njegovu trivijalnu verziju.
Direktiva je asimetrična po dizajnu: klijenti nose remote-cert-tls server, a serveri nose remote-cert-tls client. Zamijenite ih i svaka veza pada s greškom uloge koja izgleda kao pokvaren sertifikat.
Stariji profili ponekad koriste ns-cert-type za istu svrhu. Trenutne stranice priručnika tretiraju tu opciju kao zamijenjenu, pa profil koji se još oslanja na nju vrijedi migrirati, a ne otklanjati greške.
Zašto isključivanje izgleda kao popravka
Kada provjera uloge padne, veza se zaustavlja s greškom verifikacije i očigledan potez je izbrisati liniju. Veza se zatim podiže, što izgleda kao napredak, a zapravo je način kvara koji direktiva postoji da spriječi. Sada prihvatate drugu stranu čiji sertifikat nikada nije bio namijenjen toj ulozi.
Umjesto toga pročitajte grešku. Ona imenuje provjeru koja je pala, a sertifikat na drugoj strani može se pregledati da se vidi koje ekstenzije zaista nosi. Dvije minute čitanja rješavaju da li je kvar u izdavanju ili konfiguraciji. Nagađanje košta popodne i obično završi oslabljenim profilom. Obnovljeni serverski sertifikat koji je izgubio prošireno korištenje ključa pravi je kvar u obnovi, a ne razlog da opustite klijenta.
Provjera imena je zasebna direktiva
Zadovoljavanje provjere uloge kaže da je druga strana neki server koji je potpisala vaša vlast. Ne kaže ništa o tome koji, što je važno kada isti CA izdaje sertifikate za nekoliko gatewaya i jedan od njih je kompromitovan ili prenamijenjen.
verify-x509-name upoređuje subject sertifikata s vrijednošću koju konfigurišete, s načinima podudaranja za tačan subject, prefiks ili jedno polje. Koristite polje koje stvarno identifikuje gateway i očekujte da ćete ga namjerno ažurirati kada se ime promijeni.
Nijedna direktiva ne zamjenjuje dobro rukovanje ključevima. Ako se datoteka klijentskog ključa kopira unaokolo s profilom, identitet druge strane jak je koliko i lista distribucije.
Pregledajte sertifikat prije nego što uredite profil
Pročitajte sertifikat druge strane i klijentski dnevnik, tim redom. Sertifikat vam kaže koje uloge deklarira; dnevnik vam kaže koja provjera ga je odbila.
Ove komande ispisuju ekstenzije korištenja i linije verifikacije iz detaljne veze:
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 verifyAko ekstenzije pokazuju ulogu servera, a dnevnik i dalje prijavljuje kvar uloge, profil vjerovatno pokazuje na pogrešnu datoteku sertifikata, a ne na loš sertifikat. Ako ekstenzije pokazuju samo autentifikaciju klijenta, prestanite gledati klijenta i popravite izdavanje. U svakom slučaju, vratite provjeru prije nego što vezu nazovete zdravom, jer uspješno rukovanje nakon uklanjanja verifikacije dokazuje manje od greške koju je zamijenilo.