Паузирање на пристапот на еден клиент и негово трајно отстранување изгледаат како иста задача сѐ додека не се обидете да го вратите едното од двете. Отповикувањето на сертификат запишува запис што серверот го смета за конечен, а неговото враќање значи рачно уредување на базата на издавачот. Отфрлањето на живиот тунел е команда за управување што не менува ништо во довербата. Изберете ја полугата прашувајќи дали клучот е сѐ уште доверлив, а не прашувајќи колку итно изгледа барањето.

Верувањето: отповикано и суспендирано е исто

Изведувач се паузира една недела и рефлексот е да се отповика, бидејќи отповикување звучи како исклучување на нешто. Изгледа уредно, трае десет секунди и остава уредување на базата како единствен пат назад. Рефлексот е разбирлив и е поблиску до палење пасош отколку до затворање врата. Паузиран уред и компромитиран клуч бараат различен третман, и само едното од двете е ефтино за враќање.

Разликата е во акредитивот, а не во личноста. Клуч што е сѐ уште во вистински раце може да се паузира и продолжи без никаква загуба на доверба. Клуч што можеби е копиран не треба никогаш да се врати, бидејќи враќањето тврди дека копијата не постои.

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

Отфрлете ја живата сесија преку управувачкиот интерфејс

OpenVPN нуди управувачки интерфејс што може да наброи сесии и да убие една од нив по заедничко име. Вклучете го на localhost, држете го подалеку од јавниот интерфејс и испратете ја командата за убивање кога сесијата мора веднаш да исчезне. Командата го затвора само тој тунел, и секој друг клиент продолжува да работи.

Ова е одговор на активен проблем, а не политика за суспензија. Истиот профил може повторно да се поврзе за една минута, бидејќи ништо во неговиот акредитив не се променило. Користете го кога сесијата мора да си оди, а трајната одлука сѐ уште се носи.

Потврдете дека сесијата била поврзана пред да ја убиете, за да не барате клиент што никогаш не се поврзал. Командата за состојба подолу печати што е моментално поврзано.

printf 'status 2\nquit\n' | nc 127.0.0.1 7506
printf 'kill kiosk-14\nquit\n' | nc 127.0.0.1 7506

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

Што всушност контролира CRL

Серверот не се консултира со знаменце за отповикување зачувано во сертификатот. Тој ја чита листата за отповикување сертификати наведена во crl-verify при секоја нова врска и го одбива сертификатот чиј сериски број се појавува на таа листа. Од тоа следуваат две последици, и двете се важни оперативно. Датотеката мора да биде читлива за сметката на која серверот ги отстапува своите привилегии, а веќе поврзаниот клиент продолжува да работи додека не се поврзе повторно.

Втората последица ги изненадува луѓето при инциденти. Отповикувањето сертификат не го затвора тунелот што го користи во моментов. Ако сесијата мора веднаш да заврши, спојте го отповикувањето со управувачко убивање и третирајте ги двете дејства како одделни чекори во упатството.

Прегледајте ја листата за да видите што серверот навистина ќе наметне, наместо да се потпрете на временската ознака на последната копирана датотека. Важен е бројот на сериски броеви.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | sed -n '1,14p'
ls -l /etc/openvpn/server/crl.pem

Листа без записи и листа со вистинските записи изгледаат исто во список на директориум, затоа вреди да се испечати бројот на сериски броеви. Линијата со дозволи е исто толку важна, бидејќи датотека што демонот не може да ја прочита предизвикува дефект што личи на одбиен клиент.

Враќање на запис, внимателно

Враќањето сертификат значи превртување на запис во базата за издавање и објавување нова листа. easy-rsa 3 ја држи таа база како index.txt во директориумот PKI, додека постарите распореди користеле друг редослед. Редот започнува со буква за состојба и датум на истекување. Отповиканиот ред вметнува временска ознака за отповикувањето пред да продолжи со серискиот број, името на датотеката на сертификатот и разликовното име. Враќањето ред на место значи бришење на таа временска ознака и превртување на буквата, а сѐ друго да се остави на мир.

Прво направете резервна копија од датотеката, а измената изведете ја како скрипта, наместо да пишувате во текстуален уредувач. Печатна грешка што го менува бројот на полиња во редот ја крши издавачката постапка за секој подоцна додаден сертификат. Затоа вреди измената да се автоматизира и датотеката да се копира пред да се допре.

Второто отповикување со истото име исто така често не успева, бидејќи првото извршување го преместило тој сертификат и неговиот клуч надвор од директориумите каде алатката очекува да ги најде. Тогаш алатката не може да го најде она што било побарано да го отповика, а пораката за грешка не секогаш јасно објаснува зошто.

cp /etc/easy-rsa/pki/index.txt /root/index.txt.$(date +%F-%H%M)
grep -c '^R' /etc/easy-rsa/pki/index.txt
easyrsa gen-crl

Објавете ја новата листа, поправете го нејзиното сопствеништво и натерајте го серверот да ја прочита. Претоварање е доволно при повеќето инсталации, но потврдата мора да дојде од нова врска, бидејќи постојната сесија не проверила ништо повторно.

Проверете која полуга ја заслужува случајот

Поставете го единственото прашање што го решава целото упатство: дали приватниот клуч е сѐ уште само таму каде што треба да биде. Ако е, убивањето на сесијата и документираната пауза го покриваат случајот и не оставаат траен запис. Ако не е, единствениот безбеден одговор е нов клуч, а стариот сертификат останува отповикан.

Потоа проверете го резултатот со обид за поврзување, а не со разлика во конфигурацијата. Разликата ви кажува што сте намеравале, а врската ви кажува што наметнува серверот.

openssl crl -in /etc/openvpn/server/crl.pem -noout -text | grep -c 'Serial Number'
printf 'status 2\nquit\n' | nc 127.0.0.1 7506

Кога вратен клиент ќе се поврзе и ќе се појави во излезот за состојба, уредувањето на записот работело. Кога отповикан клиент е одбиен и дневникот го наведува CRL, отповикувањето работело. Сѐ помеѓу е проблем со дозволи или претоварање, и вреди да се поправи пред да пристигне следното барање.

Поврзани статии