Android VPN exporteren: wat er echt overgaat naar een nieuwe telefoon
Een Android VPN-export stuurt instellingen en soms een sleutel, maar nooit de apparaatautorisatie. Controleer wat er echt overgaat voordat je de oude telefoon wist.
Een VPN-profiel exporteren uit Android voelt als een back-upstap, en het menu dat het aanbiedt doet niets om dat beeld te corrigeren. Wat je meeneemt is een parser-invoer, een sleutel die het besturingssysteem misschien nooit teruggeeft, en een autorisatie die aan precies die telefoon is uitgegeven. Scheid die drie en de nuttige vraag verschijnt: welk deel ontbreekt er nog op het nieuwe apparaat?
Het bestand is het makkelijke deel. De andere twee bepalen of de migratie werkt.
Wat een geëxporteerd profiel werkelijk bevat
Open het bestand in een teksteditor voordat je het vertrouwt. Een OpenVPN-profiel is een kleine configuratietaal: remote, proto, data-ciphers en vaak inline blokken <ca>, <cert>, <key> of <tls-crypt> die de client aan zijn TLS-stack geeft. Een WireGuard-configuratie is platter: [Interface] bevat PrivateKey en Address, dan één [Peer] per eindpunt met PublicKey, AllowedIPs en Endpoint. IKEv2 komt als .mobileconfig met payload-woordenboeken in plaats van sleutelblokken.
Niets van die tekst is op zichzelf een inloggegeven. Het inloggegeven is de privésleutel, en elk formaat plakt die inline of verwijst naar een alias die alleen binnen de client wordt opgelost die hem heeft gemaakt.
Waar de sleutel echt woont op Android
Android bewaart appgegevens onder /data/data/<package>, alleen leesbaar door de UID van die app. Er is geen ondersteunde manier om de privémap van een andere app van een niet-geroote telefoon te kopiëren, en adb backup was geen algemeen antwoord meer nadat Android 12 het afschafte en clients allowBackup="false" begonnen te declareren. Een export uit een Android-client betekent dus wat die client implementeert, niet een kopie van het bestandssysteem.
De identiteitslaag zit onder de app. Als een client je sleutel in de Android Keystore heeft geïmporteerd, wordt het materiaal daar gegenereerd of ingepakt, en latere exports kunnen een verwijzing naar een Keystore-alias dragen in plaats van de bytes. Hardware-ondersteunde sleutels zijn zo gebouwd dat zelfs de eigen app ze niet kan uitlezen, zoals Keystore documentation beschrijft, dus een profiel dat naar die alias verwijst, importeert schoon op dezelfde telefoon en faalt overal elders.
Dat is geen kapotte export. Het is de eigenschap die de platform is gevraagd te leveren.
Wat een profiel niet kan overbrengen
Zet de objecten tegenover wat een bestemming accepteert:
| Object | Gaat over? | Waarom |
|---|---|---|
| Protocol en eindpunt | Ja, als de doelclient het ondersteunt | Platte tekst in het profiel |
| CA-certificaat en hostnaamcontrole | Meestal | Openbaar materiaal, maar de hostnaam moet nog steeds bij het certificaat passen |
| Clientcertificaat | Ja, tenzij het per apparaat is gebonden | Certificaten zijn overdraagbaar; de uitgever bepaalt hoeveel apparaten er één mogen gebruiken |
| Privésleutel | Alleen als die buiten de Keystore is gegenereerd | Hardware-ondersteunde sleutels kunnen niet worden geëxporteerd, alleen vervangen |
| Account, MFA, SSO-sessie | Nee | Tokens verlopen en blijven gebonden aan het apparaat dat ze heeft verkregen |
| Routes, DNS en app-bereik | Alleen als configuratietekst | Android past ze toe bij verbinden via VpnService.Builder |
| App-lijst voor split-tunnel | Zelden | Pakketnamen verschillen per apparaat, en de lijst is clientstatus |
Twee rijen veroorzaken het meeste misverstand. Een sleutel die op het apparaat is gegenereerd en als niet-exporteerbaar is gemarkeerd, is echt weg met de appgegevens, dus de vervanging is een nieuwe sleutel plus een certificaat dat daarvoor is uitgegeven. Een sessietoken dat naar een nieuwe telefoon is gekopieerd, sterft meestal bij de eerste verversing, wat leest als een mislukte import.
Import is een parse, dan een toestemmingsvraag
Aan de ontvangende kant is import een parse gevolgd door een commit. De client leest de configuratie, controleert dat elk genoemd blok bestaat, en schrijft dan de tunnedefinitie in zijn eigen sandbox, waardoor het bestand dat je uit Downloads koos niet is wat daarna verbindt.
Dan komt een autorisatiestap die geen enkel bestand kan overslaan. Android eist dat de app VpnService.prepare() aanroept en jouw toestemming krijgt voordat hij een tunnel mag opzetten, dus een net geïmporteerd profiel toont nog één keer de systeemdialoog. Daarna wordt de tunnel expliciet opgebouwd via addAddress, addRoute, addDnsServer en addAllowedApplication of addDisallowedApplication voor routing per app. Niets daarvan wordt door een eindpunt geïmpliceerd, dus hetzelfde profiel kan in twee clients een andere effectieve routeset opleveren.
Certificaatgebaseerde opstellingen voegen nog een vertakking toe. Wanneer de server een certificaat uitgeeft aan een specifiek apparaat, zoals MDM en SCEP-enrollment doen, werkt hergebruik op een tweede telefoon ofwel tot de server één sessie per identiteit afdwingt, ofwel mislukt het bij de TLS-handshake. Controleer het beleid van de uitgever voordat je hergebruik plant.
Verifieer het nieuwe apparaat voordat je het oude uit dienst neemt
Houd de oude telefoon verbonden tot de nieuwe iets beters dan een groen pictogram heeft doorstaan. Bevestig het uitgaande adres vanaf het nieuwe apparaat en de DNS-resolver die het werkelijk gebruikte. Als split tunneling ertoe doet, start dan een app die de tunnel zou moeten omzeilen en een die dat niet zou moeten, en kijk welke je provider bereikt.
Eén controle beslecht het uitgaande adres. Open https://ifconfig.me in de browser van de telefoon, voer daarna curl -s https://ifconfig.me uit vanaf een laptop op dezelfde Wi-Fi en vergelijk beide antwoorden met het adres dat je provider heeft toegewezen.
Pas dan neem je de oude identiteit uit dienst, en doe dat via de uitgever: trek het certificaat in of verwijder het apparaat uit het account. Een bestand uit Downloads verwijderen beëindigt niets, omdat twee apparaten met hetzelfde certificaat er in het serverlog identiek uitzien.
Als de export niet overdraagbaar blijkt, is de oplossing een nieuwe inschrijving in plaats van een openbare configuratiebundel. Vraag een profiel voor een tweede apparaat, of genereer het sleutelpaar op de nieuwe telefoon en dien de CSR in; langzamer, en het is de weg die de uitgever ondersteunt.
Loop de checklist door voordat je iets verwijdert: nieuw apparaat verbindt, uitgaand adres en DNS komen overeen, app-bereik is zoals bedoeld, oude identiteit is ingetrokken, en elk bewaard configuratiebestand staat in versleutelde opslag.