
Ich verwalte einen Unternehmens-Webproxy mit Squid 3.5.10 auf CentOS 7 (ein Diladele-Gerät), führe SSL-Bumping durch und habe Probleme beim Hinzufügen neuer CA-Zertifikate zum System-Truststore, was dazu führt, dass unsere Benutzer nicht auf mehrere SSL-geschützte Websites zugreifen können, obwohl sie dies tun sollten. Eine dieser Websites isthttps://www.sexierdating.com/(ja, es ist, was es klingt, aber unsere Politik ist es, uns egal zu kümmern, was die Leute in ihrer Mittagspause surfen, solange es legal ist).
Die Fehlermeldung von Squid ist die übliche X509_V_ERR_UNABLE_TO_GET_ISSUER_CERT_LOCALLY
, was bedeutet, dass Squid aus irgendeinem Grund dem Zielserverzertifikat nicht vertraut oder es nicht überprüfen kann. Bisher reichte es aus, das CA-Stammzertifikat im PEM-Format von den Supportseiten der CA zu holen, es in einzugeben /etc/pki/ca-trust/source/anchors
, Squid auszuführen update-ca-trust
und neu zu starten, um das Problem zu beheben – aber nicht in meinem aktuellen Fall. Das Paket ca-certificates ist auf der aktuellen Version, da ich gerade ein komplettes Yum-Update auf dem Rechner ausgeführt habe.
Alle Domänen, mit denen ich derzeit Probleme habe, verfügen über ein „Go Daddy Secure Certificate Authority - G2“-Zertifikat. Ich habe alle Zertifikate von der Support-Seite heruntergeladen (https://certs.godaddy.com/repository/), habe sie wie oben beschrieben installiert, Squid neu geladen, aber der Fehler besteht weiterhin. Ich habe sogar update-ca-trust mit strace beobachtet, um zu sehen, ob es wirklich die richtigen PEM-Dateien aufnimmt – und das tut es.
Was mich ein wenig wundert, ist, dass die Downloadseite von certs.godaddy.com anscheinend genau dasselbe Stamm- und Zwischenzertifikat verwendet wie einige der problematischen Domänen, aber diese Seite funktioniert über Squid einwandfrei. Wenn ich die Zertifikate in Firefox vergleiche, sehe ich keinen Unterschied in der Gesamtspezifikation und den Algorithmen, aber trotzdem funktioniert eines und das andere nicht.
Ich bin mit meinem Latein am Ende und hoffe, dass mir jemand einen Anstoß geben kann, um das Problem zu lösen. Ich kann nicht für jede zweite Seite mit einem GoDaddy-Zertifikat Proxy-Ausnahmen hinzufügen.
Antwort1
CA-Speicher auf Computern und in Browsern enthalten die Stamm-CA-Zertifikate.
Websites sollten NIEMALS Zertifikate von den Stammzertifizierungsstellen, sondern von einem Vermittler erhalten.
Es liegt in der Verantwortung der Website, sowohl ihr eigenes Zertifikat als auch das Zwischenzertifikat zurückzugeben, sodass Browser das Zwischenzertifikat an eines der Stammzertifikate ketten können, denen sie vertrauen.
In dem von Ihnen angeführten Website-Beispiel wird das Zwischenzertifikat nicht mitgeliefert, sodass Ihre Benutzer der Site nicht vertrauen können. Dies lässt sich mit einem SSLLabs-Scan hier erkennen:https://www.ssllabs.com/ssltest/analyze.html?d=www.sexierdating.com. Wie Sie sehen, wird nur ein Zertifikat statt zwei gesendet und deshalb wird eine unvollständige Warnung angezeigt. Wenn Sie den Abschnitt „Zertifikatpfade“ erweitern, wird die vollständige Kette angezeigt und Sie können diesen Vermittler herunterladen, wenn Sie ihn installieren möchten.
Es sollte beachtet werden, dass Browser diese Situation häufig behandeln - entweder weil sie gemeinsame Zwischenzertifikate vom Besuch anderer Websites zwischengespeichert haben oder weil sie versuchen, das fehlende Zwischenzertifikat zu finden. Daher werden diese Fehlkonfigurationen von den meisten Benutzern und Websitebetreibern oft nicht bemerkt. Ich vermute, dass SSL-Bumping hier nicht ganz so benutzerfreundlich ist, um diese Fehler zu behandeln.
Dies steht im Gegensatz zu certs.godaddycom (https://www.ssllabs.com/ssltest/analyze.html?d=certs.godaddy.com), das die komplette Kette sendet. Tatsächlich tritt das umgekehrte Problem auf und es werden zu viele Zertifikate gesendet, da es nicht notwendig ist, das Stammzertifikat zu senden (aber vielleicht ist das aus historischen Gründen so, denn wie Sie sehen, gibt es zwei Zertifikatskettenpfade – einer davon erfordert, dass das Stammzertifikat mit einem anderen Zertifikat signiert wird, was wahrscheinlich von älteren Browsern verwendet wird, die das neue Stammzertifikat nicht in ihren Vertrauensspeichern haben).
Wie dem auch sei, Sie haben folgende Möglichkeiten:
- Sagen Sie Ihren Benutzern, dass die Website nicht richtig eingerichtet ist und dass sie sich wieder an die Arbeit machen und keine Arbeitszeit mehr mit dem Betrachten zwielichtiger Websites verschwenden sollen.
- Fügen Sie das Zwischenzertifikat zu Ihrem Squid CA-Stammspeicher hinzu. Natürlich ist dies keine Stammzertifizierungsstelle und sollte eigentlich nicht im Speicher sein. Wenn es aus irgendeinem Grund jemals widerrufen wird, vertrauen Sie ihm immer noch (was einer der Gründe ist, warum Zertifikate nicht aus Stammzertifikaten ausgestellt werden, da es sehr schwierig ist, sie aus vertrauenswürdigen Speichern zu entfernen). Sie führen also ein Sicherheitsrisiko ein, indem Sie dies einschließen.
- Kontaktieren Sie die Website, erklären Sie ihnen das Problem und bitten Sie sie, es zu beheben. Und seien Sie dann darauf vorbereitet, im Grunde jede andere defekte Website zu reparieren, die Ihre Benutzer benötigen!
Ich würde an meiner Stelle ohne Zweifel Option 1 wählen :-)