Die eigentliche Lösung hierfür besteht darin, sicherzustellen, dass Ihr Server alle Zertifikate in der Kette und nicht nur das Endentitätszertifikat (Serverzertifikat) anzeigt.
Richten Sie Ihren Server - Administrator zu RFC 5246 Abschnitt 7.4.2 , die eindeutig besagt , dass Diese Meldung übermittelt das Zertifikat des Servers Kette an den Client.
Wenn Ihr Administrator dies aus irgendeinem Grund ablehnt / nicht tun kann, besteht Ihre alternative Option darin, zu versuchen, curl
mit dem fehlerhaften Handshake zu arbeiten.
Laut einer Nachricht auf der Curl-Mailingliste:
Kann jemand bestätigen, ob cURL ein Zwischenzertifikat unterstützt (oder nicht)?
Ja tut es. Alle ca-Zertifikate haben eine Zertifikatkette, die bis zum Stamm reicht. Das Ca-Bündel, das Sie mit Curl verwenden, muss aus den Zertifikaten für die gesamte Kette bestehen.
/ daniel.haxx.se
Sie sollten in der Lage sein, die Stammzertifizierungsstelle und alle Zwischenzertifikate zu einem Bundle hinzuzufügen und curl
mit der --cacert <file>
Option darauf zu verweisen .
Während Ihre Browser funktionieren, können Sie von dort aus auf die richtigen CA-Zertifikate zugreifen. Zeigen Sie auf der Registerkarte "Zertifikate" (für jeden Browser unterschiedlich, aber Sie werden es sicher herausfinden) die Zertifikatkette an. Doppelklicken Sie auf das Root CA ersten Globalsign Root CA - G1 und auf den Details der Registerkarte, klicken Sie auf In Datei kopieren ... . Speichern Sie es als root.cer
. Machen Sie dasselbe mit dem AlphaSSL CA - SHA256 - G2 und speichern Sie es unter issuing.cer
. Verbinden Sie die beiden in einer einzigen Datei (z. B. chain.cer
) und verwenden Sie diese als Argument für -cacert
.
Wie von @AB freundlicherweise erwähnt, finden Sie das fehlende Zertifikat auch hier .
Ihre Browser funktionieren, weil sie CA-Zertifikate zwischenspeichern. Wenn Sie in der Vergangenheit zu einer korrekt konfigurierten Website navigiert haben, deren Zertifikat von derselben Zertifizierungsstelle wie das Zertifikat Ihres Servers ausgestellt wurde, wird es vom Browser zwischengespeichert. Wenn Sie anschließend Ihre falsch konfigurierte Site besuchen, verwendet Ihr Browser die CA-Zertifikate in seinem Cache, um die Kette zu erstellen. Für Sie scheint alles in Ordnung zu sein, obwohl der Server hinter den Kulissen falsch konfiguriert ist.
Beachten Sie, dass IE / Edge und Chrome unter Windows denselben Cache verwenden, während Firefox seinen eigenen verwendet.
Darüber hinaus verwenden IE / Edge und Chrome (da sie denselben Kryptostapel verwenden) eine Erweiterung in Zertifikaten mit dem Namen AuthorityInformationAccess . Dies hat eine caIssuer- Option, die eine URL bereitstellt, von der das CA-Zertifikat des End-Entity-Zertifikats heruntergeladen werden kann. Selbst wenn einer dieser Browser die fehlenden Zertifikate aus dem vorherigen Browser nicht zwischengespeichert hat, kann er sie daher bei Bedarf abrufen. Beachten Sie, dass Firefox dies nicht tut, weshalb Firefox manchmal Zertifikatfehler anzeigen kann, wenn IE / Edge und Chrome zu funktionieren scheinen.