Mit dem Apple Configurator erstellte Profile können in Apple Geräte übertragen werden. Diese mobileconfig-Dateien sind XML Dateien. Wenn man die signiert, wird in den Profilen ein grüner Haken und überprüft in grün angezeigt. Sonst steht da, nicht signiert in ROT.
und man hat noch weitere Vorteile. Der Apple Configurator ist ein Tool das hauptsächlich für die Verwaltung von iOS- und macOS-Geräten in Unternehmen, Schulen und anderen Organisationen verwendet wird. Es ermöglicht die Massenkonfiguration und Verwaltung von iOS- und macOS-Geräten über eine benutzerfreundliche grafische Benutzeroberfläche. Es hilft auch schon, wenn man ein Gerät hat, denn mache Einstellungen kann man nur über Profile einstellen, und für meine 6 Geräte wird die Verwaltung auch schon einfacher.
Nun zu einem kleinen Beispiel, wir wollen Zertifikate in ein Profile importieren und die Profile Datei signieren. Hier nun die nötigen Schritte:
Ich habe mal drei Zertifikate (Root, Intermediate und User-Zertifikat) mit meiner XCA erstellt, die auf einem Raspberry Pi 4 (headless) läuft (und auch auf iMac) und zwar so:
Mit diesen Keys:
Das Intermediate Zertifikate (public und private Key) habe ich aus der XCA zum signieren exportieren. Und die 3 public Zertifikate (Root, Intermediate, User) habe ich exportiert. Die public Zertifikate habe ich dann im Apple Configurator wie folgt importiert, und als Zertifikate.mobileconfig Datei gespeichert.
Hier mal eine gekürze Version der XML Datei:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>ConsentText</key> <dict> <key>default</key> <string>Fügt das Root CA, Intermediate und Benutzer Zertifikate von wenzlaff.de hinzu</string> </dict> <key>PayloadContent</key> <array> <dict> <key>PayloadCertificateFileName</key> <string>wenzlaff_root_ca.crt</string> <key>PayloadContent</key> <data> LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUdWVENDQkQy Z0F3SUJBZ0lJYUtRR0lZUHlhcFF3RFFZSktvWklodmNOQVFFTEJR QXdnWjR4Q3pBSkJnTlYKQkFZVEFrUkZNUll3RkFZRFZRUUlFdzFP ... K25xMXdiZW1aK2VYclc3cDRneWZkVTVzVE9OajVmY2lzNjBOdHhL K1RBa0U9Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K </data> <key>PayloadDescription</key> <string>CA-Stammzertifikat hinzufügen</string> <key>PayloadDisplayName</key> <string>wenzlaff root ca</string> <key>PayloadIdentifier</key> <string>com.apple.security.root.DB8B...B7</string> <key>PayloadType</key> <string>com.apple.security.root</string> <key>PayloadUUID</key> <string>DB8B...8B7</string> <key>PayloadVersion</key> <integer>1</integer> </dict> <dict> <key>PayloadCertificateFileName</key> <string>wenzlaff_intermediate.crt</string> <key>PayloadContent</key> <data> LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUZXakNDQTBL Z0F3SUJBZ0lJSEZSaUZIeU9hWU13RFFZSktvWklodmNOQVFFTEJR ... L1M3SStFbDVJTGFWT2JPUQotLS0tLUVORCBDRVJUSUZJQ0FURS0t LS0tCg== </data> <key>PayloadDescription</key> <string>PKCS#1-formatiertes Zertifikat hinzufügen</string> <key>PayloadDisplayName</key> <string>wenzlaff intermediate</string> <key>PayloadIdentifier</key> <string>com.apple.security.pkcs1.EF280C...9</string> <key>PayloadType</key> <string>com.apple.security.pkcs1</string> <key>PayloadUUID</key> <string>EF28...3B9</string> <key>PayloadVersion</key> <integer>1</integer> </dict> <dict> <key>PayloadCertificateFileName</key> <string>wenzlaff_apple_doh.crt</string> <key>PayloadContent</key> <data> LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVXVENDQTBH Z0F3SUJBZ0lJTFpyM0gvS1BPMXN3RFFZSktvWklodmNOQVFFTEJR ... SwpQRXNGTi9RKy9TNEpGcVQyOFE9PQotLS0tLUVORCBDRVJUSUZJ Q0FURS0tLS0tCg== </data> <key>PayloadDescription</key> <string>PKCS#1-formatiertes Zertifikat hinzufügen</string> <key>PayloadDisplayName</key> <string>wenzlaff apple doh</string> <key>PayloadIdentifier</key> <string>com.apple.security.pkcs1.E5897...68C9</string> <key>PayloadType</key> <string>com.apple.security.pkcs1</string> <key>PayloadUUID</key> <string>E5897...8C9</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </array> <key>PayloadDescription</key> <string>Fügt alle Zertifikate aus der XCA von wenzlaff.de hinzu</string> <key>PayloadDisplayName</key> <string>TW CA Zertifikate wenzlaff.de</string> <key>PayloadIdentifier</key> <string>de.wenzlaff.apple-ca-cert</string> <key>PayloadOrganization</key> <string>TW-Soft</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>198C1...004</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist> |
Die signierte Datei hat vor und nach der XML-Datei noch die binäre Signatur.
Diese Datei könnte so auch schon in das Apple Gerät übertragen werden, hat dann aber keine grünen Haken und man bekommt Änderungen nicht mit.
Deshalb die Datei mit openssl wie folgt mit dem Intermediate Key auf der Kommandozeile signieren:
1 2 3 4 5 6 7 8 9 10 |
openssl smime -sign -in TW-Zertifikate-wenzlaff.mobileconfig -out TW-Zertifikate-wenzlaff-signiert.mobileconfig -signer wenzlaff_intermediate.crt -inkey wenzlaff_intermediate_private_key.pfx -outform der -nodetach # Dann noch, wenn diese Meldung kommt: # Enter pass phrase for PKCS12 import pass phrase: # das Passwort vom Intermediate Zertifikat eingeben |
Man hat dann eine mit dem Intermediate Key signierte Profile Datei TW-Zertifikate-wenzlaff-signiert.mobileconfig, die man per Air-Drop oder E-Mail übertragen kann. Nach aktivierung des Profils, sieht es dann so aus:
Hier nochmal der ganze Prozess als BPMN Diagramm im Detail als Zusammenfassung:
Später zeige ich noch, wie ein VPN und DNS-over-HTTPS Profil erstellt werden kann. Die werden dann, mit diese Zertifikate signiert, dazu aber später mehr…