IIS7: Hostname vor Ort mit SSL-Zertifikat und Port 443 kann nicht festgelegt werden

47

Betrachten Sie einen Windows 2008 SP2-Computer mit IIS7. Die Aufgabe besteht darin, ein Zertifikat und einen Hostnamen auf die einzige Site auf diesem Computer anzuwenden. Die Host-Header der Site müssen seinabc.123.example.com

Der erste Schritt war die erfolgreiche Installation der .pfx-Datei im Personal Store.

IIS7 findet das Zertifikat als verfügbar, lässt jedoch die Eingabe eines Hostnamens nicht zu. Das Textfeld für den Hostnamen ist IMMER deaktiviert / ausgegraut, noch bevor ich mein Zertifikat auswähle. Ich habe sogar die Standard-Port-80-Bindung gelöscht.

Seitenbindungen

Frage: Wie kann ich einen Hostnamen für diese Site festlegen? Geht es darum, dass dieses Zertifikat ein Wildcard-Zertifikat ist? Ich verstehe, dass die SSL-Anfrage auf dem Webserver eingeht und der Host-Header im Paket verschlüsselt ist. Warum sollte IIS6 dann die Angabe des Host-Headers zulassen, IIS7 nicht?

Update: Das Zertifikat ist nicht Teil des Problems. Ich habe eine neue Site auf dem Computer erstellt und bei Auswahl der https-Bindung ist das Textfeld für den Hostnamen deaktiviert.

p.campbell
quelle

Antworten:

32

Sie können es nicht über die Benutzeroberfläche tun, sondern müssen es über die Befehlszeile tun. Hier ist eine schöne Einführung:

http://www.sslshopper.com/article-ssl-host-headers-in-iis-7.html

Joeqwerty
quelle
33
Praktischer Trick: Geben Sie dem Zertifikat einen Anzeigenamen, der mit '*' beginnt. Ein IIS wird das Feld für die Host-Kopfzeile nicht grau hinterlassen
russau
1
Ich weiß, dass dies alt ist, und es ist nur in einem Kommentar, aber dieser praktische Trick hat mir einige Frustration erspart. Danke!
Bpursley
45

Es funktioniert in GUI ...

Stellen Sie einfach sicher, dass der angezeigte Name des zu installierenden Zertifikats mit dem Multidomänennamen übereinstimmt, den Sie für das Zertifikat festgelegt haben.

dh * .companydomain.com

Wenn Sie bei der Installation des Zertifikats in IIS für * .companydoman.com cert den Eintrag 'Nice friendly name' eingeben, wird das Feld für den Hostnamen-Header grau angezeigt.

Wenn Sie * .companyname.com als Anzeigenamen verwenden, sind Sie golden.

Boom.

Lindsay Rex
quelle
14
Danke für diesen Tipp! Falls jemand anderes ein Zertifikat von IIS nicht umbenennen kann (kann jemand?), Können Sie das Zertifikat im MMC-Snap-In für Zertifikate umbenennen. Laden Sie einfach MMC, fügen Sie das Zertifikat-Snap-In hinzu und wählen Sie Computerkonto, Lokaler Computer. Nachdem Sie das Zertifikat-Snap-In geladen haben, können Sie zu Zertifikate (Lokaler Computer)> Persönlich> Zertifikate navigieren und mit der rechten Maustaste die Option Eigenschaften Ihres Zertifikats auswählen. Ändern Sie das Feld Anzeigename in * .yoursite.com und laden Sie das IIS-Manager-Snap-In
Garrett
4
Der Anzeigename muss anscheinend nur mit "*" beginnen, kann danach jedoch einen beliebigen anderen Namen enthalten. In meinem Fall hatte ich ein Zertifikat, das für mehrere verschiedene Domains gültig war, die außer * .com keine gemeinsame Wurzel hatten, und das als den Anzeigenamen zu bezeichnen, schien seltsam. Also habe ich es stattdessen * -mein-beschreibender-Name-hier genannt. Und danke @Garrett für den Umbenennungstipp!
Wojtow
Das ist die wahre Antwort. Nice
Joe Phillips
@ Garrett Bedeutet dies, dass, wenn ich einen Anzeigenamen wie "My Domain SSL" verwendet habe, die Funktionen weiterhin ausgeführt werden, obwohl das Feld für den Hostnamen leer ist. Es hat mich wirklich verrückt gemacht, als ich meine Host-Namen verloren habe, aber meine 4 Wildcard-Sub-Domains scheinen mit der neu ausgestellten SSL gut zu funktionieren? Wenn Sie '* .mydomain.com' als Anzeigenamen verwenden, können Sie nur den Hostnamen sehen, aber unter der Haube sollten beide Optionen funktionieren. Andernfalls sollte IIS uns ausdrücklich auffordern, einen qualifizierten Domänennamen und keinen Anzeigenamen zu verwenden.
Charles Robertson
10

