Android VPN-uitvoer: wat werklik na 'n nuwe foon oorgedra word
’n Android VPN-uitvoer stuur instellings en soms 'n sleutel, maar nooit die toestelmagtiging nie. Kyk wat werklik oorgedra word voordat jy die ou foon uitwis.
Die uitvoer van 'n VPN-profiel uit Android voel soos 'n rugsteunstap, en die kieslys wat dit aanbied doen niks om daardie indruk reg te stel nie. Wat jy kry is 'n parser-invoer, 'n sleutel wat die bedryfstelsel dalk nooit teruggee nie, en 'n magtiging wat aan daardie spesifieke foon uitgereik is. Skei daardie drie en die nuttige vraag verskyn: watter deel ontbreek nog op die nuwe toestel?
Die lêer is die maklike deel. Die ander twee bepaal of die migrasie werk.
Wat 'n uitgevoerde profiel werklik bevat
Maak die lêer in 'n teksredigeerder oop voordat jy dit vertrou. 'n OpenVPN-profiel is 'n klein konfigurasietaal: remote, proto, data-ciphers, en dikwels inline <ca>, <cert>, <key> of <tls-crypt>-blokke wat die kliënt aan sy TLS-stapel gee. 'n WireGuard-konfigurasie is platter, met [Interface] wat PrivateKey en Address hou, dan een [Peer] per eindpunt wat PublicKey, AllowedIPs en Endpoint dra. IKEv2 kom as 'n .mobileconfig met payload-woordeboeke eerder as sleutelblokke.
Nie een van daardie teks is op sigself 'n geloofsbrief nie. Die geloofsbrief is die private sleutel, en elke formaat plak dit óf inline óf wys na 'n alias wat net binne die kliënt wat dit geskep het, oplos.
Waar die sleutel werklik op Android woon
Android hou app-data onder /data/data/<package>, leesbaar net deur daardie app se UID. Daar is geen ondersteunde manier om 'n ander app se private gids van 'n onge-rootde foon af te kopieer nie, en adb backup het opgehou om 'n algemene antwoord te wees nadat Android 12 dit afgeskaf het en kliënte begin het om allowBackup="false" te verklaar. So 'n uitvoer uit 'n Android-kliënt beteken wat daardie kliënt implementeer, nie 'n lêerstelselkopie nie.
Die identiteitslaag sit onder die app. As 'n kliënt jou sleutel in die Android Keystore ingevoer het, word die materiaal daar gegenereer of ingepak, en latere uitvoere kan 'n verwysing na 'n Keystore-alias eerder as die grepe dra. Hardeware-gesteunde sleutels is gebou sodat selfs die eienaar-app hulle nie kan uitlees nie, soos die Keystore documentation beskryf, so 'n profiel wat na daardie alias wys, voer skoon in op dieselfde foon en misluk oral elders.
Dit is nie 'n gebreekte uitvoer nie. Dit is die eienskap wat die platform gevra is om te lewer.
Wat 'n profiel nie kan oordra nie
Stel die objekte op teen wat 'n bestemming sal aanvaar:
| Objek | Dra oor? | Waarom |
|---|---|---|
| Protokol en eindpunt | Ja, as die bestemmingskliënt dit verstaan | Gewone teks in die profiel |
| CA-sertifikaat en gasheernaamkontrole | Gewoonlik | Publieke materiaal, maar die gasheernaam moet steeds by die sertifikaat pas |
| Kliëntsertifikaat | Ja, tensy dit per toestel gebind is | Sertifikate is draagbaar; die uitreiker besluit hoeveel toestelle een mag gebruik |
| Private sleutel | Net as dit buite die Keystore gegenereer is | Hardeware-gesteunde sleutels kan nie uitgevoer word nie, net vervang |
| Rekening, MFA, SSO-sessie | Nee | Tekens verval en bly gebind aan die toestel wat hulle verkry het |
| Roetes, DNS en app-omvang | Net as konfigurasieteks | Android pas dit by verbindingstyd toe via VpnService.Builder |
| Split-tunnel app-lys | Skaars | Pakketname verskil tussen toestelle, en die lys is kliënttoestand |
Twee rye veroorsaak die meeste verwarring. 'n Sleutel wat op die toestel gegenereer en as nie-uitvoerbaar gemerk is, is werklik weg saam met die app-data, so die vervanging is 'n nuwe sleutel plus 'n sertifikaat wat daarvoor uitgereik is. 'n Sessieteken wat na 'n nuwe foon gekopieer word, sterf gewoonlik by die eerste verversing, wat as 'n mislukte invoer lyk.
Invoer is 'n ontleding, dan 'n toestemmingsversoek
Aan die ontvangkant is invoer 'n ontleding gevolg deur 'n commit. Die kliënt lees die konfigurasie, kontroleer dat elke verwysde blok bestaan, en skryf dan die tonneldefinisie in sy eie sandput, wat die rede is waarom die lêer wat jy uit Aflaaie gekies het nie die ding is wat daarna verbind nie.
Dan kom 'n magtigingsstap wat geen lêer kan oorslaan nie. Android vereis dat die app VpnService.prepare() roep en jou toestemming kry voordat dit 'n tonnel mag vestig, so 'n pas-ingevoerde profiel wys steeds een keer die stelseldialoog. Die tonnel word dan eksplisiet gebou deur addAddress, addRoute, addDnsServer, en addAllowedApplication of addDisallowedApplication vir per-app-roetering. Nie een van daardie dinge word deur 'n eindpunt geïmpliseer nie, so dieselfde profiel kan 'n ander effektiewe roetestel in twee kliënte lewer.
Sertifikaatgebaseerde opstellings voeg nog een vurk by. Wanneer die bediener 'n sertifikaat aan 'n spesifieke toestel uitreik, soos MDM- en SCEP-inskrywing doen, werk die hergebruik daarvan op 'n tweede foon óf totdat die bediener een sessie per identiteit afdwing óf dit misluk by die TLS-handdruk. Kontroleer die uitreiker se beleid voordat jy beplan om dit te hergebruik.
Verifieer die nuwe toestel voordat jy die oue aftree
Hou die ou foon gekoppel totdat die nuwe een iets beters as 'n groen ikoon geslaag het. Bevestig die uitgangsadres van die nuwe toestel en die DNS-resolver wat dit werklik gebruik het. As split tunneling saak maak, begin 'n app wat die tonnel moet omseil en een wat dit nie moet nie, en kyk dan watter een jou ISP bereik.
Een kontrole besleg die uitgangsadres. Maak https://ifconfig.me in die foon se blaaier oop, en voer dan curl -s https://ifconfig.me uit vanaf 'n skootrekenaar op dieselfde Wi-Fi en vergelyk albei antwoorde met die adres wat jou verskaffer toegewys het.
Tree eers dan die ou identiteit af, en tree dit deur die uitreiker af: herroep die sertifikaat of verwyder die toestel uit die rekening. Om 'n lêer uit Aflaaie te verwyder beëindig niks, want twee toestelle wat dieselfde sertifikaat hou, lyk identies in die bediener se log.
As die uitvoer nie-draagbaar blyk te wees, is die oplossing 'n vars inskrywing eerder as 'n publieke konfigurasiebundel. Vra vir 'n tweede toestelprofiel, of genereer die sleutelpaar op die nuwe foon en dien die CSR in; stadiger, en dit is die pad wat die uitreiker ondersteun.
Gaan die kontrolelys na voordat jy enigiets verwyder: nuwe toestel verbind, uitgangsadres en DNS stem ooreen, per-app-omvang is wat jy bedoel het, ou identiteit is herroep, en enige konfigurasielêer wat jy gehou het, sit in geënkripteerde berging.