Im Gegensatz zu den beiden anderen Konfigurationsbeispielen, müssen wir bei den Apple-Geräten für die benutzerfreundliche Autoconfiguration einen anderen Weg einschlagen, nämlich die Nutzung der Konfigurations-Profile.
Diese Konfigurations-Profile erstellt man mit dem iPhone-Konfigurationsprogramm welches man auf der Webseite von http://apple.com herunterladen kann. Die Windowsvariante findet man hier, die MAC OS X Variante gibt es hier zum Herunterladen. Weiterführende Informationen findet man zum iPCU im iPhone Wiki.
Alternativ kann man natürlich auch mit dem Editor seiner Wahl, eine vorhandene Konfigurationsdatei bearbeiten und der eigenen Installationsumgebung anpassen. Hilfreiche Informationen zum Aufbau und zu den Feldern soch einer Konfigurationsdatei, findet man im Enterprise Deployment Guide im Anhang B (Seite 73) im Kapitel Email Payload.
Bevor wir uns nun mit der Erstellung einer .mobileconfig XML-Datei befassen, richten wir uns noch einen passenden vHost auf unserem Webserver ein. Über diesen vHost werden wir dann in dern nachfolgenden Konfigurationsschritten unterschiedliche „Komfortstufen“ ausrollen.
Neben unserer Apache-Konfigurationsdatei benötigen wir natürlich noch ein entsprechendes Verzeichnis, wo wir unsere Webseitendokumente ablegen werden. Dieses Verzeichnis legen wir uns nun als erstes an.
# mkdir -p /var/www/autoconfig/apple
Als nächstes definieren wir die notwendige Konfigurationsdatei für unseren vHost im Apache Konfigurationspfad /etc/httpd/conf.d/.
# vim /etc/httpd/conf.d/autoconfig_ssl.conf
# # host für Autoconfig der Apple-Welt unseres Dovecot # <VirtualHost *:443> ServerAdmin webmaster@nausch.org ServerName autoconfig.nausch.org # Django # Required, because there is a host with same ServerName and # ServerAlias LISTENING ON PORT 80, - and if these lines are # not present, and .htaccess-Files or LDAP-Access is enabled # for one or more Directory the host on PORT 443 and PORT 80 # will ASK for .htaccess ord LDAP-Access, so please remember # ---------------------------------------------------------- # -- DO NOT DELETE THE FOLLOWING LINES, STARTING WITH SSL -- # -- WHEN USING .htaccess or LDAP-Access! -- # ---------------------------------------------------------- SSLEngine on SSLProtocol -ALL +SSLv3 +TLSv1 SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM SSLCertificateFile /etc/pki/tls/private/CAcert-class3-wildcard.crt SSLCertificateKeyFile /etc/pki/tls/private/ca.key SSLCertificateChainFile /etc/pki/tls/private/CAcert_chain.crt ServerPath / DocumentRoot "/var/www/autoconfig/" <Directory "/var/www/autoconfig/"> Options FollowSymLinks AllowOverride All Order allow,deny Allow from all <IfModule mod_mime.c> AddType application/x-apple-aspen-config .mobileconfig </IfModule> </Directory> DirectoryIndex index.html ErrorLog logs/autoconfig_error.log CustomLog logs/autoconfig_access.log combined </VirtualHost>
Bevor wir nun noch unsere Konfigurations scharf schalten, überprüfen wir noch unsere gerade angelegte Konfiguration unseres vHost einer syntaktischen Prüfung.
# service httpd configtest
Syntax OK
Da die Prüfung positiv ausfällt, starten wir unseren Webserver einmal durch.
# service httpd condrestart
Stopping httpd: [ OK ] Starting httpd: [ OK ]
Damit die Apple-Anwender über eine DNS-Abfrage unseren neuen vHOST finden können, ist natürlich unser Apache-vHost ein passender Einträge notwendig. Für den ServerName aus unserer vHost-Konfiguration definieren wir dann beim zuständigen Nameserver einen A-Record:
autoconfig.nausch.org. IN A 217.91.103.190
Unsere Konfiguration aktivieren wir dann noch, nachdem wir die serial-Nummer im Configfile entsprechend angepasst haben.
# rndc reload
server reload successful
In der einfachsten Grundvariante erstellen wir uns eine XML-Datei, mit Hilfe derer ein Anwender seinen Mailaccount einrichten kann. Von Seiten des Anwenders sind dann noch folgende Daten von Hand einzutippen:
Die Konfigurations-Definitionen unseres Mailservers hinterlegen wir nun in einer einfachen XML-Datei, nach folgendem Musterbeispiel. Wichtig hierbei ist, dass der Dateiname auf .mobileconfig endet, damit das iPhone|Pad|Pod die Konfgurationsdatei als solche auch verstehen kann.
# vim /var/www/autoconfig/apple/mailsetup.mobileconfig
<?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>PayloadContent</key> <array> <dict> <key>EmailAccountDescription</key> <string>nausch.org</string> <key>EmailAccountName</key> <string></string> <key>EmailAccountType</key> <string>EmailTypeIMAP</string> <key>EmailAddress</key> <string></string> <key>IncomingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>IncomingMailServerHostName</key> <string>imap.nausch.org</string> <key>IncomingMailServerPortNumber</key> <integer>993</integer> <key>IncomingMailServerUseSSL</key> <true/> <key>IncomingMailServerUsername</key> <string></string> <key>IncomingPassword</key> <string></string> <key>OutgoingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>OutgoingMailServerHostName</key> <string>mx01.nausch.org</string> <key>OutgoingMailServerPortNumber</key> <integer>587</integer> <key>OutgoingMailServerUseSSL</key> <true/> <key>OutgoingMailServerUsername</key> <string></string> <key>OutgoingPasswordSameAsIncomingPassword</key> <true/> <key>PayloadDescription</key> <string>Configures email account.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org.email</string> <key>PayloadOrganization</key> <string>test</string> <key>PayloadType</key> <string>com.apple.mail.managed</string> <key>PayloadUUID</key> <string>A5115AD5-3A86-4C4F-B964-576A757409AB</string> <key>PayloadVersion</key> <integer>1</integer> <key>PreventAppSheet</key> <true/> <key>PreventMove</key> <false/> <key>SMIMEEnabled</key> <false/> <key>disableMailRecentsSyncing</key> <false/> </dict> </array> <key>PayloadDescription</key> <string>Profilbeschreibung.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org</string> <key>PayloadOrganization</key> <string>nausch.org</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>E99CC7F7-6E38-4A1D-97DC-232143F67BC1</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Zum Testen unserer Konfiguration rufen wir nun auf dem Apple-Endgerät mit dem Webbrowser Safari die URL unseres ersten Test auf.
https://autoconfig.nausch.org/apple/mailsetup.mobileconfig
Das heruntergeladene Profil wird uns angezeigt. Das Profil ist natürlich nicht signiert, daher auch der rote Hinweis Unsigniert in der Darstellung.
Hier tippen wir auf die Schaltfläche [Installieren]. Als nächstes folgt ein Hinweis für den Nutzer: Die Installation dieses Profils ändert die Einstellungen auf Ihrem iPad. Da wir ja unseren Mailclient einrichten möchten, tippen wir nun auf die Schaltfläche [Installieren].
Auf den folgenden Fenstern geben wir nun die oben genannten noch fehlenden Angaben ein.
Mit einem abschließendem Tippen auf die Schaltfläche [Weiter] kommen wir zur letzten Anzeige.
Mit Anwählen der Schaltfläche [Fertig] ist die Konfiguration unseres Mailclients abgeschlossen.
O.K., so weit, so gut. Bei dem gezeigtem Beispiel fallen und zwei Dinge auf:
Im vorangegangenem Beispiel mussten am Apple-Gerät noch sehr viel Eingaben und teilweise auch doppelt gemacht werden. In dem nun folgendem Beispiel werden dies ein wenig vereinfachen.
Folgende Daten fragen wir auf einer Webseite ab, von der sich der Anwender dann seine persönliche Profildatei abholen kann:
Da in unserer Konfiguration die Punkte 2, 3 und 4 identisch sind, benötigen wir vom Anwender lediglich zwei Angaben, nämlich:
Das Kennwort darf dann der Benutzer selbst am Apple-Endgerät eingeben. Soweit, so gut, aber was benötigen wir zur Realisierung dieses Beispiels genau? Im Prinzip ist das ganze kein Hexenwerk und relativ einfach zu realisieren, benötigen wir wie im ersten Konfigurationsbeispiel eine Vorlagedatei und eine Webseite auf der wir den vollständigen Namen und die eMail-Adresse abfragen. Diese Werte fügen wir dann in die Vorlagedatei ein und liefern die Profildatei an den Anwender aus.
Im ersten Schritt werden wir nun die benötigte Vorlagedatei erstellen und diese auf unserem Webserver hinterlegen. Hierzu legen wir uns nun auf unserem Webserver ein Verzeichnis an.
# mkdir /var/www/apple
Damit unser Systemuser auch dort die Datei lesen kann, passen wir die User und Gruppenrechte dieses Verzeichnisses an.
# chown apache.root /var/www/apple/
# chmod 770 /var/www/apple/
Nun erstellen wir uns die Vorlagedatei. Wie Eingangs schon erwähnt, werden wir für die benötigten Daten Variablen festlegen, die dann später mit den entsprechenden Werten befüllt werden sollen.
# vim /var/www/apple/template
<?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>PayloadContent</key> <array> <dict> <key>EmailAccountDescription</key> <string>nausch.org</string> <key>EmailAccountName</key> <string>%ANMELDENAME%</string> <key>EmailAccountType</key> <string>EmailTypeIMAP</string> <key>EmailAddress</key> <string>%MAILADRESSE%</string> <key>IncomingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>IncomingMailServerHostName</key> <string>imap.nausch.org</string> <key>IncomingMailServerPortNumber</key> <integer>993</integer> <key>IncomingMailServerUseSSL</key> <true/> <key>IncomingMailServerUsername</key> <string>%MAILADRESSE%</string> <key>IncomingPassword</key> <string></string> <key>OutgoingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>OutgoingMailServerHostName</key> <string>mx01.nausch.org</string> <key>OutgoingMailServerPortNumber</key> <integer>587</integer> <key>OutgoingMailServerUseSSL</key> <true/> <key>OutgoingMailServerUsername</key> <string>%MAILADRESSE%</string> <key>OutgoingPasswordSameAsIncomingPassword</key> <true/> <key>PayloadDescription</key> <string>eMail Account Konfiguration.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org.email</string> <key>PayloadOrganization</key> <string>DJANGO</string> <key>PayloadType</key> <string>com.apple.mail.managed</string> <key>PayloadUUID</key> <string>A5115AD5-3A86-4C4F-B964-576A757409AB</string> <key>PayloadVersion</key> <integer>1</integer> <key>PreventAppSheet</key> <true/> <key>PreventMove</key> <false/> <key>SMIMEEnabled</key> <false/> <key>disableMailRecentsSyncing</key> <false/> </dict> </array> <key>PayloadDescription</key> <string>Profilbeschreibung.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org</string> <key>PayloadOrganization</key> <string>nausch.org</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>E99CC7F7-6E38-4A1D-97DC-232143F67BC1</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Zur Abfrage der beiden Werte vollständigen Namen sowie eMail-Adresse und dem Einfügen in die Vorlagedatei benutzen wir nun ein kleines PHP-Scripts. (Hilfreiche Informationen, Tips und Befehlsbeschreibungen findet man bei Bedarf im PHP-Handbuch.
Mit dem Editor unserer Wahl legen wir uns nun auf unserem Webserver im Webspace nachfolgende Datei an. Die Angaben im HEADER, im Teil FORMULAR und FOOTER passen wir natürlich individuell an!
# vim /var/www/autoconfig/apple/mail4iphone.php
<?php if (isset($_REQUEST['email'])):?> <?php // Definition der Variable $conf mit Angabe, wo das template-file liegt $conf = file_get_contents('/var/www/apple/template'); // Die beiden abgefragten Werte an den entsprechenden Stellen in der // Profil-Datei einfügen $conf = str_replace('%MAILADRESSE%', $_REQUEST['email'], $conf); $conf = str_replace('%ANMELDENAME%', $_REQUEST['name'], $conf); // header für Download setzen header('Content-type: application/x-apple-aspen-config; chatset=utf-8'); header('Content-Disposition: attachment; filename="iPMC.mobileconfig"'); // Ausliefern der Profil-Datei mit dem Namen iPMC.mobileconfig print $conf; ?> <?php else: ?> <html> <head> <title>Automatische eMail-Konfiguration für Apple iPhone</title> <meta name="viewport" content="width=device-width; initial-scale=1; user-scalable=no" /> </head> <body style="font: 100% Verdana;"> <!-- ********** HEADER START ********** --> <h2> <a href="http://dokuwiki.nausch.org/doku.php/start"><img src="logo.png" width="64" height="64" alt="nausch.org LOGO"></a> eMail-Services bei nausch.org </h2> <p> <a href="https://www.cacert.org/index.php?id=3">CAcert Root-Zertifikate</a> | <a href="https://buero.nausch.org">Webmailer</a> | <a href="http://keyserver.nausch.org">SKS-Keyserver</a> | <a href="http://dokuwiki.nausch.org/doku.php/centos:openpgp_beim_mua">Djangos WIKI</a> | <a href="http://omni128.de/doku.php/impressum">Impressum</a> </p> <hr> <br> <!-- ********** HEADER ENDE ********** --> <!-- ********** FORMULAR START ********** --> <form method="post" action="mail4iphone.php"> <p style="text-align: center"> Zum Erstellen Deiner individuellen AutoKonfig-Datei für Dein Apple-Gerät benötigen wir nun noch ein paar Angaben. Trage in die beiden Felder die gewünschten Daten ein. Dein Benutzername erscheint dann bei der eMailadresse links neben der eMail-Adresse.<br> <br> Bsp.:<br> <b>Benutzername</b> = <i>Django [BOfH]</i> und <b>eMail-Adresse</b> = <i>django@nausch.org</i><br> ergibt:<br> <b><i> Django [BOfH] <django@nausch.org></i></b><br><br> Zum Erstellen Deiner Konfigurationsdatei klicke bitte auf die Schaltfläche <b>Senden</b><br> <br> <br> <b>Benutzername: </b><input type="text" name="name" style="height: 30px; width: 250px;"/> <b>eMail-Adresse: </b><input type="text" name="email" style="height: 30px; width: 300px;"/> <br> <br> <input type="submit" value="Senden" style="width: 80px; height: 30px;"/> </p> </form> <!-- ********** FORMULAR ENDE ********** --> <!-- ********** FOOTER START ********** --> <hr> <!-- ********** FOOTER ENDE ********** --> </body> </html> <?php endif ?>
Zum Testen unserer Konfiguration besuchen wir mit dem Webbrowser Safari die URL unseres Konfigurators: https://autoconfig.nausch.org/apple/mail4iphone.php
Nach Eingabe der Daten und Anwahl der Schaltfläche [Senden] fällt uns, bei Eingabe der notwendigen Daten in die beiden Felder, z.B. folgende Profil-Datei entgegen.
<?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>PayloadContent</key> <array> <dict> <key>EmailAccountDescription</key> <string>nausch.org</string> <key>EmailAccountName</key> <string>Nerd</string> <key>EmailAccountType</key> <string>EmailTypeIMAP</string> <key>EmailAddress</key> <string>n3rd@it-ignorant.de</string> <key>IncomingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>IncomingMailServerHostName</key> <string>imap.nausch.org</string> <key>IncomingMailServerPortNumber</key> <integer>993</integer> <key>IncomingMailServerUseSSL</key> <true/> <key>IncomingMailServerUsername</key> <string>n3rd@it-ignorant.de</string> <key>IncomingPassword</key> <string></string> <key>OutgoingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>OutgoingMailServerHostName</key> <string>mx01.nausch.org</string> <key>OutgoingMailServerPortNumber</key> <integer>587</integer> <key>OutgoingMailServerUseSSL</key> <true/> <key>OutgoingMailServerUsername</key> <string>n3rd@it-ignorant.de</string> <key>OutgoingPasswordSameAsIncomingPassword</key> <true/> <key>PayloadDescription</key> <string>eMail Account Konfiguration.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org.email</string> <key>PayloadOrganization</key> <string>DJANGO</string> <key>PayloadType</key> <string>com.apple.mail.managed</string> <key>PayloadUUID</key> <string>A5115AD5-3A86-4C4F-B964-576A757409AB</string> <key>PayloadVersion</key> <integer>1</integer> <key>PreventAppSheet</key> <true/> <key>PreventMove</key> <false/> <key>SMIMEEnabled</key> <false/> <key>disableMailRecentsSyncing</key> <false/> </dict> </array> <key>PayloadDescription</key> <string>Profilbeschreibung.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org</string> <key>PayloadOrganization</key> <string>nausch.org</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>E99CC7F7-6E38-4A1D-97DC-232143F67BC1</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Am Apple-Endgerät wird uns entsprechend das heruntergeladene Profil angezeigt. Das Profil ist natürlich nicht signiert, daher auch der rote Hinweis Unsigniert in der Darstellung.
Über den Menüpunkt [Mehr Details] findet man weitere Angaben zu den Inhalten des Konfigurationsprofils.
Auf die vorherige Seite kommen wir zurück über den Menüpunkt [Profil installieren].
Die Installation des Konfigurationsprofils starten wir nun über die Anwahl der Schaltfläche [Installieren]. Auf dem nun erscheinenden Fenster geben wir unser Passwort für den Mailaccount ein.
Nach Anwahl der Schaltfläche [Weiter] baut der Client eine Verbindung zum Mailserver auf und testet, ob mit den angegebenen Daten eine Anmeldung möglich ist. Nach Abschluß dieses Tests wird uns der Erfolg bestätigt.
Mit Anwählen der Schaltfläche [Fertig] ist die Konfiguration unseres Mailclients abgeschlossen.
Als Erfolgskontrolle können wir nun den Apple-Mailclient aufrufen und bei bedarf unsere Mails abrufen bzw. natürlich auch verschicken.
Bei diesemKonfigurationsbeispiel ist nun die Einrichtung am Apple-Endgerät wesentlich einfacher und anwendungsfreundlicher.
Den mit unter Umständen verwirrenden roten Hinweis Unsigniert beim installierten Profil, haben wir, wie im ersten Konfigurationsbeispiel immer noch. Der Transportweg des Konfigurationsprofils erfolgte zwar verschlüsselt von der Seite https://autoconfig.nausch.org/apple/mailsetup.mobileconfig, aber besser wäre es unbestritten, wenn mit Hilfe einer Signatur die Authentizität des Konfigurationsprofils überprüft werden könnte. Dies werden wir nun noch im letzten Konfigurationsbeispiel erledigen, mit dem Ziel das grünes Häkchen ✔ neben dem Profil anzuzeigen.
Wie schon im zweitem Beispiel, wollen wir hier nun dem User eine individuelle signierte Profildatei mit seinen Daten zukommen lassen.
Dazu fragen wir auch hier seine Daten ab:
Das Kennwort darf dann der Benutzer selbst am Apple-Endgerät eingeben.
Wie schon beim vorherigen Beispiel benötigen wir eine Vorlagedatei und eine Webseite auf der wir den vollständigen Namen und die eMail-Adresse abfragen. Diese Werte fügen wir dann in die Vorlagedatei ein, signieren diese Datei mit einem x.509-Zertifikat und liefern dann diese signierte Profildatei an den Anwender aus.
Wie in den beiden anderen Beispielen, werden wir nun die benötigte Vorlagedatei erstellen und diese auf unserem Webserver hinterlegen.
Wie Eingangs bereits erwähnt, werden wir für die benötigten Daten Variablen festlegen, die dann später mit den entsprechenden Werten befüllt werden sollen.
# vim /var/www/apple/template
<?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>PayloadContent</key> <array> <dict> <key>EmailAccountDescription</key> <string>nausch.org</string> <key>EmailAccountName</key> <string>%ANMELDENAME%</string> <key>EmailAccountType</key> <string>EmailTypeIMAP</string> <key>EmailAddress</key> <string>%MAILADRESSE%</string> <key>IncomingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>IncomingMailServerHostName</key> <string>imap.nausch.org</string> <key>IncomingMailServerPortNumber</key> <integer>993</integer> <key>IncomingMailServerUseSSL</key> <true/> <key>IncomingMailServerUsername</key> <string>%MAILADRESSE%</string> <key>IncomingPassword</key> <string></string> <key>OutgoingMailServerAuthentication</key> <string>EmailAuthPassword</string> <key>OutgoingMailServerHostName</key> <string>mx01.nausch.org</string> <key>OutgoingMailServerPortNumber</key> <integer>587</integer> <key>OutgoingMailServerUseSSL</key> <true/> <key>OutgoingMailServerUsername</key> <string>%MAILADRESSE%</string> <key>OutgoingPasswordSameAsIncomingPassword</key> <true/> <key>PayloadDescription</key> <string>eMail Account Konfiguration.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org.email</string> <key>PayloadOrganization</key> <string>DJANGO</string> <key>PayloadType</key> <string>com.apple.mail.managed</string> <key>PayloadUUID</key> <string>A5115AD5-3A86-4C4F-B964-576A757409AB</string> <key>PayloadVersion</key> <integer>1</integer> <key>PreventAppSheet</key> <true/> <key>PreventMove</key> <false/> <key>SMIMEEnabled</key> <false/> <key>disableMailRecentsSyncing</key> <false/> </dict> </array> <key>PayloadDescription</key> <string>Profilbeschreibung.</string> <key>PayloadDisplayName</key> <string>nausch.org</string> <key>PayloadIdentifier</key> <string>nausch.org</string> <key>PayloadOrganization</key> <string>nausch.org</string> <key>PayloadRemovalDisallowed</key> <false/> <key>PayloadType</key> <string>Configuration</string> <key>PayloadUUID</key> <string>E99CC7F7-6E38-4A1D-97DC-232143F67BC1</string> <key>PayloadVersion</key> <integer>1</integer> </dict> </plist>
Wir legen uns nun ein kleines PHP-Script an, welches uns folgende Arbeit abnimmt.
Hilfreiche Informationen, Tips und Befehlsbeschreibungen findet man bei Bedarf im PHP-Handbuch.
Mit dem Editor unserer Wahl legen wir uns nun auf unserem Webserver im Webspace nachfolgende Datei an. Die Angaben im HEADER, im Teil FORMULAR und FOOTER passen wir natürlich individuell an!
# vim /var/www/autoconfig/apple/mailsetup.php
<?php if (isset($_REQUEST['username'])): ?> <?php // Vorlagedatei holen und Werte ersetzen $template = file_get_contents("/var/www/apple/template"); //$filehandle = fopen('/var/www/apple/template', 'r'); //$template = fread($filehandle, 2564); //fclose($filehandle); $template = str_replace('%MAILADRESSE%', $_REQUEST['email'], $template); $template= str_replace('%ANMELDENAME%', $_REQUEST['username'], $template); // Timestamp holen für Temp-Filename $timestamp = microtime(true); // generiertes Konfigfile (conf) in einer Datei speichern $filehandle = fopen("/var/www/apple/$timestamp", "w"); fwrite($filehandle, $template); fclose($filehandle); // holen und vorbereiten des privaten Schlüssels aus einer Datei. $filehandle = fopen("/var/www/apple/certificate.key", "r"); $private_key = fread($filehandle, 1675); fclose($filehandle); $privatekey = openssl_get_privatekey($private_key); // holen und vorbereiten des Signing-Zertifikates aus einer Datei. $filehandle = fopen("/var/www/apple/certificate.crt", "r"); $certificate = fread($filehandle, 1846); fclose($filehandle); // Konfigurations mit signing-Zertifikat signieren if (!openssl_pkcs7_sign ( $certificate, $privatekey, array(), 0 , realpath('/var/www/apple/certificate.chainfile') ) ) die ("Fehler beim Signieren der Konfigurationsdatei!"); // Privatekey aus Speicher löschen openssl_free_key($privatekey); $befehl = "/usr/bin/openssl smime -sign -in /var/www/apple/$timestamp -out /var/www/apple/$timestamp.signiert -signer /var/www/apple/comodo.crt -inkey /var/www/apple/comodo.key -certfile /var/www/apple/comodo.chainfile -outform der -nodetach"; $output = exec($befehl); // signierte base64 codierte Konfigurationsdatei holen und den nicht // benötigten Headerteil entfernen $signed_data = file_get_contents("/var/www/apple/$timestamp.signed"); $decoded_data = base64_decode(preg_replace('/(.+\n)+\n/', '', $signed_data, 1)); // Ergebnis in einer Datei sichern. $fp = fopen("/var/www/apple/$timestamp.cutted", "w"); fwrite($fp, $decoded_data); fclose($fp); $iPhoneSignedResponse = file_get_contents('php://input'); // header für Download setzen header('Content-type: application/x-apple-aspen-config; chatset=utf-8'); header('Content-Disposition: attachment; filename="iPMC.mobileconfig"'); // Konfigurationsfile zum Client schicken // unsigniertes Profil //$template = file_get_contents("/var/www/apple/$timestamp"); // signiertes Profil von openssl //$template = file_get_contents("/var/www/apple/$timestamp.signiert"); // signiertes Profil mit Hilfe PHP openssl $template = file_get_contents("/var/www/apple/$timestamp.cutted"); echo $template; // Temporäre Dateien löschen //echo unlink("/var/www/apple/$timestamp"); //echo unlink("/var/www/apple/$timestamp.signed"); //echo unlink("/var/www/apple/$timestamp.cutted"); ?> <?php else: ?> <html> <head> <title>Automatische eMail-Konfiguration für Apple iPhone</title> <meta name="viewport" content="width=device-width; initial-scale=1; user-scalable=no" /> </head> <body style="font: 100% Verdana;"> <!-- ********** HEADER START ********** --> <h2> <a href="http://dokuwiki.nausch.org/doku.php/start"><img src="logo.png" width="64" height="64" alt="nausch.org LOGO"></a> eMail-Services bei nausch.org </h2> <p> <a href="https://www.cacert.org/index.php?id=3">CAcert Root-Zertifikate</a> | <a href="https://buero.nausch.org">Webmailer</a> | <a href="http://keyserver.nausch.org">SKS-Keyserver</a> | <a href="http://dokuwiki.nausch.org/doku.php/centos:openpgp_beim_mua">Djangos WIKI</a> | <a href="http://omni128.de/doku.php/impressum">Impressum</a> </p> <hr> <br> <!-- ********** HEADER ENDE ********** --> <!-- ********** FORMULAR START ********** --> <form method="post" action="mailsetup.php"> <p style="text-align: center"> Zum Erstellen Deiner individuellen AutoKonfig-Datei für Dein Apple-Gerät benötigen wir nun noch ein paar Angaben. Trage in die beiden Felder die gewünschten Daten ein. Dein Benutzername erscheint dann bei der eMailadresse links neben der eMail-Adresse.<br> <br> Bsp.:<br> <b>Benutzername</b> = <i>Django [BOfH]</i> <b>eMail-Adresse</b> = <i>django@nausch.org</i><br> ergibt:<br> <b><i> Django [BOfH] <django@nausch.org></i></b><br><br> Zum Erstellen Deiner Konfigurationsdatei klicke bitte auf die Schaltfläche <b>Senden</b><br> <br> <br> <b>Benutzername: </b><input type="text" name="username" style="height: 30px; width: 250px;"/> <b>eMail-Adresse: </b><input type="text" name="email" style="height: 30px; width: 300px;"/> <br> <br> <input type="submit" value="Senden" style="width: 80px; height: 30px;"/> </p> </form> <!-- ********** FORMULAR ENDE ********** --> <!-- ********** FOOTER START ********** --> <hr> <!-- ********** FOOTER ENDE ********** --> </body> </html> <?php endif ?>
Zum Signieren der Profildateien benötigen wir noch ein passendes x.509-Zertifikat. Sofern uns das Zertifikat und der dazu gehörige Schlüssel noch nicht einzeln vorliegt, können wir diese auch aus einem P12-Zertifikatscontainer extrahieren.
In den folgenden Schritten exportieren wir nun das Zertifikat und den Schlüssel aus dem Zertifikatscontainer, so dass unser PHP-Script auf beide Teile zugreifen kann.
# openssl pkcs12 -in certificate-container.p12 -nocerts -out certificate_mit_passphrase.key
Enter Import Password: MAC verified OK Enter PEM pass phrase: Verifying - Enter PEM pass phrase:
# vim certificate_mit_passphrase.key
Bag Attributes friendlyName: Michael Nausch's Root CA ID localKeyID: 8E D8 F2 19 82 E6 6D 14 08 19 67 0B B6 70 33 C4 24 39 20 85 Key Attributes: <No Attributes> -----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgBur$1ck1$T31NV011IDI07BkiG9w0BBQwwDgQI9KkTgM0blTECAggA MBQGCCqGSIb3DQMHBAj/FsaQiJyUjASCBMjaR8 ...
Hier entfernen wir alles vor der ersten Zeile, so daß die erste Zeile den String —–BEGIN ENCRYPTED PRIVATE KEY—–
enthält.
-----BEGIN ENCRYPTED PRIVATE KEY----- MIIFDjBABgBur$1ck1$T31NV011IDI07BkiG9w0BBQwwDgQI9KkTgM0blTECAggA MBQGCCqGSIb3DQMHBAj/FsaQiJyUjASCBMjaR8 ...
# openssl rsa -in certificate_mit_passphrase.key -out certificate.key
Enter pass phrase for certificate.key: writing RSA key
# openssl pkcs12 -in certificate-container.p12 -clcerts -nokeys -out certificate.crt
Enter Import Password: MAC verified OK
# vim certificate.crt
Beim exportierten Zertifikat, sind noch Zusatzinformationen (die ersten fünf Zeilen) enthalten, die wir nun noch entfernen.
Attributes friendlyName: Michael Nausch's Root CA ID localKeyID: 8E D8 F2 19 14 08 19 67 49 0B B6 70 33 C4 24 39 20 85 subject=/CN=Michael Nausch/emailAddress=codesigning@nausch.org issuer=/O=Root CA/OU=http://www.cacert.org/CN=CA Cert Signing Authority/emailAddress=support@cacert.org -----BEGIN CERTIFICATE----- MIIFoDCCA4igAwIBAgIDDTYBMA0GCSqGSIb3DQEBBQUAMHkxEDAO7gNVBAoTB1Jv b3QgQ0ExHjAcBgNVBAsT4Eh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ Q0EgQ2VydCBTaWduaW5 ...
# vim certificate.crt
-----BEGIN CERTIFICATE----- MIIFoDCCA4igAwIBAgIDDTYBMA0GCSqGSIb3DQEBBQUAMHkxEDAO7gNVBAoTB1Jv b3QgQ0ExHjAcBgNVBAsT4Eh0dHA6Ly93d3cuY2FjZXJ0Lm9yZzEiMCAGA1UEAxMZ Q0EgQ2VydCBTaWduaW5 ...
# shred certificate-container.p12 certificate_mit_passphrase.key
Zum Testen unserer Konfiguration besuchen wir mit dem Webbrowser Safari die URL unseres Konfigurators: https://autoconfig.nausch.org/apple/mailsetup.php
Nach Eingabe der Daten und Anwahl der Schaltfläche [Senden] fällt uns, bei Eingabe der notwendigen Daten in die beiden Felder, z.B. folgende Profil-Datei entgegen. https://autoconfig.nausch.org/apple/iPMC.mobileconfig
Am Apple-Endgerät wird uns entsprechend das heruntergeladene Profil angezeigt. Da das Profil signiert wurde, taucht nun kein rote Hinweis Unsigniert in der Darstellung auf, sondern ein Überprüft.
Über den Menüpunkt [Mehr Details] findet man weitere Angaben zu den Inhalten des Konfigurationsprofils.
Tippt man auf die Schaltfläche [Signierungszertifikat] erhält man detailierte Informationen zum verwendeten Signierungszertifikat, welches zum Signieren des Konfigurationsprofils verwendet wurde.
Über die Schaltfäche [Profil Installieren] kommen wir zurück zum Installationsfenster. Wir werden nun nach dem Konfigurationspasswort des Apple-Gerätes gefragt. Diese geben wir hier ein.
Nun geben wir das Anmeldepasswort des Mailservers ein, welches wir vom Mailserverbetreiber erhalten haben.
Nun ist die Konfiguration des Mailclients vollständig und wir können den Mailclient nutzen, ohne großen zusätzlichen Konfigurationsaufwand und der Kenntnis der dazu nötigen Konfigurationsparameter.
Wir können auch das installierte Profil „Überprüfen“, das grüne Häkchen zeigt an, dass das Konfigurationsprofil von der richtigen Quelle stammt und nicht von Dritten verändert wurde.
Bei diesem Konfigurationsbeispiel ist nun die Einrichtung am Apple-Endgerät sehr einfach und anwendungsfreundlich zu installieren.
Der grüne Haken Überprüft und der dazu grün markierte Text zeigen dem Anwender nun auch an, dass das vom Mailserverbetreiber signierte Konfigurations-Profil nicht verändert wurde, also „echt“ ist. Der Transportweg des Konfigurationsprofils erfolgte dabei verschlüsselt von der Seite https://autoconfig.nausch.org/apple/mailsetup.php