Die kurze Antwort lautet, dass an jede IP nur ein Zertifikat gebunden werden kann, sodass die Zertifikatbindung unabhängig davon angewendet wird, welcher Hostname an diese IP-Adresse gerichtet ist. Wenn Sie einen Hostnamen angeben können, bedeutet dies, dass Sie mehrere Kombinationen aus Hostnamen und Zertifikat auf derselben IP-Adresse und demselben Port haben können (wie bei Nicht-SSL-Einträgen). Dies ist jedoch nicht der Fall, sodass das Feld nicht verfügbar ist.

Die umfassendere Erklärung ist, dass SSL Ihren Datenverkehr verschlüsselt und ein Teil dieses Datenverkehrs die vom Browser an den Server gesendeten HTTP-Header sind. Einer dieser Header ist der "Host" -Header, mit dem IIS bestimmt, welche Site mit der Anforderung geladen werden soll. Da das Zertifikat geladen werden muss, um die sichere Verbindung herzustellen, bevor die Anforderungsheader gesendet werden, muss IIS das Zertifikat nur auf der Grundlage der IP-Adresse und der Portnummer auswählen, wobei der "Host" -Header als Bestimmungsfaktor im Dunkeln gelassen wird welche Site geladen werden soll, damit Sie keine eingeben können.

In diesem Artikel wird die Funktionsweise der SSL-Verbindung detaillierter beschrieben.

Justin Scott
quelle
Danke für diese Antwort, Justin. Ich bin mir immer noch nicht sicher, warum ich in IIS7 keinen Hostheader angeben darf, selbst wenn ich eine der IP-Adressen in der Liste auswähle. IIS6 funktioniert ohne Probleme. Wie bereits erwähnt, ist dies die einzige Site auf der Maschine.
Campbell
2
Host-Header können mit einem Wildcard-Zertifikat oder einem "UC" -Zertifikat für mehrere Domänen arbeiten: sslshopper.com/unified-communications-uc-ssl-certificates.html . In diesem Fall hat der Server nur 1 Zertifikat, um zu dienen, obwohl es mehrere Hostnamen gibt.
Russau
Sehr klare Erklärung. +1
Dan Solovay
7

Die SSLShopper-Antwort hat bei mir nicht funktioniert, da die Bindung ohne den Hostheader belassen wurde und Sie diese Bindung nicht entfernen konnten, ohne die Verbindung zum Zertifikat zu unterbrechen. Hier ist die Methode, mit der ich es zum Laufen gebracht habe:

Beachten Sie, dass in dieser Antwort davon ausgegangen wird, dass Ihr Zertifikat bereits generiert, dem Zertifikatspeicher hinzugefügt und IIS hinzugefügt wurde. Es wird auch davon ausgegangen, dass Sie außer SSL keine weiteren Bindungen für Ihre Website wünschen.

Zuerst müssen wir einige Informationen sammeln. Wir benötigen den Hash, die Anwendungs-ID und den Hostnamen.

Schritte

  1. Öffnen Sie IIS, wählen Sie Ihren Server aus und doppelklicken Sie im unteren Bereich auf "Server Certificates". Notieren Sie die Adresse "Ausgestellt an". Dies ist unser Hostname. Speichere das.
  2. Wählen Sie Ihre Site aus
  3. Binden Sie Ihre Site mit dem http-Protokoll an Port 80
  4. Entfernen Sie alle anderen Bindungen
  5. Binden Sie Ihre Site mit dem https-Protokoll an Port 443
  6. Öffnen Sie eine Eingabeaufforderung

    netsh http show sslcert
    
  7. Speichern Sie den Zertifikatshash und die Anwendungs-ID

  8. Entfernen Sie die https-Bindung auf Ihrer Website
  9. An der Eingabeaufforderung:

    netsh http add sslcert ipport=0.0.0.0:443 certstorename=my certhash=<put Certificate Hash here> appid={<put Application ID here>}
    
    appcmd set site /site.name:"<put site name here>" /+bindings.[protocol='https',bindingInformation='*:443:<put host name here>']
    

