Скасавалі не той VPN-сертыфікат? Варыянты аднаўлення і абмежаванні
Вызначце выдаўцу, серыйны нумар і код прычыны, перш чым кранаць CA. Поўнае скасаванне, прыпынак сертыфіката і паўза допуску — тры варыянты выпраўлення.
Нехта скасаваў сертыфікат у кансолі CA, і цяпер карыстальнік не можа падключыцца. Першая думка — знайсці адмену, але ў большасці PKI яе няма: скасаванне — гэта заяўлены факт пра серыйны нумар, і падтрыманы шлях назад — новы сертыфікат, а не адменены запіс. Прайдзіце праверанкі ніжэй па парадку, бо тое, якое выпраўленне вам дазволена выкарыстоўваць, залежыць ад кода прычыны і ад таго, ці падвяргаўся ключ уздзеянню.
Вызначце сертыфікат, а не чалавека
Агульныя імёны паўтараюцца. Карыстальнік, які паўторна зарэгістраваўся ў мінулым квартале, можа мець два сертыфікаты з адным CN і рознымі серыйнымі нумарамі, і скасаванне аднаго пакідае другі працаздольным. Спачатку вызначце дакладны аб'ект:
openssl x509 -in client.crt -noout -serial -issuer -subject -dates
openssl crl -in ca.crl -noout -text | head -40
Запішыце серыйны нумар, выдаўцу, дату скасавання і прычыну, запісаную ў CRL. Затым пацвердзіце, якія прылады прадстаўляюць гэты серыйны нумар, бо скасаваны сертыфікат можа заставацца ўсталяваным на ноўтбуку, тэлефоне і рэзервовым маршрутызатары, а замена, якая дасягае толькі адной з іх, стварае другі інцыдэнт.
Хуткая праверка паводзін пацвярджае стан, нічога не змяняючы:
openssl verify -crl_check -CAfile ca.crt -CRLfile ca.crl client.crt
Калі яна паведамляе, што сертыфікат скасаваны, CRL і кліент згодныя; калі праверка праходзіць чыста, кліент у вашых руках не той, што скасаваны, і пошук працягваецца.
Праверце, ці выкарыстаў CA прыпынак або поўнае скасаванне
RFC 5280 вызначае certificateHold як часовы стан, а removeFromCRL як сігнал, што яго вызваляе. Гэты жыццёвы цыкл рэальны, але гэта не ўніверсальная кнопка адмены. Чытанне кода прычыны паказвае, ці збіраўся выдавец наогул падтрымліваць вызваленне.
Пастка — меркаванне, што часовая намера азначае часовы запіс. Калі запіс CA мае keyCompromise або cessationOfOperation, сертыфікат скасаваны назаўсёды, незалежна ад таго, што меў на ўвазе чалавек, які націснуў кнопку. І наадварот, запіс з пазнакай certificateHold на CA, які не рэалізуе вызваленне прыпынку, на практыцы вечны, бо нішто ніколі не апублікуе вызваленне.
CA на аснове OpenSSL ілюструюць гэтае абмежаванне. Каманда ca прымае значэнні -crl_reason, уключаючы certificateHold і removeFromCRL, але не стварае дэльта-CRL — дакументацыя OpenSSL CA указвае гэтае абмежаванне для свайго вываду CRL. Поўны CRL, які проста апушчае серыйны нумар, — гэта іншая мадэль публікацыі, чым дэльта, якая кажа "гэты запіс вызвалены", таму ўстаўка removeFromCRL у VPN CA на аснове OpenSSL не дае вызначанага стандартамі вызвалення.
Калі ключ мог быць раскрыты, заменіце яго
Скасаваны сертыфікат — гэта заява, што гэтаму ключу больш нельга давяраць. Калі скасаванне было правільным па сутнасці — ноўтбук страчаны, ключ скапіяваны на агульны дыск, прыватны ключ устаўлены ў тыкет — аднаўленне таго ж сертыфіката адмяняе рашэнне па бяспецы, якое працавала як задумана.
Выпусціце новую пару ключоў праз працэс рэгістрацыі, размеркаваце новы профіль і пакіньце стары серыйны нумар скасаваным на ўвесь яго тэрмін. Абнавіце ўсё, што замацоўвае ідэнтычнасць па серыйным нумары або адбітку, уключаючы спісы допуску, інвентарызацыю прылад і маніторынг, які чакае пэўны сертыфікат.
Аргумент зручнасці аднавіць стары рэальны, але на яго трэба адказаць адкрыта, а не ціха. "Карыстальніку патрэбен доступ сёння" — гэта прычына паскорыць выпуск, а не прычына зняць скасаванне ключа, за які вы не можаце адказаць.
Калі гэта была адміністрацыйная памылка, заменіце пад кантролем
Калі скасаванне было проста памылковым, а ключ ніколі не раскрываўся, выпраўленне ўсё яшчэ кіраваная замена, а не рэдагаванне. Выкарыстайце падтрыманы працэс выдаўцы, захавайце серыйны нумар і гісторыю выпуску і пазбягайце двух спакуслівых скаротаў: перавярнуць сімвал стану ў index.txt з R назад у V і выдаліць радок выпуску, каб новы сертыфікат мог паўторна выкарыстаць серыйны нумар.
На CA OpenSSL база даных падзелена табуляцыяй і яе лёгка прачытаць няправільна, што і робіць ручное рэдагаванне спакуслівым:
awk -F'\t' '$1=="R" {print $4, $3, $6}' index.txt
Чытайце яе, не запісвайце. Рэдагаванне файла змяняе наступны CRL без якога-небудзь аўдытарскага следу, і любы другі экзэмпляр CA або рэзервовая копія, якая ўсё яшчэ мае арыгінальны радок, пазней разыйдзецца з ёй.
Пасля выпуску замены апублікуйце свежы CRL праз звычайны механізм і дайце кліентам яго падхапіць. Выдаленне CRL, скарачэнне яго тэрміну да нуля або адключэнне праверкі скасавання ў профілі кліента выпраўляе аднаго карыстальніка, паслабляючы ўсе іншыя скасаванні, якія CA калі-небудзь публікаваў.
Пацвердзіце свежы допуск і захавайце запіс
Тэстуйце новым злучэннем, а не сеансам, які ўжо быў адкрыты. Жывы тунэль можа не паўтарыць праверкі допуску, якія выконвае свежае рукапацісканне, а кэшы CRL азначаюць, што кліент можа працягваць падключэнне, пакуль не абновіцца. Адключыцеся, падключыцеся зноў і пацвердзіце ў журнале сервера, які серыйны нумар быў дапушчаны.
Запішыце, што адбылося, пакуль гэта яшчэ свежа: які серыйны нумар скасаваны, кім, з якой прычынай, якая замена выдадзена і калі CRL быў перавыданы. Гэты запіс робіць магчымым наступны агляд скасавання і служыць доказам таго, што памылка была ўладжана, а не схавана.
Для кароткіх прыпынкаў у будучыні выкарыстоўвайце механізм прыпынку допуску, калі ён ёсць у разгортванні — уліковы запіс, адключаны на ўзроўні ідэнтычнасці, выдаленае членства ў групе, затрыманы профіль кліента. Гэта трымае часовае рашэнне па палітыцы асобна ад пытання, ці выпушчаны сертыфікат яшчэ заслугоўвае даверу, і менавіта гэтае адрозненне было страчана ў першы раз.