Два кліенцкія сертыфікаты з рознымі серыйнымі нумарамі, рознымі ключамі і нават рознымі поўнымі суб'ектамі ўсё яшчэ могуць весці да аднаго файла палітыкі, бо сервер не глядзіць ні на што з гэтага. Ён чытае імя з сертыфіката і адкрывае адпаведны файл канфігурацыі кліента. Калі абодва сертыфікаты нясуць адно і тое ж імя, другі ўспадкоўвае палітыку першага ў момант падключэння.

Канфлікт узнікае пры рэгістрацыі і выяўляецца толькі ў момант падключэння, звычайна калі прылада атрымлівае адрас або набор маршрутаў, што належыць іншай машыне. Каб гэтага пазбегнуць, трэба дамовіцца, якое поле супастаўляе сервер, а затым зарэзерваваць гэтае значэнне да таго, як нешта будзе падпісана.

Вашыя інструменты для сертыфікатаў не папярэдзяць вас, бо ўнікальнасць унутры X.509 і ўнікальнасць імя палітыкі OpenVPN — гэта розныя патрабаванні, якія прымяняюць розныя сістэмы.

Сервер шукае імя, а не адбітак

Пры звычайным супастаўленні на аснове сертыфікатаў сервер бярэ агульнае імя з прад'яўленага сертыфіката і шукае файл з такім імем у сваім каталогу канфігурацыі кліентаў. Гэты файл можа замацаваць статычны адрас, адпраўляць маршруты або прымяняць маркіроўку міжсеткавага экрана для кожнага кліента. Пошук — гэта параўнанне радка з імем файла, таму рэгістр, прабелы і знакі пунктуацыі маюць значэнне.

Некаторыя разгортванні наўмысна змяняюць супастаўленне, каб аўтэнтыфікаванае імя карыстальніка замяніла агульнае імя, і тады менавіта імя карыстальніка павінна быць унікальным. У любым выпадку значэнне, якое выбірае палітыку, — гэта значэнне, якое вы рэзервуеце. Вызначце, якое з іх гэта, перш чым нешта выпускаць; здагадка пасля канфлікту каштуе даражэй за пытанне.

Калі дзве ўстановы выдаюць адно імя

Арганізацыя, якая прымае сертыфікаты ад больш чым адной установы, вядзе два незалежныя працэсы рэгістрацыі, што пішуць у адну прастору імёнаў. Уласныя правілы ўнікальнасці кожнай установы дзейнічаюць унутры яе самой, таму абедзве могуць законна выдаць сертыфікат на адно і тое ж агульнае імя, і ні адна не заўважыць нічога няправільнага.

Серыйныя нумары не дапамагаюць. X.509 патрабуе, каб серыйны нумар быў унікальным у межах сферы яго эмітэнта, а гэта ўласцівасць справаздачнасці гэтай установы, а не глабальная ідэнтычнасць прылады. Праверка суб'екта таксама адрозніваецца ад праверкі агульнага імя: два сертыфікаты могуць мець адзін CN, але розніцца ў арганізацыйнай адзінцы і таму несці розныя суб'екты. Кожная з гэтых уласцівасцяў можа выконвацца, пакуль сервер усё роўна супастаўляе абодва сертыфікаты з адным імем файла.

Дакументацыя OpenSSL CA апісвае параметр unique_subject, які вызначае меркаванне яе ўласнай базы даных, і сумленны пачатак — прачытаць вашу канфігурацыю выпуску, а не меркаваць, што прымяняецца пэўны прадвызначаны настрой EasyRSA або OpenSSL.

Зарэзервуйце фактычнае імя да подпісу

Вядзіце рэестр, які супастаўляе прыладу з яе зацверджаным запісам і адтуль з дакладным імем файла палітыкі, каб імя выдзялялася аднойчы і заставалася выдзеленым. Рэзерваванне павінна быць атамарным, што на практыцы азначае абмежаванне базы даных або блакіроўку вакол кроку «выдзялі і падпішы», а не табліцу, якую рэдагуюць два чалавекі.

Затым зрабіце праверку часткай выпуску: адмаўляйце ў подпісе, калі запытанае імя ўжо існуе, і ўключайце ў гэтую праверку кожную ўстанову, якой давярае сервер, бо імя, зарэзерваванае іншай установай, гэтак жа занятае. Адхілены запыт з яснай прычынай таннейшы за заяўку пра прыладу, якая ўвесь час атрымлівае чужы статычны адрас.

Абнаўленне наўмысна паўторна выкарыстоўвае імя

Паўторны выпуск для існуючай прылады павінен даваць новы серыйны нумар пад тым жа імем палітыкі, і гэта законнае паўторнае выкарыстанне, а не канфлікт. Што трэба вырашыць загадзя — гэта перакрыццё: ці могуць стары і новы сертыфікаты быць сапраўднымі адначасова, і як старыя ўліковыя даныя выводзяцца з ладу.

Не бярыцеся за duplicate-cn, каб гэта вырашыць. Гэты параметр сервера кіруе адначасовымі злучэннямі, якія прад'яўляюць адно імя; ён не блакіруе рэгістрацыю, і яго ўключэнне не робіць адзін агульны статычны адрас бяспечным для дзвюх машын адначасова. Адкліканне звычайна ідэнтыфікуе сертыфікат па эмітэнце і серыйным нумары, таму вывад старых уліковых даных з ладу не абавязаны ануляваць яго замену, пакуль сервер атрымлівае і прымяняе правільныя даныя адклікання.

Пацвердзіце супастаўленне інструментамі на машыне

Перш чым перадаць прыладзе новыя ўліковыя даныя, прачытайце імя з сертыфіката так, як гэта зробіць сервер, а затым параўнайце яго з файлам палітыкі, які вы чакаеце ўбачыць выбраным.

openssl x509 -in device42.crt -noout -subject -nameopt sep_multiline
ls -l /etc/openvpn/ccd/device42
grep -n "duplicate-cn" /etc/openvpn/server.conf

Першая каманда друкуе палі суб'екта асобна, што адразу робіць бачнымі лішнюю арганізацыйную адзінку або падвоены прабел. Другая пацвярджае, што файл палітыкі існуе менавіта пад гэтым імем, а трэцяя паказвае, ці наладжаны сервер дазваляць некалькі сеансаў на адно імя. Запусціце ўсе тры на свежым сертыфікаце, пакуль ён яшчэ не пакінуў крок рэгістрацыі, калі памылка яшчэ каштуе подпісу, а не інцыдэнту. Захавайце вывад разам з заяўкай, каб наступны чалавек бачыў, якое імя сервер фактычна атрымаў.

Скончыце рэальным падключэннем і параўнайце прызначаны адрас і адпраўленыя маршруты з файлам палітыкі, а не з тым, што вы мелі намер напісаць. Калі дзве прылады паведамляюць адзін і той жа статычны адрас, у рэестры ёсць канфлікт, якога ніякая праверка сертыфікатаў не выявіць.

Падобныя артыкулы