Ich möchte eine Website hosten, die Subdomains (z. B. sub.domain.com) zusammen mit mehreren Websites abhören soll, die knapp unter einer Domain der zweiten Ebene (z. B. domain2.com, domain3.com) mit IIS und SSL leben.
Für die Website mit den Subdomains habe ich ein Platzhalterzertifikat (* .domain.com) und ich habe auch Zertifikate speziell für die anderen Websites (domain2.com und domain3.com).
Kann ein solches Setup auf demselben IIS gehostet werden (falls dies wichtig ist, in einer Azure Cloud Service-Webrolle)?
Das Problem ist genau das, was titobf hier erklärt hat : Theoretisch benötigen wir dafür Bindungen mit SNI, wobei der Host für domain2 / 3.com angegeben ist, und dann eine Sammelwebsite mit * host for * .domain.com. In der Praxis werden jedoch unabhängig davon, wie die Bindungen eingerichtet sind, wenn die Catch-All-Website aktiviert ist, auch alle Anfragen an domain2 / 3.com empfangen (obwohl sie angeblich nur als letztes Mittel abgeglichen werden).
Jede Hilfe wäre dankbar.
Immer noch ungelöst
Leider konnte ich das nicht lösen: Es scheint nur auf äußerst komplizierte Weise lösbar zu sein, wie das Erstellen einer Software, die sich zwischen IIS und dem Internet befindet (also im Grunde eine Firewall) und eingehende Anforderungen ändert (bevor der SSL-Handshake stattfindet! ), um das Szenario zuzulassen. Ich bin ziemlich sicher, dass dies mit IIS nicht möglich ist, egal was passiert, auch nicht mit einem nativen Modul.
Ich muss klarstellen: Wir verwenden Azure Cloud Services, daher haben wir eine weitere Einschränkung, dass wir nicht mehrere IP-Adressen verwenden können (siehe: http://feedback.azure.com/forums/169386-cloud-services-web-and -Werkerrolle / Vorschläge / 1259311-mehrere-SSL-und-Domänen-zu-einer-App ). Wenn Sie mehrere IPs auf Ihren Server verweisen können, tritt dieses Problem nicht auf, da Sie auch Bindungen für IPs erstellen können und diese Platzhalterbindungen zusammenarbeiten. Insbesondere benötigen Sie eine IP für die Wildcard-Site (da Sie jetzt eine separate IP haben, müssen Sie keine Bindung für den Wildcard-Hostnamen konfigurieren) und eine andere IP für alle anderen Nicht-Wildcard-Sites.
Tatsächlich bestand unsere Problemumgehung in der Verwendung eines nicht standardmäßigen SSL-Ports, 8443. Die SNI-Bindung ist also tatsächlich an diesen Port gebunden und funktioniert daher zusammen mit den anderen Bindungen. Nicht schön, aber eine akzeptable Problemumgehung für uns, bis Sie mehrere IPs für Webrollen verwenden können.
Die nicht funktionierenden Bindungen jetzt
Die erste https-Bindung ist SNI mit einem einfachen Zertifikat, die zweite ist nicht SNI mit einem Platzhalterzertifikat.
Die http-Site funktioniert ebenso wie die SNI-https-Site, aber die mit der Platzhalterbindung gibt einen "HTTP-Fehler 503" aus. Der Dienst ist nicht verfügbar. (ohne weitere Informationen, keine fehlgeschlagene Anforderungsverfolgung oder Ereignisprotokolleintrag).
Endlich funktioniert es im Grunde
Das Aktivieren des ETW-Ablaufverfolgungsprotokolls wie von Tobias beschrieben zeigte, dass der Grundfehler der folgende war:
Anfrage (Anforderungs-ID 0xF500000080000008) aus folgendem Grund abgelehnt: UrlGroupLookupFailed.
Soweit ich weiß, bedeutet dies, dass http.sys die Anforderung nicht an einen verfügbaren Endpunkt weiterleiten kann.
Das Überprüfen der registrierten Endpunkte mit netsh http show urlacl
ergab, dass tatsächlich etwas für Port 443 registriert war:
Reserved URL : https://IP:443/
User: NT AUTHORITY\NETWORK SERVICE
Listen: Yes
Delegate: No
SDDL: D:(A;;GX;;;NS)
Das Entfernen mit netsh http delete urlacl url=https://IP:443/
endlich aktivierter SSL-Bindung.
logman start httptrace -p Microsoft-Windows-HttpService 0xFFFF -o httptrace.etl -ets
2) Führen Sie die 503-Anforderung aus. 3) Beenden Sie das Ablaufverfolgungsprotokoll. Ausführen: logman stop httptrace -ets
4) Trace-Protokoll in Datei schreiben. run: tracerpt.exe httptrace.etl -of XML -o httptrace.xml
5) überprüfe den Grund für 503 in der XML-Datei und poste ihn hier.