Hinweis: Appcmd.exe befindet sich unter c: \ windows \ system32 \ insetsrv. Möglicherweise müssen Sie sich in diesem Ordner befinden, damit dieser Befehl ausgeführt werden kann.

  1. Entfernen Sie die http-Bindung von Ihrer Site
Slogmeister Extraordinaire
quelle
Vielen Dank! Dies hat mir geholfen, meine Website endlich in HTTPS umzusetzen. Ich habe einen Tippfehler in einem der Befehle korrigiert, musste aber die Überschrift Schritte hinzufügen, um die Mindestlängenanforderungen zu überschreiten. Sie können dies jederzeit entfernen - Ihre ursprüngliche Antwort ist einfach zu befolgen. Prost!
Potatopeelings
Dies funktionierte bei mir mit einem Zertifikat mit 6 SANs (kein Platzhalterzertifikat) mit einer geringfügigen Abweichung, da ich mehrere Standorte hatte. Ich musste die Schritte 1 bis 7 einmal ausführen. Schritt 8 musste an jeder Stelle durchgeführt werden. Der erste Befehl von Schritt 9 musste einmal ausgeführt werden und der zweite Befehl von Schritt 9 musste einmal pro Standort ausgeführt werden.
Steve Kaye
4

Die hier akzeptierte Antwort ist verwirrend und ich denke nicht, dass sie für die Frage richtig ist. Es sollte nicht die akzeptierte Antwort sein.

Das Problem

Sie haben ein Wildcard-SSL wie *.ipsum.comund das Zertifikat ist installiert, aber Sie können keinen Hostnamen für die Site in IIS wählen, wenn Sie versuchen, eine HTTPS-Bindung hinzuzufügen, da das Textfeld ausgegraut ist.

Die Lösung

Ihr Wildcard-SSL kann mit jeder Subdomain verwendet werden. Sie müssen nur sicherstellen, dass Sie den Anzeigenamen des Zertifikats mit starten *. Ich bevorzuge es, den gleichen Anzeigenamen wie die Wildcard-Domain zu verwenden, *.ipsum.comaber Sie können ihn als alles bezeichnen, was mit dem Sternchen verbunden ist:*foo

Ich habe meinem Zertifikat den falschen Anzeigenamen gegeben, helfen Sie!

Seit Windows 8 oder Server 2012 können Sie certlm.mscim Startmenü Zertifikate für den lokalen Computer verwalten. In früheren Versionen von Windows müssen Sie etwas komplizierteres tun:

  1. Führen Sie mmc.exevon Anfang an
  2. Gehe zum FileMenü und wähle Add/Remove Snap-in...oder drücke(Ctrl-M)
  3. Markieren Sie das CertificatesSnap-In ein und drücken Sie Add >dann wählen , Computer Accountgefolgt von Local Computerin den nachfolgenden Dialogen dann drücken , Finishgefolgt von OKden Snap-Ins Fenster zu schließen

Im Hauptfenster, erweitern Sie Certificates (Local Computer)dann Personaldann Certificatesund Sie werden in der Lage sein , um das Zertifikat der rechten Maustaste, treffen , Propertieswo Sie den angezeigten Namen aktualisieren.

Wenn Sie den IIS-Manager schließen und öffnen , können Sie Ihren Hostnamen festlegen.

