OpenVPN verify-x509-name: розніца паміж subject, name і name-prefix
Тып супастаўлення вызначае, якое імя сертыфіката параўноўваецца. subject, name і name-prefix — не аднолькавыя чаканні, а прадвызначэннем з'яўляецца subject.
Спачатку прачытайце тып супастаўлення, потым тэкст: verify-x509-name дырэктыва можа выглядаць правільнай і ўсё ж прыняць сертыфікат, якому вы не хацелі давяраць. Два радкі з аднолькавым чаканым тэкстам, але рознымі тыпамі — гэта розныя патрабаванні. Спачатку прачытайце тып, потым тэкст. Разглядайце дырэктыву як яшчэ адну ўмову злучэння, а не як усю праверку.
Што опцыя фактычна сцвярджае
Дырэктыва называе ідэнтычнасць, якую мусіць мець сертыфікат партнёра. Калі параўнанне не ўдаецца, OpenVPN спыняе рукапацісканне, і тунель не ўзнікае. Усё астатняе ў профілі працягвае дзейнічаць: сертыфікат павінен выводзіцца да даверанага CA, і праверка ролі павінна прайсці, таму гэта дадатковая ўмова, а не замена. Профіль, які задавальняе чаканне імя і не праходзіць праверку ролі, усё яшчэ зламаны, і журнал звычайна гэта паказвае.
Ён таксама адрозніваецца ад праверкі імя хоста, якую робіць браўзер. Браўзер супастаўляе імёны з альтэрнатыўнымі імёнамі суб'екта паводле правілаў свайго стэка TLS, а OpenVPN параўноўвае адно поле сертыфіката з выбраным вамі тыпам. Таму ўстаўка імя хоста ў стылі браўзера ў дырэктыву можа даць несупадзенне, нават калі сертыфікат сапраўды пакрывае паслугу.
subject: поўнае адрозненае імя, сімвал за сімвалам
Калі тып не напісаны, выкарыстоўваецца subject, і чаканае значэнне мусіць узнавіць усё поле subject DN сертыфіката. Парадак палёў, раздзяляльнікі, прабелы і экранаванне ўсё мае значэнне, бо параўнанне ідзе па закадаваным радку. Калі пакінуць тып па-за ўвагай, вы абралі самае строгае з трох параўнанняў. Няма кроку нармалізацыі, які выратаваў бы касметычную розніцу. Гэта варта ведаць перад першым абнаўленнем, а не пасля.
Гэтая строгасць крохкая паміж абнаўленнямі. CA, які пераўпарадкоўвае атрыбуты, дадае лішняе поле або змяняе спосаб экранавання значэння, стварае новы радок для той жа машыны, і дырэктыва, што працавала гадамі, пачынае падаць на наступнай выдачы. Захаванне прынятага DN у запісе змен ператварае наступнае абнаўленне ў дыф. Калі аператар публікуе поўны DN і гарантуе яго форму, subject — разумны выбар; у іншых выпадках вузейшае поле лягчэй утрымаць дакладным.
name: адно поле, звычайна агульнае імя
Тып name параўноўвае адно поле суб'екта. Калі профіль не кажа іншае, гэта поле — агульнае імя, і чаканае значэнне — менавіта гэта поле, а не DN вакол яго.
Прычэпка ў тым, што сучасныя сертыфікаты не заўсёды змяшчаюць імя паслугі ў CN. Многія нясуць яго ў альтэрнатыўным імені суб'екта і пакідаюць CN пустым або агульным, таму сертыфікат, які браўзер прымае, можа ўсё ж не прайсці гэтае параўнанне. Праверце сертыфікат, які вам фактычна выдалі, перш чым пісаць чаканне, і пацвердзіце, якое поле выбірае профіль. Пусты CN, параўнаны з імем, — гэта несупадзенне, а не выпадак канфігурацыі.
name-prefix: шырокі па задуме, таму абмяжуйце ахоп
Чаканне тыпу name-prefix супадае з пачаткам выбранага поля. Гэта зручна для схемы наймення і небяспечна для ўсяго агульнага.
Калі ўзяць vpn.example у якасці чакання, абодва vpn.example.com і vpn.example.net прайшлі б, калі б астатняя частка ланцуга была даверанай. Шырыня — гэта ўласцівасць, і менавіта яе трэба абгрунтаваць пісьмова. Прэфікс разумны, калі CA і схема наймення вашыя, і куды слабейшы, калі публічны CA выдае ў тым жа шаблоне. Калі схеме патрэбна гнуткасць, абмяжуйце яе на CA, а не пашырайце кліенцкую праверку.
Выберыце тып з ідэнтыфікатара, потым дакажыце
Ідзіце ад ідэнтычнасці, якую мае на ўвазе аператар. Калі ён публікуе поўны DN і трымае яго стабільным, subject выражае менавіта гэта. Калі паслуга называецца агульным імем, выкарыстоўвайце name. Калі ён валодае схемай наймення і прымае ўсю яе прастору, name-prefix гаворыць пра гэта проста.
Абнаўленні — гэта месца, дзе дырэктыва праходзіць праверку. Параўноўвайце зацверджаную ідэнтычнасць з новым сертыфікатам, а не са старым файлам, бо новы адрас канчатковай кропкі не азначае новую ідэнтычнасць сертыфіката. Не выдаляйце дырэктыву толькі таму, што знаёмы адрас адказвае: дасягальнасць і меркаваны партнёр — розныя факты, а адрас даказвае толькі тое, што нешта адказала. Запішыце дакладную памылку і публічныя звесткі пра імя ў ачышчанай справаздачы, бо несупадзенне імя можна паказаць без якога-небудзь матэрыялу прыватнага ключа.
Пасля падтрыманага выпраўлення перападлучыцеся з уключанымі ўсімі патрэбнымі праверкамі і праверце рэсурс, які вам сапраўды патрэбны. Поспех азначае, што патрэбны сервер прыняты, а не што нейкі сертыфікат працягнулі. Афіцыйны дакумент OpenVPN 2.6 manual апісвае тры тыпы і іх заўвагі пра давер, і гэта той даведнік, на які спасылаюцца, калі інтэрфейс пастаўшчыка разыходзіцца з профілем.