Экспарт профілю VPN з Android успрымаецца як крок рэзервовага капіявання, і меню, якое яго прапануе, нічога не робіць, каб выправіць гэтае ўражанне. У выніку вы атрымліваеце ўвод для парсера, ключ, які аперацыйная сістэма можа ніколі не вярнуць, і аўтарызацыю, выдадзеную менавіта гэтаму тэлефону. Аддзяліце гэтыя тры рэчы — і з'явіцца карыснае пытанне: якой часткі яшчэ няма на новай прыладзе?

Файл — гэта лёгкая частка. Дзве іншыя вырашаюць, ці ўдасца міграцыя.

Што насамрэч змяшчае экспартаваны профіль

Адкрыйце файл у тэкставым рэдактары, перш чым давяраць яму. Профіль OpenVPN — гэта невялікая мова канфігурацыі: remote, proto, data-ciphers, а часта і ўбудаваныя блокі <ca>, <cert>, <key> ці <tls-crypt>, якія кліент перадае свайму стэку TLS. Канфігурацыя WireGuard прасцейшая: [Interface] змяшчае PrivateKey і Address, затым па адным [Peer] на кожную канчатковую кропку з PublicKey, AllowedIPs і Endpoint. IKEv2 прыходзіць як .mobileconfig з слоўнікамі карыснай нагрузкі замест блокаў ключоў.

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

Дзе ключ насамрэч жыве на Android

Android захоўвае даныя праграм у /data/data/<package>, і чытаць іх можа толькі UID гэтай праграмы. Няма падтрыманага спосабу скапіраваць прыватны каталог іншай праграмы з тэлефона без root, а adb backup перастаў быць агульным адказам пасля таго, як Android 12 адмяніў яго, і кліенты пачалі аб'яўляць allowBackup="false". Таму экспарт з кліента Android азначае тое, што рэалізуе гэты кліент, а не копію файлавай сістэмы.

Узровень ідэнтыфікацыі знаходзіцца пад праграмай. Калі кліент імпартаваў ваш ключ у Android Keystore, матэрыял генеруецца або агортваецца там, і наступныя экспарты могуць несці спасылку на псеўданім Keystore замест байтаў. Ключы з апаратнай падтрымкай створаны так, што нават праграма-уладальнік не можа іх прачытаць, як апісвае Keystore documentation, таму профіль са спасылкай на гэты псеўданім чыста імпартуецца на тым жа тэлефоне і церпіць няўдачу ўсюды інш.

Гэта не зламаны экспарт. Гэта ўласцівасць, якую платформу папрасілі забяспечыць.

Што профіль не можа перанесці

Супастаўце аб'екты з тым, што прыме прылада-атрымальнік:

Аб'ектПераносіцца?Чаму
Пратакол і канчатковая кропкаТак, калі кліент прызначэння яго падтрымліваеЗвычайны тэкст у профілі
Сертыфікат CA і праверка імені хостаЗвычайнаПублічны матэрыял, але імя хоста ўсё роўна павінна адпавядаць сертыфікату
Кліенцкі сертыфікатТак, калі ён не прывязаны да прыладыСертыфікаты пераносныя; выдавец вырашае, колькі прылад можа ўжываць адзін
Прыватны ключТолькі калі ён створаны па-за KeystoreКлючы з апаратнай падтрымкай нельга экспартаваць, іх можна толькі замяніць
Уліковы запіс, MFA, сеанс SSOНеТокены сканчаюцца і застаюцца прывязанымі да прылады, якая іх атрымала
Маршруты, DNS і ахоп праграмТолькі як тэкст канфігурацыіAndroid ужывае іх пры падключэнні праз VpnService.Builder
Спіс праграм для раздзеленага тунэляРэдкаНазвы пакетаў адрозніваюцца паміж прыладамі, а спіс — гэта стан кліента

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

Імпарт — гэта разбор, а затым запыт згоды

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

Далей ідзе крок аўтарызацыі, які не можа прапусціць ніводны файл. Android патрабуе, каб праграма выклікала VpnService.prepare() і атрымала вашу згоду, перш чым усталяваць тунэль, таму толькі што імпартаваны профіль яшчэ раз паказвае сістэмны дыялог. Затым тунэль будуецца яўна праз addAddress, addRoute, addDnsServer і addAllowedApplication або addDisallowedApplication для маршрутызацыі па праграмах. Нішто з гэтага не вынікае з канчатковай кропкі, таму адзін і той жа профіль можа даць розны набор дзейных маршрутаў у двух кліентах.

Канфігурацыі на аснове сертыфікатаў дадаюць яшчэ адну развілку. Калі сервер выдае сертыфікат пэўнай прыладзе, як робяць рэгістрацыя MDM і SCEP, паўторнае выкарыстанне на другім тэлефоне альбо працуе, пакуль сервер не ўвядзе адзін сеанс на асобу, альбо церпіць няўдачу на рукапацісканні TLS. Праверце палітыку выдаўца, перш чым планаваць паўторнае выкарыстанне.

Праверце новую прыладу, перш чым спісаць старую

Трымайце стары тэлефон падключаным, пакуль новы не пройдзе нешта лепшае за зялёную значку. Пацвердзіце адрас выхаду з новай прылады і DNS-рэзалвер, які яна фактычна выкарыстала. Калі split tunneling мае значэнне, запусціце праграму, якая павінна абысці тунэль, і тую, якая не павінна, і паглядзіце, якая дасягае вашага правайдэра.

Адна праверка вырашае пытанне адраса выхаду. Адкрыйце https://ifconfig.me у браўзеры тэлефона, затым выканайце curl -s https://ifconfig.me з ноўтбука ў той жа сетцы Wi-Fi і параўнайце абодва адказы з адрасам, які прызначыў ваш правайдэр.

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

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

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

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