Wie kann ein SSL-Zertifikat nur für einige Clients funktionieren?

11

Mein Hosting-Anbieter hat kürzlich ein SSL-Zertifikat für meine Domain neu ausgestellt und neu installiert , nachdem das alte versehentlich abgelaufen ist.

Ich kann jetzt die Website erneut über HTTPS durchsuchen , ebenso wie mein Host und eine Reihe anderer Benutzer.

Doch einige sind Benutzer (mindestens ein Dutzend aus Hunderten) immer noch Your connection is not secureFehlermeldungen auf verschiedenen Browsern und Plattformen. (Es erweist sich als schwierig, ein Problem zu diagnostizieren, das ich nicht reproduzieren kann.)

Ich verstehe, dass verschiedene Browser unterschiedliche Listen von Zertifizierungsstellen verwenden.

  1. Wie kommt es, dass ein Benutzer, der dieselbe Version von Firefox ausführt wie ich (45.0.1 unter OS X), eine SEC_ERROR_UNKNOWN_ISSUERFehlermeldung erhält (nur für meine Site), während ich es nicht bin? Was macht es möglich? Der Benutzer hat seinen Cache geleert und seinen Laptop neu gestartet.

Ich habe eine SSL-Prüfung auf digicert.com durchgeführt . Das Ergebnis ist folgendes:

Das SSL-Zertifikat ist nicht vertrauenswürdig

Das Zertifikat ist nicht von einer vertrauenswürdigen Stelle signiert (Überprüfung mit Mozillas Stammspeicher). Wenn Sie das Zertifikat von einer vertrauenswürdigen Stelle gekauft haben, müssen Sie wahrscheinlich nur ein oder mehrere Zwischenzertifikate installieren. Wenden Sie sich an Ihren Zertifikatanbieter, um Unterstützung für Ihre Serverplattform zu erhalten.

  1. Wie kommt es, dass ich in diesem Fall ohne SSL-Fehler eine Verbindung zur Site herstellen kann?
Fabien Snauwaert
quelle
1
My hosting provider has recently re-issued and re-installed an SSL certificate for my domain, after they let the old one expire by mistake.- Wie kommt es, dass Sie diese Verantwortung in ihren Händen gelassen haben?
Joeqwerty
3
Nur weil ich kein Systemadministrator bin, miete ich einen verwalteten dedizierten Server von ihnen. (Für die kleine Hintergrundgeschichte schreibe ich neben dem Geschäftsbetrieb auch Material und Code zum Erlernen von Sprachen. Sysadmin zu machen ist zwar interessant, aber zu viele Hüte.)
Fabien Snauwaert
7
@ Joeqwerty: Weil es ihre Aufgabe ist? Er bezahlt sie buchstäblich dafür, dass er das Zeug für ihn erledigt.
Leichtigkeit Rennen mit Monica
@LightnessRacesinOrbit: Das ist eine Annahme, die ich nicht gemacht habe, daher die Frage.
Joeqwerty
1
bugzilla.mozilla.org/show_bug.cgi?id=399324 ist der Fehlerbericht, der Unterstützung für das automatische Herunterladen von Zwischenzertifikaten in Firefox anfordert. Die Diskussion (jetzt 8 Jahre) läuft auf "IE macht es!" / "Zum Teufel mit IE, der RFC sagt, dass es optional ist!" / "Schon mal was vom Robustheitsprinzip gehört?" / "Ihre Serverkonfiguration ist schlecht und Sie sollten sich schlecht fühlen !"

Antworten:

22

Die Zertifikatskette Ihres Zertifikats ist unvollständig. Höchstwahrscheinlich konnte Ihr Provider bei der Installation des neuen Zertifikats kein Zwischenzertifikat installieren.

In den meisten Fällen werden solche Zwischenzertifikate von der SSL-Behörde bereitgestellt, um einige ältere Browser und Betriebssysteme zu unterstützen. Das ist der Grund, warum es für Sie funktioniert, für einige Ihrer Kunden jedoch nicht.

Ein wirklich großartiges Dienstprogramm, um Ihre Website auf SSL-Probleme zu überprüfen, ist der SSL-Servertest von SSLlabs . Wie Sie im obigen Link sehen können, haben Sie hier nicht nur ein Kettenproblem, sondern auch den Signaturalgorithmus, der zum Erstellen Ihres Zertifikats verwendet wird, ist schwach. Ihr Webserver ist weiterhin anfällig für den POODLE-Angriff und unterstützt weiterhin RC4 auch als unsicher angesehen ...

Ich möchte nichts gegen Ihren Webserver-Anbieter sagen, aber in Ihrer Position würde ich ihnen per E-Mail mitteilen, dass sie all diese Probleme so schnell wie möglich beheben oder zu einem anderen Anbieter wechseln ...

