Android & SNI ist ja so eine Sache – und damit Hallo Leser,

zunächst mal eine Erklärung, worüber ich berichten möchte.

Jeder der bereits einen Web Application Proxy in Verbindung mit Exchange Server aufgesetzt hat, kennt das Problem: Exchange Active Sync auf dem iPhone / Windows Phone / BlackBerry funktioniert, jedoch auf einem Android-Telefon nicht.

Das ist der zugrunde liegenden Architektur der WAP-ADFS Rolle geschuldet, die auf der „http.sys“ aufbaut. SNI steht für „Server Name Indication“. Der Client senden also beim Verbindungsaufbau via SSL / TLS den Servernamen, mit dem dieser ansprechen möchte, um so zum korrekten Zielsystem weitergeleitet zu werden.  Kann nun ein Client diese Anforderung beim Verbindungsaufbau zum WAP-Server nicht übergeben, so kann dieser auch nicht erkennen, zu welchem Zielsystem im Backend der Client möchte.

Beim WAP-Server ist für jeden Endpunkt ein Zertifikat hinterlegt, welches namensmäßig zur veröffentlichten Applikation gehört. Eine generelle Anfrage wird somit „verworfen“ –> folglich kein Exchange Active Sync für den Host „https://mail.sichel-it.de/Microsoft-Server-ActiveSync“, da Android das Ziel nicht an WAP übergeben kann.

Es gibt jedoch eine Lösung – klar, sonst gäbe es auch keinen Post ;)

Web Application Proxy Fallback Certificate

Um Clients ohne SNI Support den Zugang zu veröffentlichten Applikationen zu ermöglichen, benötigt es ein sogenanntes „Fallback Certificate“. Dieses Zertifikat sollte folgende Eigenschaften mit sich bringen:

  • ADFS-Server URL beinhalten
  • Enterprise Registrierung URL enthalten
  • Bestfalls ein Wildcard Zertifikat für die Flexibilität

Schritt 1 – Zertifikat ausfindig machen

Voraussetzung ist ein passendes Zertifikat, ich benutze mein Standard-SAN Zertifikat – Flexibilität benötige ich gerade nicht ;)

  1. Am WAP-Server anmelden
  2. PowerShell oder CMD öffnen
  3. Zertifikat Fingerabdruck ermitteln mit (Bild 1):
    dir cert:localmachine\my
  4. Fingerabdruck in die Zwischenablage kopieren

 

Schritt 2- Zertifikatsbindung erstellen

Nachdem ich nun mein passendes Zertifikat ausfindig gemacht habe, kann ich es mit einem kleinen Befehl an den WAP-Server binden.

  1. CMD öffnen
  2. Befehl eingeben (Bild 2):
    netsh http add sslcert ipport=0.0.0.0:443 certhash=FDB348602631A3F64F219FF2F40D2A93D934D38E appid={f955c070-e044-456c-ac00-e9e4275b3f04}
  3. Wiederholen auf allen ADFS / WAP-Servern mit den jeweils passenden APP IDs!
  4. Server neu starten!
  5. Fertig!
 Die APPID ist fest vergeben das es hier um den WAP-Server geht. Auch für ADFS ist eine fest vergeben:

{5d89a20c-beab-4389-9447-324788eb944a} – AD FS App ID
{f955c070-e044-456c-ac00-e9e4275b3f04} – Web Application Proxy App ID

Aufmerksame Leser wissen: DirectAccess ist ebenfalls auf dem WAP-Server installiert und nutzt die http.sys. Folglich existiert bereits eine Bindung auf 0.0.0.0:443! In meinem Test zu dem Post hat es ausgereicht, die Zertifikatsbindung auf dem ADFS zu setzen, sofern das DA-Zertifikat ein Wildcard gewesen ist!

 Kommt es zu einem Fehler, lassen sich alle Bindungen mit dem CMD-Befehl „netsh http show ssl“ anzeigen und die explizite Bindung mit „netsh http Show ssl ipport=0.0.0.0:443“ (Bild 3)

Schritt 3 – Testen

Nachdem nun erfolgreich alle Einstellungen getätigt sind, kann das E-Mail-Postfach am Android-Telefon eingerichtet werden –>geht!

Android & SNI über Web Application Proxy – kein Problem dank Fallback Certificate :)

LG Andi