Вы адклікалі сертыфікат, згенеравалі новы спіс, а стары профіль усё яшчэ падымае тунель. Сам адклік не зламаны: CRL — гэта падпісанае сцвярджэнне, што серыйны нумар больш не сапраўдны, і ён змяняе доступ толькі тады, калі кампанент, які завяршае TLS, загрузіць яго, для патрэбнага выдаўца, перш чым прыняць рашэнне пра допуск. Менавіта тут ляжыць большасць такіх выпадкаў, і таму адклік і адмова — два розныя факты.

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

Праверце, які кампанент прымае рашэнне пра допуск

Назавіце працэс, які правярае кліенцкі сертыфікат, бо толькі ён можа ўжыць спіс. На серверы OpenVPN гэта сам дэман, наладжаны з crl-verify. У ocserv гэта радок crl у ocserv.conf. У strongSwan уваходныя дадзеныя — загружаныя CRL разам з strictcrlpolicy. Проксі або прылада, якая завяршае TLS перад VPN, таксама можа быць сапраўдным правяральнікам, і калі гэта так, дэман за ім ніколі не бачыць кліенцкі сертыфікат.

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

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

Праверце, для якога выдаўца падпісаны спіс

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

Пацвердзіце адпаведнасць, перш чым кранаць дэман. Выдавец у сертыфікаце павінен супадаць з subject спісу:

openssl x509 -in client.crt -noout -issuer -serial
openssl crl  -in intermediate.crl -noout -issuer -lastupdate -nextupdate

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

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

Праверце, што серыйны нумар ёсць у копіі, загружанай дэманам

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

openssl crl -in intermediate.crl -noout -text | grep -i -A2 'Serial Number'
openssl ca -revoke client.crt
openssl ca -gencrl -out intermediate.crl

Затым праверце, як ваша рэалізацыя падхоплівае файл. OpenVPN чытае шлях, зададзены ў crl-verify, адзін раз пры запуску, таму новы спіс патрабуе перазапуску або сігналу перазапуску; тая ж опцыя, накіраваная на каталог, перачытваецца пры кожным злучэнні, і таму існуе рэжым каталога. strongSwan павінен перазагрузіць свае ўліковыя дадзеныя, напрыклад з дапамогай swanctl --load-creds. Тое, што файл на дыску правільны, і тое, што правяральнік яго выкарыстоўвае, — два розныя факты.

Праверце палітыку для адсутнага або пратэрмінаванага спісу

Гэта рашэнне, якое многія разгортванні ніколі не прымаюць яўна, і яно вызначае, ці абараняе адклік вас, ці замыкае ўсіх звонку. Fail-closed азначае, што без прыдатнай інфармацыі пра адклік настае адмова; fail-open азначае, што правяральнік працягвае без яе. strongSwan прадстаўляе выбар як strictcrlpolicy. OpenVPN з crl-verify адмаўляецца запускацца на файле, які не можа прачытаць або разбраць, а пратэрмінаваны спіс праяўляецца як памылка праверкі TLS пра пратэрмінаваны CRL, а не як маўклівы допуск.

State of the revocation dataFail-closed resultFail-open result
List missing or unreadableVerification fails, so expect an outageEvery client connects, including the revoked one
List past nextUpdateValidation errors until a fresh list is deployedOld status is trusted indefinitely
Revoked serial present in the loaded listHandshake rejected for that certificateHandshake rejected for that certificate

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

Праверце актыўны сеанс, затым копіі ключа

Адклік ацэньваецца падчас праверкі сертыфіката, што адбываецца пры падключэнні і пры перапагадненні. Усталяваны сеанс працуе далей, пакуль не перапагадзіць, а значэнне OpenVPN па змаўчанні — раз на гадзіну з reneg-sec 3600. Калі чалавек мусіць неадкладна выйсці з сеткі, завершыце сеанс разам з публікацыяй спісу, а затым пацвердзіце, што паўторнае падключэнне адхіляецца.

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

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

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