IIS 7, das noch ein altes SSL-Zertifikat bereitstellt

27

Ich habe ein neues SSL-Zertifikat in IIS7 installiert, das alte Zertifikat entfernt und die Bindungen für das neue Zertifikat eingerichtet. Daher ist https jetzt nur an das neue Zertifikat gebunden.

Ich habe IIS7 (und Windows 2008 Server selbst) neu gestartet und das Zertifikat mit den folgenden Befehlen überprüft:

netsh http show sslcert

Dies zeigte nur das neue Zertifikat, wie ich erwartet hatte

certutil -store MY

Dies zeigte auch nur das neue Zertifikat und nicht das alte, wie ich erwartet hatte

Ich habe dort auch mmc geöffnet und die Zertifikate überprüft und sehe nur das neue und nicht das alte.

Ich verwende auch ein Konto mit Administratorrechten.

Wenn ich jedoch einen Browser öffne (von einem beliebigen Computer aus) und zur https-Site gehe, wird immer noch das alte Zertifikat verwendet. Auch wenn ich das alte Zertifikat aus dem Browser entferne, wird immer noch das alte und nicht das neue Zertifikat gesendet.

Kann mir jemand helfen herauszufinden, wo ich falsch liege? Wie kann ich das alte Phantom-Zertifikat austauschen?

Joechip
quelle

Antworten:

28

Zunächst ein paar Punkte, die für Sie wahrscheinlich gleich sind

  • Ich habe versucht, ein Zertifikat zu aktualisieren, da es abgelaufen ist.
  • Ich habe mehrere Domains an dieselbe IP gebunden. Sie sind zufällig ein SAN-Zertifikat, aber das ist wahrscheinlich irrelevant.
  • Ich habe versucht, den zentralen Zertifikatspeicher zu verwenden. Wieder denke ich, dass dies für die meisten meiner Antworten irrelevant ist.
  • Ich hatte bereits versucht, das Zertifikat zu aktualisieren, aber es zeigte nicht das neue Datum an.
  • Sie sind wahrscheinlich gerade in Panik, wenn Ihr altes Zertifikat bereits abgelaufen ist. Tief durchatmen...

Zuerst würde ich dringend empfehlen, das https://www.digicert.com/help/DigiCert-Tool herunterzuladen. Sie können es auch online verwenden.

Geben Sie auf Ihrer Website https://example.comdas Ablaufdatum und den Fingerabdruck ein (was MS den Zertifikats-Hash nennt). Es führt eine Echtzeitsuche durch, sodass Sie sich keine Sorgen machen müssen, ob Ihr Browser (oder Ihr Zwischenserver) etwas zwischenspeichert oder nicht.

Wenn Sie den zentralen Zertifikatspeicher verwenden, möchten Sie zu 100% sicher sein, dass die PFX-Datei die neueste Version ist. Wechseln Sie in Ihr Geschäftsverzeichnis und führen Sie den folgenden Befehl aus:

C:\WEBSITES\SSL> certutil -dump www.example.com.pfx

Dies zeigt Ihnen das Ablaufdatum und den Hash / Daumenabdruck. Wenn dieses Ablaufdatum falsch ist, haben Sie wahrscheinlich nur das falsche Zertifikat in das Dateisystem exportiert. Korrigieren Sie das zuerst.

Wenn Sie CCS verwenden, können Sie unter der Annahme, dass dieser Befehl certutil das erwartete Ablaufdatum (Ihres aktualisierten Zertifikats) angibt, fortfahren.

Führen Sie den Befehl aus:

netsh http show sslcert > c:\temp\certlog.txt
notepad c:\temp\certlog.txt

Sie haben wahrscheinlich eine Menge Zeug hier drin, so dass es einfacher ist, es in einem Texteditor zu öffnen.

Sie möchten diese Datei nach dem falschen Hash durchsuchen, den Sie von digicert.com(oder dem Fingerabdruck, den Sie von Chrome erhalten haben).