s1lv3r
quelle
Danke, das ist sehr hilfreich. Aus purer Neugier, eine Idee, warum ein Client unter OS X und der gleichen Version von Firefox wie ich einen SEC_ERROR_UNKNOWN_ISSUERFehler bekommt , während ich es nicht bin? Könnte es sein, dass seine Betriebssystemversion anders ist?
Fabien Snauwaert
1
@FabienSnauwaert Ja, wenn Sie nach unten zu "Handshake-Simulation" scrollen, versucht der SSLLabs-Test, verschiedene Kombinationen von Betriebssystem- und Browserversionen zu simulieren. Der Browser verarbeitet SSL-Verbindungen nicht vollständig selbstständig, sondern ist teilweise auf die Implementierung des Betriebssystems angewiesen. Die OS-Version macht also definitiv einen Unterschied.
s1lv3r
3
Es ist nicht nur so, dass Clients unterschiedliche Listen von Zertifizierungsstellen haben. Es ist auch möglich, dass einige Clients Zwischenzertifikate zwischenspeichern, sodass eine Site mit einem fehlenden Zwischenzertifikat möglicherweise funktioniert, wenn der Browser zuvor eine Site besucht hat, die dieses Zwischenzertifikat korrekt konfiguriert hat.
Kasperd
Die SSLlabs-Site ist ein schönes Tool. Danke für den Hinweis.
Parapluie
12

Damit ein Zertifikat vertrauenswürdig ist, muss es von einer Entität signiert werden, die von Ihrer Browser / Betriebssystem-Kombination selbst als vertrauenswürdig eingestuft wird oder die wiederum von einer solchen Entität signiert wurde. Dies wird normalerweise von einer vertrauenswürdigen Stammzertifizierungsstelle durchgeführt, die eine Zwischenzertifizierungsstelle signiert, und die Zwischenzertifizierungsstelle signiert Ihr Zertifikat. Dadurch entsteht eine Kette wie folgt:

  1. Stammzertifizierungsstelle, der Ihr Computer vertraut, und Zeichen
  2. Intermediate CA, die unterschreibt
  3. Ihr Zertifikat, dem nur aufgrund der Kette vertraut wird, die zur Stammzertifizierungsstelle zurückführt.

Das Problem liegt hier beim Zwischenzertifizierungsstellenzertifikat. Um sicherzustellen, dass jeder die Kette bis zur Stammzertifizierungsstelle validieren kann, sollte Ihr Anbieter das Zwischenzertifikat in seine Serverkonfiguration aufnehmen. In diesem Fall haben sie nicht.

Der Grund, warum es für einige Benutzer funktioniert, ist, dass sie das Zwischenzertifikat in ihrem eigenen "Trust Store" haben. In diesen Fällen akzeptieren sie Ihr Zertifikat, da sie dem Zwischenprodukt bereits vertrauen. Wenn Ihre Besucher jedoch ein anderes Betriebssystem / einen anderen Browser haben, verfügen sie nicht über das Zwischenzertifikat, sodass sie es von Ihrem Webserver erhalten müssen - und Ihr Webserver gibt es nicht weiter, sodass sie keine Möglichkeit dazu haben es zu überprüfen.

Jenny D.
quelle
Vielen Dank, es hilft mir, das Problem jetzt klar zu erkennen. Gibt es einen Trick, um Benutzer dazu zu bringen, das Zwischenzertifikat zu ihrem eigenen „Vertrauensspeicher“ hinzuzufügen, während sie darauf warten, dass mein Host das Zertifikat repariert? Beispiel: Besuchen Sie eine andere SSL-Site, die darauf angewiesen ist, oder so?
Fabien Snauwaert
1
@FabienSnauwaert Leider gibt es keinen Trick. Nur eine Site mit demselben Zwischenzertifikat zu besuchen, hilft nicht weiter. Sie müssten das Zertifikat tatsächlich herunterladen und manuell zu ihrem Browser hinzufügen. Ich glaube, dieses spezielle Zertifikat ist in neueren Browsern enthalten - es funktioniert in Firefox 45.0.1, aber nicht in 43.0.4, also wurde es irgendwo zwischen diesen beiden Versionen aufgenommen. Wenn Sie also Ihre Kunden dazu bringen könnten, ihre Browser zu aktualisieren, würde dies helfen.
Jenny D
4
@JennyD Intermediate-Zertifikate werden von modernen Browsern zwischengespeichert, sodass der Besuch einer anderen Site, die dasselbe Intermediate verwendet, mit hoher Wahrscheinlichkeit funktioniert. Dies ist jedoch wirklich nichts, was man von seinen Benutzern verlangen sollte ... (siehe: bugzilla.mozilla.org/show_bug.cgi?id=629558 , sslmate.com/blog/post/chrome_cached_sha1_chains )
Bob
0

Wenn Sie HTTP Public Key Pinning verwendet haben und Ihr Provider Ihnen ein neues Zertifikat erteilt hat, haben sich die öffentlichen Schlüssel möglicherweise bereits geändert. Diese Schlüssel werden für den von Ihnen angegebenen Zeitraum im Browser des Clients gespeichert.

jarvis
quelle