Android VPN-export: vad som faktiskt följer med till en ny telefon
En Android VPN-export skickar inställningar och ibland en nyckel, men aldrig enhetsauktoriseringen. Kontrollera vad som faktiskt flyttas innan du raderar den gamla telefonen.
Att exportera en VPN-profil från Android känns som ett säkerhetskopieringssteg, och menyn som erbjuder det gör ingenting för att rätta till det intrycket. Det du går därifrån med är en parser-indata, en nyckel som operativsystemet kanske aldrig lämnar tillbaka, och en auktorisering utfärdad till just den telefonen. Skilj på de tre och den användbara frågan dyker upp: vilken del saknas fortfarande på den nya enheten?
Filen är den enkla delen. De andra två avgör om migreringen fungerar.
Vad en exporterad profil faktiskt innehåller
Öppna filen i en textredigerare innan du litar på den. En OpenVPN-profil är ett litet konfigurationsspråk: remote, proto, data-ciphers och ofta inbäddade <ca>, <cert>, <key> eller <tls-crypt>-block som klienten ger till sin TLS-stack. En WireGuard-konfiguration är plattare: [Interface] håller PrivateKey och Address, sedan en [Peer] per slutpunkt med PublicKey, AllowedIPs och Endpoint. IKEv2 kommer som en .mobileconfig med nyttolastordböcker i stället för nyckelblock.
Inget av den texten är en legitimering i sig. Legitimeringen är den privata nyckeln, och varje format klistrar in den eller pekar på ett alias som bara löses upp inne i klienten som skapade det.
Var nyckeln faktiskt bor på Android
Android lagrar appdata under /data/data/<package>, läsbara bara av den appens UID. Det finns inget stödt sätt att kopiera en annan apps privata katalog från en telefon utan root, och adb backup slutade vara ett allmänt svar efter att Android 12 avvecklade det och klienter började deklarera allowBackup="false". Så en export från en Android-klient betyder vad den klienten implementerar, inte en kopia av filsystemet.
Identitetslagret ligger under appen. Om en klient importerade din nyckel till Android Keystore genereras eller packas materialet där, och senare exporter kan bära en referens till ett Keystore-alias i stället för bytes. Maskinvarustödda nycklar är byggda så att inte ens den ägande appen kan läsa ut dem, som Keystore documentation beskriver, så en profil som pekar på det aliaset importeras rent på samma telefon och misslyckas överallt annars.
Det är inte en trasig export. Det är egenskapen som plattformen ombads leverera.
Vad en profil inte kan föra över
Ställ objekten mot vad en destination accepterar:
| Objekt | Överförs? | Varför |
|---|---|---|
| Protokoll och slutpunkt | Ja, om destinationsklienten talar det | Klartext i profilen |
| CA-certifikat och värdnamnskontroll | Vanligtvis | Offentligt material, men värdnamnet måste fortfarande matcha certifikatet |
| Klientcertifikat | Ja, om det inte är bundet per enhet | Certifikat är flyttbara; utfärdaren avgör hur många enheter som får använda ett |
| Privat nyckel | Bara om den genererades utanför Keystore | Maskinvarustödda nycklar kan inte exporteras, bara ersättas |
| Konto, MFA, SSO-session | Nej | Token löper ut och förblir bundna till enheten som fick dem |
| Rutter, DNS och appomfattning | Endast som konfigurationstext | Android tillämpar dem vid anslutning via VpnService.Builder |
| Applista för delad tunnel | Sällan | Paketnamn skiljer sig mellan enheter, och listan är klienttillstånd |
Två rader orsakar det mesta av förvirringen. En nyckel som genereras på enheten och markeras som icke-exporterbar är verkligen borta med appdata, så ersättningen är en ny nyckel plus ett certifikat utfärdat för den. En sessionstoken som kopieras till en ny telefon dör oftast vid första uppdateringen, vilket läses som en misslyckad import.
Import är en tolkning och sedan en samtyckesfråga
På mottagarsidan är import en tolkning följd av en commit. Klienten läser konfigurationen, kontrollerar att varje refererat block finns och skriver sedan tunneldefinitionen i sin egen sandlåda, och det är därför filen du valde från Nedladdningar inte är det som ansluter efteråt.
Sedan kommer ett auktoriseringssteg som ingen fil kan hoppa över. Android kräver att appen anropar VpnService.prepare() och får ditt samtycke innan den får upprätta en tunnel, så en nyimporterad profil visar ändå systemdialogen en gång. Därefter byggs tunneln uttryckligen genom addAddress, addRoute, addDnsServer och addAllowedApplication eller addDisallowedApplication för routing per app. Inget av detta följer av en slutpunkt, så samma profil kan ge en annan effektiv ruttmängd i två klienter.
Certifikatbaserade uppsättningar lägger till en extra förgrening. När servern utfärdar ett certifikat till en specifik enhet, som MDM och SCEP-registrering gör, fungerar återanvändning på en andra telefon antingen tills servern kräver en session per identitet eller misslyckas vid TLS-handskakningen. Kontrollera utfärdarens policy innan du planerar återanvändning.
Verifiera den nya enheten innan du pensionerar den gamla
Håll den gamla telefonen ansluten tills den nya har klarat något bättre än en grön ikon. Bekräfta utgångsadressen från den nya enheten och DNS-resolvern den faktiskt använde. Om split tunneling spelar roll, starta en app som ska kringgå tunneln och en som inte ska, och se vilken som når din leverantör.
En kontroll avgör utgångsadressen. Öppna https://ifconfig.me i telefonens webbläsare, kör sedan curl -s https://ifconfig.me från en bärbar dator på samma Wi-Fi och jämför båda svaren med adressen din leverantör tilldelade.
Först då pensionerar du den gamla identiteten, och gör det via utfärdaren: återkalla certifikatet eller ta bort enheten från kontot. Att radera en fil från Nedladdningar avslutar ingenting, eftersom två enheter med samma certifikat ser identiska ut i serverloggen.
Om exporten visar sig inte vara flyttbar är lösningen en ny registrering i stället för ett offentligt konfigurationspaket. Be om en profil för en extra enhet, eller generera nyckelparet på den nya telefonen och skicka in CSR:n; långsammare, och det är vägen utfärdaren stöder.
Kör checklistan innan du raderar något: ny enhet ansluter, utgångsadress och DNS stämmer, appomfattningen är som avsedd, gammal identitet är återkallad, och varje sparad konfigurationsfil ligger i krypterad lagring.