Тут найбольшую шкоду робяць два перакананні: што самападпісаны сертыфікат VPN азначае, што тунель не шыфруецца, і што ўсталяванне таго, што папрасіў кліент VPN, уплывае толькі на VPN. Ні адно не вытрымлівае сутыкнення з рэальным разгортваннем. Самападпісаны сертыфікат апісвае адносіны подпісу, а не вердыкт бяспекі, і дасяжнасць даверу, які вы дадаяце, залежыць ад таго, у якое сховішча ён трапіць. Я бачыў, як служба падтрымкі імпартавала корань пастаўшчыка ў машыну Windows, каб заглушыць адно папярэджанне, а потым правяла паўдня, тлумачачы, чаму браўзер перастаў скардзіцца на непавязаны партал. Дзве паловы гэтага пытання належаць разам, таму лічыце іх адным.

Сертыфікат — не сховішча даверу

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

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

Опцыя ca у OpenVPN — самы ясны выпадак даверу ў межах праграмы. Гэты файл называе якары, якія кліент прыме, і можа ўтрымліваць адну прыватную CA або, у невялікім разгортванні, уласны самападпісаны сертыфікат сервера. Версія 2.6 таксама прымае --peer-fingerprint для замацавання адбітка SHA-256 замест распаўсюджвання файла CA. WireGuard стаіць яшчэ далей: у ім зусім няма сертыфікатаў, толькі статычны публічны ключ на кожнага партнёра, таму пытанне самаподпісу на яго не адпавядае.

Дзе вы ўсталёўваеце давер, вырашае, хто яго ўспадкуе

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

У Debian або Ubuntu скід файла ў /usr/local/share/ca-certificates/ і запуск update-ca-certificates змяняюць сістэмны набор. У Windows certutil -addstore -f Root піша ў машыннае сховішча і патрабуе падвышанага запыту, а даданне -user нацэльвае сховішча бягучага карыстальніка; гэтыя два не ўзаемазаменныя. Firefox трымае ўласную базу NSS, таму імпарт на ўзроўні АС можа ніколі там не з'явіцца.

Абсяг важны з-за таго, што можа зрабіць улада. Якая выдае CA можа падпісваць імёны, з якімі не мае адносін, таму ўсё, што давярае гэтаму сховішчу, прыме тыя подпісы. Адзін замацаваны ліст гэтага не можа; ён аўтэнтыфікуе роўна адну ідэнтычнасць партнёра. Калі мэта — каб адзін VPN злучыўся, CA у межах праграмы або замацаваны ліст дасягае гэтага, а корань на ўзроўні машыны — значна большая саступка, чым патрабуе сімптом.

Вы ўсё яшчэ шыфруеце без публічнай CA

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

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

Давер выдаўцу не прапускае праверку імя

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

OpenVPN робіць падзел бачным. verify-x509-name замацоўвае чаканы суб'ект праз супастаўленне name, name-prefix або subject. remote-cert-tls server патрабуе, каб сертыфікат партнёра мог выкарыстоўвацца як серверны сертыфікат, што адхіляе сертыфікат толькі кліента, нават калі выдаўцу давяраюць. Ні адна з налад не замяняецца адпраўкай файла CA.

Агледзьце сертыфікат, перш чым нешта вырашаць:

  • openssl x509 -in server.crt -noout -subject -issuer -dates -ext subjectAltName паказвае, хто яго выдаў, для якіх імён і да якога часу.
  • openssl verify -CAfile ca.crt server.crt правярае, ці сапраўды ланцуг, які вы плануеце адправіць, змацоўвае ліст.
  • openssl s_client -connect vpn.example.net:443 -servername vpn.example.net -CAfile ca.crt -verify_return_error працуе для канцавых пунктаў TLS, такіх як вэб-партал; пратакол OpenVPN на 1194 не з'яўляецца звычайным патокам TLS, таму гэты тэст там не прымяняецца.

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

Пяць праверак, перш чым прыняць адзін

Параўнайце адбітак праз канал, які не з'яўляецца злучэннем, што вы спрабуеце адрамантаваць: кансоль, усталёўшчык, які ў вас ужо ёсць, падпісаны файл канфігурацыі. openssl x509 -in server.crt -noout -fingerprint -sha256 на серверы і тое ж значэнне ў журнале кліента дастаткова, каб ведаць, што вы глядзіце на адзін аб'ект.

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

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

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

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