Für mich ergab dies folgendes. Sie werden sehen, dass es an eine IP gebunden ist und nicht an meinen erwarteten Domainnamen. Das ist das Problem. Es scheint, dass dies (aus welchem ​​Grund auch immer ich nicht sicher bin) Vorrang vor dem Bindungssatz in IIS hat, für den ich gerade aktualisiert habe example.com.

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Ich weiß nicht einmal, woher diese Bindung stammt - ich habe nicht einmal SSL-Bindungen auf meiner Standardwebsite, aber dieser Server ist ein paar Jahre alt, und ich glaube, etwas ist gerade beschädigt und hängt fest.

Also wollen Sie es löschen.

Um auf der sicheren Seite zu sein, sollten Sie zuerst den folgenden Befehl ausführen, um sicherzugehen, dass Sie nur diesen einen Eintrag löschen:

C:\Windows\system32>netsh http show sslcert ipport=10.0.0.1:443

SSL Certificate bindings:
-------------------------

IP:port                      : 10.0.0.1:443
Certificate Hash             : d4a17e3b57e48c1166f18394a819edf770459ac8
Application ID               : {4dc3e181-e14b-4a21-b022-59fc669b0914}
Certificate Store Name       : My
Verify Client Certificate Revocation : Enabled
Verify Revocation Using Cached Client Certificate Only : Disabled
Usage Check                  : Enabled
Revocation Freshness Time    : 0
URL Retrieval Timeout        : 0
Ctl Identifier               : (null)
Ctl Store Name               : (null)
DS Mapper Usage              : Disabled
Negotiate Client Certificate : Disabled

Jetzt haben wir überprüft, ob es sich um einen "schlechten" Fingerabdruck handelt, und es ist zu erwarten, dass ein einzelner Datensatz mit dem folgenden Befehl gelöscht werden kann:

C:\Windows\system32>netsh http delete sslcert ipport=10.0.0.1:443

SSL Certificate successfully deleted

Wenn Sie jetzt zu Digicert zurückkehren und den Befehl erneut ausführen, erhalten Sie hoffentlich den erwarteten Fingerabdruck des Zertifikats. Sie sollten alle SAN-Namen überprüfen, um sicherzugehen.

Wahrscheinlich möchte ich hier zurücksetzen, um sicher zu sein, dass es später keine Überraschungen gibt.

Schlussbemerkung: Wenn Sie den zentralen Zertifikatspeicher verwenden und ein fehlerhaftes Verhalten feststellen, um festzustellen, ob Ihr Zertifikat von dort abgerufen wird, oder keine Sorge, es ist nicht Ihre Schuld. Es scheint, als würde es manchmal sofort neue Dateien aufnehmen, aber alte zwischenspeichern. Das Öffnen und erneute Speichern der SSL-Bindung nach einer Änderung scheint sie zurückzusetzen, jedoch nicht in 100% der Fälle.

Viel Glück :-)

Simon
quelle
3
Du bist ein Simon unter Simons. In unserem Fall stellte sich heraus, dass unser Server das abgelaufene Zertifikat unter "zwischengespeichert" hatte, [::1]:443während die Aktualisierung des Zertifikats in IIS nur den Datensatz für aktualisiert hat 0.0.0.0:443. Vielen Dank!
Dienstag,
1
Dies hat mein Problem mit mehreren Domains auf derselben IP behoben. Verwenden Sie keinen zentralen Zertifikatspeicher.
Chris F Carroll
1
Ich musste das ein paar Mal benutzen. Die PLESK-Webhosting-Verwaltungssoftware führt gelegentlich zu Fehlern bei den Zertifikatbindungen, und ich benötige die oben genannten netsh-Befehle, um die fehlerhafte Bindung zu entfernen. Nicht sicher, welche Versionen betroffen sind, aber ich verwende die aktuelle Version von PLESK Onyx unter Windows Server 2016.
BenSwayne
In meinem Fall nach Hostname und Port. Zum Filtern und Löschen nach Hostnamen lauten die Befehle: "netsh http show sslcert hostnameport = www.example.com: 443" und "netsh http delete sslcert hostnameport = www.example.com: 443"
Karthik Jayapal
14