Zac
quelle
1
Es hat den Trick gemacht!
Kreker
1
@Zac Super. Genial. Genial. Obwohl ich nicht wirklich denke, dass es wichtig ist, wenn das Feld für den Hostnamen leer ist, habe ich mehr Ruhe. Bitte beachten Sie, dass ich mein Zertifikat erneut ausgestellt habe. Mein Hostname befand sich also bereits im Feld Hostname, bevor er leer wurde. Mein Wildcard-SSL schien mit einem Anzeigenamen oder einem Namen vom Typ. * Mydomain.com zu funktionieren. Ich denke, dass IIS eine interne Aufzeichnung des Hostnamens führt, nachdem das Feld für den Hostnamen leer ist. Ich dachte, ich sollte das erwähnen, falls die Leute ausflippen!
Charles Robertson
1
@Zac Oh. Und diese Lösung funktioniert auf Dinosaurier-Servern wie Windows 2008R2 ...
Charles Robertson
@CharlesRobertson sehr froh, dass dies geholfen hat, und vielen Dank für das Hinzufügen dieser zusätzlichen Informationen!
Zac
2

Eigentlich können Sie einen Host-Header über die GUI hinzufügen, aber es hängt davon ab, wie das Zertifikat benannt ist ... Wenn ich meinem Wildcard-Zertifikat den Anzeigenamen * .xyz.com gebe und dieses Zertifikat auswähle, bin ich es in der Lage, die GUI zu verwenden. Wenn der angezeigte Name so etwas wie xyzwildcard ist und ich das wähle, wird das Hostheader-Feld ausgegraut ...

Komisch komisch

tialen
quelle
1

Auf einigen Computern können Sie den Hostnamen nicht bearbeiten, wenn das Protokoll in https geändert wird oder nachdem ein SSL-Zertifikat hinzugefügt wurde. IIS kann manchmal mürrisch sein.

Dieser Windows-Befehl erstellt eine neue Bindung mit dem Protokoll "https" an Port "443", Hostname "subdomain.domain.com", Site-Name "Site-Name". Ändern Sie diese Werte (in Anführungszeichen) entsprechend Ihren Anforderungen. Sie müssen dann die alte Bindung löschen, wenn sie Port 443 verwendet.

Run Windows Command Prompt as Administrator

C:>cd C:\Windows\System32\inetsrv

C: \ Windows \ System32 \ inetsrv>appcmd set site /site.name:"site_name" /+bindings.[protocol='https',bindingInformation='*:443:subdomain.domain.com']

MacGyver
quelle
0

Der Hostname kann nur hinzugefügt werden, wenn der Friedlyname des ausgewählten Zertifikats dem Hostnamen * .xyz.com entspricht. Sie können den zertifikatsfreundlichen Namen von mmc (Snap-In) in * .xyz.com umbenennen.

Umer Khan
quelle
-1

Ich denke, dieser KB-Artikel wird etwas Licht ins Dunkel bringen. Kurz gesagt, HTTP 1.1-Hostheader werden bei Verwendung von SSL nicht unterstützt.

Was Sie wahrscheinlich erreichen möchten, ist die Verwendung des SecureBindings-Metabasisschlüssels. ZB cscript.exe adsutil.vbs set / w3svc / websiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com

Jim B
quelle
Gilt nicht für IIS 7.
davidcl
Das ist seltsam, da es funktionierte, als wir es taten ...
Jim B
-1

Warum MS dies aus der GUI herausnimmt, ist mir ein Rätsel. Wenn Sie eine ASP.NET-Anwendung haben, die Lizenzdateien (licx) verwendet, funktioniert Ihre Site nicht, da sie als IP-Adresse anstelle eines Domänennamens angezeigt wird . Sie müssen aufhören, bei jeder neuen Version ihrer Software davon auszugehen - IT-Mitarbeiter müssen nicht von Microsoft babysittet werden! Meine Güte!


quelle
-2
  1. Ich habe mit * .testcompany.com ein selbstsigniertes Zertifikat erstellt. Ich habe das neu erstellte (beginnend mit *) in der Dropdown-Liste Bindungs-SSL-Zertifikat bearbeiten ausgewählt. Ich habe das Textfeld Hostname aktiviert und den Hostnamen als 'webapi.b2c' erstellt .com ',

  2. Ich habe die Hosts-Datei unter C: \ Windows \ System32 \ drivers \ etc 127.0.0.1 webapi.b2c.com aktualisiert

Jetzt kann ich die Site als " https://webapp.b2c.com/ " durchsuchen.

Sivalingaamorthy
quelle