code it

Martins Tech Blog

IIS Express komfortabel konfigurieren

... oder "Ich hab da mal was vorbereitet".

Wer schon einmal versucht hat, seinen IIS Express mit SSL mit einem abweichenden Hostnamen (also nicht localhost oder der tatsächliche Rechnername) laufen zu lassen wird es kennen - mit nur sieben winzigen Schritten kommt man zum Erfolg:

  1. hosts-Datei anpassen
  2. Bindings in der applicationhost.config des IIS Express anpassen
  3. mit netsh die Urls für gesicherte und ungesicherte Verbindungen in http.sys reservieren
  4. ggf. mit netsh die entsprechenden Ports an der Windows Firewall öffnen
  5. mit makecert selbstsigniertes Zertifikat erstellen
  6. in der Management-Konsole den Fingerabdruck des neuen Zertifikats suchen
  7. das erstellte Zertifikat mit netsh dem gewünschten SSL-Port zuweisen

Und da das RequireSSL-Attribut fest auf Port 443 verweist und man ggf. einen anderen Port verwendet, kann es sein, dass man noch eine URL-Rewrite-Rule in der web.config einrichten muss.

Die ganzen Schritte hat Scott Hanselmann sehr detailliert in seinem Post Working with SSL at Development Time is easier with IISExpress zusammengefasst.

Interessant ist der letzte Abschnitt des genannten Posts - denn dort zeigt er, dass es noch einen undokumentierten Weg gibt, der uns die meisten der genannten Schritte abnimmt. Mit Hilfe des Kommandozeilentools IISExpressAdminCmd können solche benutzerfreundlichen Urls in http.sys und hosts-Datei hinzugefügt und auch wieder entfernt werden - und das sowohl für ungesicherte als auch ssl-gesicherte Urls. Einzig um die Anpassung der applicationhost.config und ggf. notwendiger Url-Rewrite-Regeln kommt man auch damit nicht herum. 

Ein kleines Manko hat dieses Tool - es werden nur reine Rechnernamen akzeptiert (z.B. contoso); also die Konfiguration einer kompletten Url mit verschiedenen Levels (z.B. dev.contoso.com) ist damit nicht möglich. In diesem Fall kann man nicht die Abkürzung verwenden, sondern ist auf den langen Weg angewiesen.

Englische Version Englische Version