Два клијентска сертификата са различитим серијским бројевима, различитим кључевима и чак различитим пуним субјектима и даље могу завршити у истој датотеци политике, јер сервер не гледа ништа од тога. Он чита име из сертификата и отвара одговарајућу датотеку конфигурације клијента. Ако оба сертификата носе исто име, други наслеђује политику првог у тренутку када се повеже.

Судар настаје при упису и открива се тек при повезивању, обично када уређај добије адресу или скуп рута које припадају другој машини. Спречавање значи договорити које поље сервер пресликава, а затим резервисати ту вредност пре него што се било шта потпише.

Ваши алати за сертификате вас неће упозорити, јер су јединственост унутар 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

Прва команда исписује поља субјекта одвојено, што одмах чини видљивим залуталу организациону јединицу или удвојени размак. Друга потврђује да датотека политике постоји под тачно тим именом, а трећа показује да ли је сервер конфигурисан да дозволи неколико сесија на једном имену. Покрените све три на новом сертификату пре него што напусти корак уписа, док грешка још кошта потпис, а не инцидент. Сачувајте излаз уз тикету како би следећа особа видела које је име сервер стварно добио.

Завршите стварном везом и упоредите додељену адресу и гурнуте руте са датотеком политике, а не са оним што сте намеравали да напишете. Ако два уређаја пријаве исту статичну адресу, регистар има судар који никакав преглед сертификата неће открити.

Повезани чланци