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


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

Der erste Schritt war die Installation der .pfx im persönlichen Speicher, die erfolgreich war.

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

Site Bindings

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 in den Webserver kommt und der Host-Header im Paket verschlüsselt ist. Warum würde dann IIS6 erlauben, den Host-Header anzugeben, aber IIS7 nicht?

Aktualisieren: 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.


42
2017-12-22 23:23


Ursprung




Antworten:


Sie können es nicht von der Benutzeroberfläche aus tun, Sie müssen es über die Befehlszeile tun. Hier ist ein schöner Spaziergang durch den Prozess:

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


28
2017-12-23 02:35



handy trick, gib dem cert einen freundlichen Namen, der mit '*' beginnt, ein IIS wird das Host-header-Feld nicht ausgrauen: blog.armgasys.com/?p=80 - russau
Ich weiß, das ist alt, und es ist nur in einem Kommentar, aber dieser handliche Trick ersparte mir etwas Frustration. Vielen Dank! - bpursley


Es funktioniert in GUI ...

Stellen Sie nur sicher, dass der 'Anzeigename' des zu installierenden Zertifikats mit dem Multidomainnamen übereinstimmt, den Sie für das Zertifikat erstellt haben.

dh. * .companydomain.com

Wenn Sie "Nizza freundlicher Name" für * .companydoman.com cert eingeben, wird bei der Installation des Zertifikats in IIS das Hostname-Header-Feld ausgegraut.

Wenn Sie * .companyname.com als den freundlichen Namen verwenden, sind Sie golden.

Boom.


38
2017-12-16 14:03



Danke für diesen Tipp! Falls jemand anderes ein Cert von IIS nicht umbenennen kann (kann jemand das?), Können Sie das Cert im MMC-Snap-In für Zertifikate umbenennen. Laden Sie einfach MMC, fügen Sie das Zertifikate-Snap-In hinzu, wählen Sie Computerkonto, Lokaler Computer. Nachdem Sie das Zertifikat-Snap-In geladen haben, können Sie zu Zertifikationen (Lokaler Computer)> Persönlich> Zertifikate navigieren und mit der rechten Maustaste Eigenschaften für Ihr Zertifikat auswählen. Ändern Sie das Feld Anzeigename in * .yoursite.com und laden Sie das IIS-Manager-Snap-In erneut - Garrett
Der Freundschaftsname scheint nur mit "*" beginnen zu müssen, kann aber auch den anderen gewünschten Namen enthalten. In meinem Fall hatte ich ein Zertifikat, das für mehrere verschiedene Domains gültig war, die keine gemeinsame Wurzel als * .com hatten und das gab, weil der freundliche Name seltsam erschien. Also nannte ich es stattdessen * -mein-beschreibenden-Namen. Und danke @Garrett für den Umbenennungstipp! - wojtow
Das ist die wahre Antwort. nett - Joe Phillips


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

Die ausführlichere Erklärung ist, dass SSL Ihren Datenverkehr verschlüsselt und ein Teil dieses Datenverkehrs die HTTP-Header sind, die vom Browser an den Server gesendet werden. Einer dieser Header wäre der "Host" -Header, den IIS verwendet, um zu bestimmen, welcher Standort 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 basierend auf der IP-Adresse und der Portnummer auswählen, wobei der Header "Host" bei der Ermittlung als Faktor außen vor gelassen wird welche Seite geladen werden soll, damit sie Sie nicht betreten können.

Hier ist ein Artikel, der die Innenleben der SSL-Verbindung in feineren Details.


10
2017-12-23 02:28



Danke für diese Antwort, Justin. Ich bin immer noch unsicher, warum IIS7 mich einen Hostheader nicht angeben lässt, selbst wenn ich eine der IP-Adressen in der Liste auswähle. IIS6 funktioniert ohne Probleme. Wie bereits erwähnt, ist dies die einzige Website auf der Maschine. - p.campbell
Host-Header können mit einem Platzhalter-Cert oder einem Multi-Domain "UC" -Cert arbeiten: sslshopper.com/unified-communications-uc-ssl-certificates.html. In diesem Fall hat der Server nur ein Zertifikat, um auch mehrere Hostnamen zu bedienen. - russau
Sehr klare Erklärung. +1 - Dan Solovay


Die SSLShopper-Antwort funktionierte nicht für mich, da sie die Bindung ohne den Hostheader verließ und Sie diese Bindung nicht entfernen konnten, ohne die Verbindung zum Zertifikat zu unterbrechen. Hier ist die Methode, die ich verwendet habe, um es zum Laufen zu bringen:

Beachten Sie, dass diese Antwort davon ausgeht, dass Ihr Zertifikat bereits generiert, dem Zertifikatspeicher hinzugefügt und zu IIS hinzugefügt wurde. Es geht außerdem davon aus, dass Sie neben SSL keine anderen Bindungen zu Ihrer Website wünschen.

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

