Een ondertekend VPN-profiel op de iPhone installeren? Lees de payloads
Een ondertekend profiel bewijst wie het verpakte, niet wat het installeert. Loop de envelop, elke payload en elk certificaat na voordat je een VPN of een root-CA vertrouwt.
Profielen komen in Instellingen binnen met een naam, een ondertekenaar en een knop Installeer, en de regel met de ondertekenaar is het deel dat de meeste mensen lezen. Die regel beantwoordt één vraag: wie heeft deze instellingen verpakt, volgens de regels voor handtekeningverificatie. Hij zegt niet dat de VPN-payload naar de gateway van je werkgever wijst, of dat een ingebed rootcertificaat in je TLS-vertrouwensopslag thuishoort. De uitleg hieronder opent het pakket in de volgorde waarin het apparaat het toepast.
Begin bij de envelop: wie heeft dit profiel ondertekend
Op iOS verschijnt het profiel onder Instellingen, Algemeen, VPN en Apparaatbeheer, met de ondertekenaar boven de knop Installeer. Lees die naam voordat je ergens op tikt, en vraag of het de organisatie is waarvan je instellingen verwachtte. Een geldige handtekening van een partij die je niet herkent is nog steeds een geldige handtekening, en die machtigt hun configuratie, niet de jouwe. Hetzelfde scherm vertelt ook of het profiel überhaupt ondertekend is.
Heb je het bestand op een Mac, bekijk het dan voordat het de telefoon bereikt. De security-tool decodeert de CMS-envelop en print de plist die het apparaat leest, dezelfde inhoud zonder een knop Installeer ertussen. Apple's configuratiehandhaving documentatie beschrijft ondertekening als herkomstvalidatie, precies de reikwijdte die hier wordt beschreven.
security cms -D -i corp-vpn.mobileconfig -o corp-vpn.plist
plutil -p corp-vpn.plist
Stop hier als de ondertekenaar niet is wie je verwachtte, of als het bestand niet ondertekend is en via een kanaal kwam dat er niet voor kan instaan. Niets verderop in deze uitleg maakt een onbetrouwbare envelop betrouwbaar.
Open elke payload en benoem wat hij installeert
Een profiel is een container, en het interessante deel is de PayloadContent array erin. Elke vermelding draagt een PayloadType die zegt wat het apparaat installeert: een beheerde VPN-configuratie, een PKCS#12-identiteit, een rootcertificaat of een beheerinschrijving. Print de types voordat je een van de instellingen leest.
plutil -extract PayloadContent xml1 -o - corp-vpn.plist |
grep -E 'PayloadType|PayloadDisplayName'
Een VPN-payload noemt een verbinding: serveradres, authenticatiemethode en mogelijk een per-app- of on-demand-regel. Een identiteitspayload levert de clientreferentie die die verbinding presenteert. Een rootcertificaat-payload voegt een vertrouwensanker toe, en een beheerpayload geeft doorlopende controle aan een server. Dat zijn vier verschillende toezeggingen, en de handtekening dekt het pakket in plaats van elk daarvan afzonderlijk te garanderen. Lees ze in die volgorde, want de VPN is nutteloos zonder de identiteit en de identiteit zegt weinig zonder te weten wie hem heeft uitgegeven.
Wachtwoordbeveiliging op het bestand is weer een andere eigenschap. Een versleuteld pakket verbergt de inhoud voor wie het wachtwoord niet heeft; het beslist niet of je moet autoriseren wat erin zit. Behandel het wachtwoord als leveringsmechanisme, niet als beoordeling.
Volg de certificaten naar de verbinding die ze gebruikt
Lijst de certificaten in het pakket en koppel elk aan een taak. Het clientcertificaat identificeert dit apparaat bij de gateway, de CA die het uitgaf hoort in de vertrouwensketen voor die verbinding, en een root die voor een proxy of een interne dienst is geïnstalleerd is niet automatisch een anker voor elke HTTPS-site. Op iOS blijft een handmatig geïnstalleerde root onvertrouwd voor TLS tot je hem inschakelt onder Instellingen, Algemeen, Certificaatvertrouwensinstellingen, terwijl een root die via beheer wordt geleverd zonder die stap vertrouwd is. Dat verschil is precies waarom het doel van de payload ertoe doet.
openssl pkcs7 -inform DER -in corp-vpn.mobileconfig -print_certs -noout
security find-certificate -a -c "Corp Root" -p | openssl x509 -noout -subject -dates
Een provider die je verkeer draagt is daarmee nog niet het TLS-eindpunt van elke website die je bezoekt. Onderschepping vereist het verkeerspad en een vertrouwensanker dat de toepassing accepteert, en een profiel met één certificaat bewijst geen van beide. Vraag welke verbinding het certificaat gebruikt en welke toepassingen het accepteren, in plaats van aan te nemen dat het installeren van het profiel alles ontsleutelt.
Na installatie: controleer, en weet wat verwijderen doet
Zodra het profiel is geïnstalleerd, bevestig het vanaf het apparaat in plaats van vanaf het bestand dat je hebt gedownload. Het instellingenscherm toont het geïnstalleerde profiel, de ondertekenaar en de payloads, en het VPN-scherm toont of de verbinding is geconfigureerd zoals bedoeld. Het gedownloade bestand verwijderen verwijdert niets; de geïnstalleerde configuratie is een apart object.
profiles show -type configuration
scutil --nc list
Bevat het profiel een beheerinschrijving, lees dan de gevolgen van verwijderen voordat je het installeert, niet erna. Die inschrijving verwijderen neemt de bijbehorende configuraties mee en kan beheerde apps verwijderen, afhankelijk van hoe het apparaat is ingeschreven. Dat is geen herstelstap om te proberen wanneer een certificaat verkeerd lijkt. Vraag de beheerder welke payload het probleem bezit voordat je iets verwijdert.
De uitleg eindigt met vier afzonderlijke antwoorden: wie het pakket ondertekende, welke payloads het installeert, welke identiteit en welk vertrouwen elke verbinding gebruikt, en wat verwijderen zou meenemen. Houd ze gescheiden en een ondertekend profiel wordt een beoordeelde beslissing in plaats van een groen vinkje.