Überprüfen Sie das Zertifikat, das an die Site in IIS gebunden ist. Sie können mit der rechten Maustaste auf die Site klicken und "Bindungen bearbeiten" auswählen. Dort sollte eine Bindung für Port 443 angezeigt werden, die einem SSL-Zertifikat zugeordnet ist. Das könnte immer noch auf das alte hindeuten.

Tatas
quelle
Ich habe es überprüft und das Zertifikat in den Bindungen für Port 443 ist das neue Zertifikat, nicht das alte. Danke für Ihren Vorschlag.
Joechip
1
Komisch, das ist mir noch nie passiert. Obwohl ich nie die alten Zertifikate entferne. Wie können Sie sicher sein, dass Sie immer noch das alte Zertifikat haben? Zeigt es, dass es abgelaufen ist?
Tatas
Ja, im Browser können Sie die Details des Zertifikats (Ablaufdatum usw.) und das alte, das IIS7 bereitstellt, überprüfen.
Joechip
1
Ich habe das mit - Chrome gesehen. Chrome speichert das alte Zertifikat im Cache und zeigt es dem Benutzer an.
TomTom
3

Ich habe es gerade ausgearbeitet. Der Server befand sich tatsächlich hinter einem ISA-Server, sodass wir auch das neue SSL-Zertifikat auf dem ISA-Server installieren mussten.

Joechip
quelle
3

Ich hatte das gleiche Problem und überprüfte auch die Bindungen. Ich hatte 2 Apps in IIS installiert, eine verwendete das neue Zertifikat, eine das alte.

Um das Problem zu beheben, musste ich das Zertifikat vollständig vom Server entfernen (dann möglicherweise einen Neustart).

Wählen Sie im Symbol IIS-Manager -> (IIS-Stammstruktur) -> Serverzertifikate das alte Zertifikat aus und klicken Sie im Bereich Aktionen auf Entfernen.

Andy Joiner
quelle
1
Ebenso hatten wir tatsächlich eine zusätzliche STOPPED-Site, die auf das alte Zertifikat verwies, und nachdem wir diese Site aktualisiert hatten, um das neue zu verwenden, wurde auf der eigentlichen Live-Site das neue Zertifikat angezeigt!
Aktion Dan
1

Ich habe dies während eines IPv6-Upgrades erlebt. Ich hatte IIS eine Umleitung für den Fall, dass jemand versuchte, über HTTP auf einen Dienst zuzugreifen, der eigentlich kein Webserver-basierter Dienst war. Ich habe den eigentlichen Dienst (einen Sprachserver) auf IPv6 aktualisiert, die Bindungen für die Umleitung konnten jedoch nicht aktualisiert werden, um die IPv6-Adressen einzuschließen.

Dies führte dazu, dass die Resolutionen auf eine global gebundene Fangstelle umgestellt wurden, auf der sich das veraltete Zertifikat befand. Da der Haken einfach bei 404 lag, schien die Seite nicht zu funktionieren, obwohl sie in Wirklichkeit auf die falsche Seite traf.

AJ Henderson
quelle
0

Für den Fall, dass noch jemand auf dieses Problem stößt. Meins wurde gelöst, indem ich zu ging

C:\inetpub\wwwroot

Dann finden Sie eine web.config-Datei, öffnen Sie sie mit dem Editor und entfernen Sie die Zeile mit

<httpRedirect enabled="true" destination="http://foo.company.org" />

Speichern Sie und versuchen Sie erneut, auf den Localhost oder die Stammwebsite Ihres IIS-Servers zuzugreifen.

Joe Marie Escuadra
quelle