Schritte

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

    netsh http show sslcert
    
  7. Speichern Sie den Zertifikat-Hash 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 kann in c: \ windows \ system32 \ intstrv gefunden werden. 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

7
2017-11-19 18:15



Vielen Dank! Dies hat mir geholfen, meine Website endlich in HTTPS zu nutzen. Ich korrigierte einen Tippfehler in einem der Befehle, aber ich musste die Überschrift Schritte hinzufügen, um die Mindestlänge zu erreichen. Fühlen Sie sich frei, das zu entfernen - Ihre ursprüngliche Antwort ist leicht zu folgen. Prost! - potatopeelings
Dies funktionierte bei mir mit einem Zertifikat mit 6 SANs (kein Wildcard-Zertifikat) mit einer leichten Abweichung, da ich mehrere Seiten hatte. Ich musste die Schritte 1 bis 7 einmal durchführen. Schritt 8 musste auf jeder Seite 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


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

Komisch komisch


2
2018-01-26 23:12





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

Das Problem

Sie haben eine Wildcard SSL wie *.ipsum.com Das Zertifikat wird zwar installiert, Sie können jedoch keinen Hostnamen für die Site in IIS auswählen, wenn Sie versuchen, eine HTTPS-Bindung hinzuzufügen, da das Textfeld ausgegraut ist.

Die Lösung

Ihre Wildcard-SSL kann mit jeder Subdomain verwendet werden, die Sie benötigen Stelle sicher Sie starten den Friendly Name des Zertifikats mit *. Ich bevorzuge es, denselben freundlichen Namen wie die Wildcard-Domäne zu verwenden, z. *.ipsum.com aber du kannst es alles nennen, was Wesen mit dem Asterix: *foo

Ich habe meinem Zertifikat den falschen Freundlichen Namen gegeben, Hilfe!

Seit Windows 8 oder Server 2012 können Sie eingeben certlm.msc im Startmenü, um Zertifikate für den lokalen Rechner zu verwalten. In früheren Versionen von Windows müssen Sie etwas etwas komplizierter tun:

  1. Lauf mmc.exe Von Anfang an
  2. Gehe zu File Menü und wählen Sie Add/Remove Snap-in... oder treffen (Ctrl-M)
  3. Markieren Sie die Certificates Snap-In und Treffer Add > dann wähle Computer Account gefolgt von Local Computer in den folgenden Dialogen dann treffen Finish gefolgt von OK um das Snap-Ins-Fenster zu schließen

Erweitern Sie im Hauptfenster Certificates (Local Computer) dann Personal dann Certificates und Sie können mit der rechten Maustaste auf das Zertifikat klicken, klicken Sie auf Properties Hier können Sie den Anzeigenamen aktualisieren.

Schließen und öffnen Sie den IIS-Manager und Sie können dann Ihren Hostnamen festlegen.


2
2018-03-15 14:40



Es hat den Trick gemacht! - Kreker


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 Protokoll "https", Port "443", Hostname "subdomain.domain.com", Websitename "Websitename". Ändern Sie diese Werte (in Anführungszeichen), um Ihre Anforderungen zu erfüllen. 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']


1
2018-02-11 16:22





Meiner Ansicht nach dieser KB-Artikel wird das Thema beleuchten. Kurz gesagt, HTTP 1.1-Hostheader werden bei der Verwendung von SSL nicht unterstützt.

Was Sie wahrscheinlich erreichen wollen, ist die Verwendung des Metabasisschlüssels SecureBindings. Z.B. cscript.exe adsutil.vbs set / w3svc / WebsiteID / SecureBindings "ip.ip.ip.ip: 443: abc.123.mysite.com


-1
2017-12-23 02:52



Gilt nicht für IIS 7. - davidcl
das ist merkwürdig, denn es hat funktioniert, als wir es gemacht haben ... - Jim B


Warum MS dies aus der GUI herausnimmt, ist mir ein Rätsel, denn wenn Sie eine ASP.NET-Anwendung haben, die Lizenzdateien (licx) verwendet, funktioniert Ihre Site nicht, weil sie als IP-Adresse anstelle eines Domain-Namens angezeigt wird . Sie müssen bei jeder neuen Version ihrer Software STOP ANGENEHMEN - IT-Leute müssen nicht von Microsoft babysitten werden! Meine Güte!


-1
2018-01-22 17:54





  1. Ich habe ein selbstsigniertes Zertifikat mit * .testcompany.com erstellt, die neu erstellte Datei (beginnend mit *) im Dropdown-Menü SSL-Zertifikat bearbeiten ausgewählt, das Textfeld für den Hostnamen aktiviert und den Hostnamen als 'webapi.b2c' erstellt .com ",

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

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


-2
2018-03-31 10:27