OpenVPN verify-x509-name: subject, name a name-prefix
Typ porovnání rozhoduje, které jméno certifikátu se porovnává. subject, name a name-prefix nejsou rovnocenná očekávání a výchozí je subject.
Nejprve si přečtěte typ porovnání a potom text: verify-x509-name direktiva může vypadat správně, a přesto přijmout certifikát, kterému jste nechtěli důvěřovat. Dva řádky se stejným očekávaným textem, ale různými typy jsou různé požadavky. Nejprve čtěte typ, potom text. Berte direktivu jako další podmínku připojení, ne jako celou kontrolu.
Co volba skutečně tvrdí
Direktiva pojmenovává identitu, kterou musí certifikát protistrany nést. Když porovnání selže, OpenVPN přeruší handshake a tunel se nezvedne. Vše ostatní v profilu stále platí: certifikát se musí zřetězit k důvěryhodné CA a kontrola role musí projít, takže jde o dodatečnou podmínku, nikoli náhradu. Profil, který splní očekávání jména a selže v kontrole role, je stále rozbitý, a log to obvykle řekne.
Liší se také od ověřování názvu hostitele, které dělá prohlížeč. Prohlížeč porovnává jména s alternativními jmény subjektu podle pravidel svého TLS stacku, kdežto OpenVPN porovnává jedno pole certifikátu pomocí zvoleného typu. Proto vložení názvu hostitele ve stylu prohlížeče do direktivy může dát neshodu, i když certifikát službu skutečně pokrývá.
subject: celé rozlišující jméno, znak po znaku
Když typ není napsán, platí výchozí subject, a očekávaná hodnota musí reprodukovat celé subject DN certifikátu. Pořadí polí, oddělovače, mezery i escapování se počítají, protože porovnání běží na řetězci tak, jak je zakódovaný. Když typ vynecháte, vybrali jste nejpřísnější ze tří porovnání. Neexistuje normalizační krok, který by zachránil kosmetický rozdíl. Je dobré to vědět před první obnovou, ne až po ní.
Tato přísnost je křehká napříč obnovami. CA, která přeuspořádá atributy, vloží pole navíc nebo změní způsob escapování hodnoty, vytvoří pro stejný stroj nový řetězec a direktiva, která roky fungovala, začne při další emisi selhávat. Uchování přijatého DN v záznamu změn promění další obnovu v rozdíl. Kde operátor zveřejňuje celé DN a zaručuje jeho tvar, je subject rozumná volba; jinde je užší pole snazší udržet pravdivé.
name: jedno pole, obvykle obecné jméno
Typ name porovnává jedno pole subjektu. Pokud profil neříká jinak, tím polem je obecné jméno a očekávaná hodnota je přesně toto pole, ne DN kolem něj.
Zádrhel je v tom, že moderní certifikáty nedávají jméno služby vždy do CN. Mnohé je nesou v alternativním jménu subjektu a CN nechávají prázdné nebo obecné, takže certifikát, který prohlížeč přijme, může v tomto porovnání selhat. Prohlédněte si certifikát, který vám byl skutečně vydán, dříve než napíšete očekávání, a potvrďte, které pole profil volí. Prázdné CN porovnané se jménem je neshoda, ne konfigurační nehoda.
name-prefix: široký záměrně, proto vymezte rozsah
Očekávání typu name-prefix odpovídá začátku zvoleného pole. To je pohodlné pro schéma pojmenování a nebezpečné pro cokoli sdíleného.
S vpn.example jako očekáváním by prošly obě vpn.example.com i vpn.example.net za předpokladu, že zbytek řetězce je důvěryhodný. Šířka je vlastnost a zároveň část, kterou je třeba písemně odůvodnit. Prefix je rozumný, když jsou CA a schéma pojmenování vaše, a mnohem slabší, když veřejná CA vydává ve stejném vzoru. Pokud schéma potřebuje flexibilitu, omezujte ho na CA, místo abyste rozšiřovali kontrolu klienta.
Vyberte typ podle identifikátoru a pak to dokažte
Pracujte pozpátku od identity, kterou operátor zamýšlí. Pokud zveřejňuje celé DN a drží je stabilní, subject to vyjadřuje. Pokud službu pojmenovává obecným jménem, použijte name. Pokud vlastní schéma pojmenování a přijímá celý jeho prostor, name-prefix to říká výslovně.
Právě při obnovách se direktiva testuje. Porovnávejte schválenou identitu s novým certifikátem, ne se starým souborem, protože nová adresa koncového bodu neznamená novou identitu certifikátu. Nemažte direktivu jen proto, že známá adresa odpovídá: dostupnost a zamýšlená protistrana jsou různé skutečnosti, a adresa dokazuje jen to, že něco odpovědělo. Zaznamenejte přesnou chybu a veřejné údaje o jménu do očištěné zprávy, protože neshodu jména lze ukázat bez jakéhokoli materiálu soukromého klíče.
Po podporované opravě se znovu připojte se všemi zamýšlenými kontrolami a ověřte zdroj, který skutečně potřebujete. Úspěch znamená, že byl přijat zamýšlený server, ne že se nějak protlačil certifikát. Oficiální příručka OpenVPN 2.6 manual dokumentuje tři typy a jejich poznámky k důvěře a je referencí, kterou citujete, když se rozhraní dodavatele neshoduje s profilem.