Android VPN-eksport: hva som faktisk overføres til en ny telefon
En Android VPN-eksport sender innstillinger og noen ganger en nøkkel, men aldri enhetsautorisasjonen. Sjekk hva som faktisk flyttes før du sletter den gamle telefonen.
Å eksportere en VPN-profil fra Android føles som et sikkerhetskopitsteg, og menyen som tilbyr det gjør ingenting for å rette på det inntrykket. Det du sitter igjen med er en parser-inndata, en nøkkel operativsystemet kanskje aldri gir tilbake, og en autorisasjon utstedt til nettopp den telefonen. Skill de tre og det nyttige spørsmålet dukker opp: hvilken del mangler fortsatt på den nye enheten?
Filen er den enkle delen. De to andre avgjør om migreringen virker.
Hva en eksportert profil faktisk inneholder
Åpne filen i et tekstredigeringsprogram før du stoler på den. En OpenVPN-profil er et lite konfigurasjonsspråk: remote, proto, data-ciphers og ofte innebygde <ca>, <cert>, <key> eller <tls-crypt>-blokker som klienten gir til TLS-stakken sin. En WireGuard-konfigurasjon er flatere: [Interface] holder PrivateKey og Address, deretter én [Peer] per endepunkt med PublicKey, AllowedIPs og Endpoint. IKEv2 kommer som en .mobileconfig med nyttelast-ordbøker i stedet for nøkkelblokker.
Ingenting av den teksten er en legitimasjon i seg selv. Legitimasjonen er den private nøkkelen, og hvert format limer den inn eller peker på et alias som bare løses opp inne i klienten som laget det.
Hvor nøkkelen faktisk bor på Android
Android oppbevarer appdata under /data/data/<package>, lesbare bare av den appens UID. Det finnes ingen støttet måte å kopiere en annen apps private katalog fra en telefon uten root, og adb backup sluttet å være et generelt svar etter at Android 12 avviklet det og klienter begynte å erklære allowBackup="false". Så en eksport fra en Android-klient betyr det klienten implementerer, ikke en kopi av filsystemet.
Identitetslaget ligger under appen. Hvis en klient importerte nøkkelen din til Android Keystore, genereres eller pakkes materialet der, og senere eksporter kan bære en referanse til et Keystore-alias i stedet for bytene. Maskinvarestøttede nøkler er bygget slik at selv den eierappen ikke kan lese dem ut, som Keystore documentation beskriver, så en profil som peker på det aliaset importeres rent på samme telefon og feiler overalt ellers.
Det er ikke en ødelagt eksport. Det er egenskapen plattformen ble bedt om å levere.
Hva en profil ikke kan overføre
Still objektene opp mot det en destinasjon godtar:
| Objekt | Overføres? | Hvorfor |
|---|---|---|
| Protokoll og endepunkt | Ja, hvis destinasjonsklienten snakker det | Ren tekst i profilen |
| CA-sertifikat og vertsnavnkontroll | Vanligvis | Offentlig materiale, men vertsnavnet må fortsatt stemme med sertifikatet |
| Klientsertifikat | Ja, med mindre det er bundet per enhet | Sertifikater er flyttbare; utstederen bestemmer hvor mange enheter som kan bruke ett |
| Privat nøkkel | Bare hvis generert utenfor Keystore | Maskinvarestøttede nøkler kan ikke eksporteres, bare erstattes |
| Konto, MFA, SSO-økt | Nei | Tokener utløper og forblir bundet til enheten som fikk dem |
| Ruter, DNS og app-omfang | Bare som konfigurasjonstekst | Android bruker dem ved tilkobling via VpnService.Builder |
| Appliste for delt tunnel | Sjelden | Pakkenavn er forskjellige mellom enheter, og listen er klienttilstand |
To rader skaper mest forvirring. En nøkkel som genereres på enheten og merkes ikke-eksporterbar, er faktisk borte med appdataene, så erstatningen er en ny nøkkel pluss et sertifikat utstedt til den. Et sesjonstoken kopiert til en ny telefon dør vanligvis ved første oppfrisking, noe som ser ut som en mislykket import.
Import er en parsing og deretter en samtykkeforespørsel
På mottakersiden er import en parsing etterfulgt av en commit. Klienten leser konfigurasjonen, kontrollerer at hver refererte blokk finnes, og skriver deretter tunneldefinisjonen i sin egen sandkasse, og derfor er filen du valgte fra Nedlastinger ikke det som kobles til etterpå.
Så kommer et autorisasjonstrinn som ingen fil kan hoppe over. Android krever at appen kaller VpnService.prepare() og får samtykket ditt før den kan etablere en tunnel, så en nyimportert profil viser fortsatt systemdialogen én gang. Deretter bygges tunnelen eksplisitt gjennom addAddress, addRoute, addDnsServer og addAllowedApplication eller addDisallowedApplication for ruting per app. Ingenting av dette er implisert av et endepunkt, så samme profil kan gi et annet effektivt rutesett i to klienter.
Sertifikatbaserte oppsett legger til en ekstra forgrening. Når serveren utsteder et sertifikat til en bestemt enhet, slik MDM og SCEP-registrering gjør, fungerer gjenbruk på en annen telefon enten til serveren håndhever én økt per identitet, eller det feiler ved TLS-håndtrykket. Sjekk utstederens policy før du planlegger gjenbruk.
Verifiser den nye enheten før du pensjonerer den gamle
Hold den gamle telefonen tilkoblet til den nye har bestått noe bedre enn et grønt ikon. Bekreft utgangsadressen fra den nye enheten og DNS-resolveren den faktisk brukte. Hvis split tunneling betyr noe, start en app som skal omgå tunnelen og en som ikke skal, og se hvilken som når leverandøren din.
Én kontroll avgjør utgangsadressen. Åpne https://ifconfig.me i telefonens nettleser, kjør deretter curl -s https://ifconfig.me fra en bærbar PC på samme Wi-Fi og sammenlign begge svarene med adressen leverandøren din tildelte.
Først da pensjonerer du den gamle identiteten, og gjør det gjennom utstederen: tilbakekall sertifikatet eller fjern enheten fra kontoen. Å slette en fil fra Nedlastinger avslutter ingenting, fordi to enheter med samme sertifikat ser identiske ut i serverloggen.
Hvis eksporten viser seg å ikke kunne flyttes, er løsningen en ny registrering i stedet for en offentlig konfigurasjonspakke. Be om en profil for en ekstra enhet, eller generer nøkkelparet på den nye telefonen og send inn CSR-en; langsommere, og det er veien utstederen støtter.
Kjør sjekklisten før du sletter noe: ny enhet kobles til, utgangsadresse og DNS stemmer, app-omfanget er som tiltenkt, gammel identitet er tilbakekalt, og enhver konfigurasjonsfil du har beholdt ligger i kryptert lagring.