Testen, ob eine URL benötigt SNI
Habe ich eine Website serviert, der über HTTPS, aber die iTunes nicht finden kann. Mein Verdacht ist, dass es im Zusammenhang mit der iTunes-backend-server, Java 6 und Java 6 nicht unterstützen SNI. SSL Labs scheint anzudeuten, dass meine Seite nicht verlangen, SNI (siehe dieser Bericht, und Suche für SNI -), aber ich kann mir nicht denken, warum. Habe ich das falsch verstanden multi-domain-Zertifikate? Ich habe mehrere Websites auf dem gleichen server ausgeführt, aber mein Verständnis war, dass, solange alle URLs aufgelistet wurden als Alternative Antragstellernamen für das Zertifikat, dass alles gut werden würde.
Kennt jemand eine gute Möglichkeit zu überprüfen, ob eine URL benötigt SNI-Unterstützung auf den client zugreifen? Ich habe nicht eine Windows-XP/Java 6 installieren, um zu spielen leider.
- Anfang zu denken, dass die SSL-Labs-test beinhaltet nur die Kunden tun/nicht unterstützen SNI, und dass Sie nicht sagen, dass die URL in Frage erfordert SNI - siehe dieser Bericht für eine IP-Adresse zugeordnet, die durch google.com.
- Siehe serverfault.com/questions/506177/...
Du musst angemeldet sein, um einen Kommentar abzugeben.
Nginx im Allgemeinen, und Ihre Website insbesondere, akzeptiert aber nicht erforderlich ist, SNI. Um dies zu testen können Sie einfach Oracle Java aus der box, weil seine
cacerts
nicht enthaltenDST Root CA X3
die das root-cert verwendet (zunächst) durch " Let 's Encrypt' wer hat Ihre Website cert; dies gilt für alle Versionen von Oracle Java bis zu aktuellen (8u74). Windows (also IE und Chrome auf Windows) und Firefox haben dieses root-cert; ich kann nicht sagen, dass für andere OS oder Browser.Um dies zu beheben, so können Sie ganz einfach testen, entweder:
verwenden Sie die Oracle Java 6 aber ändern
JRE/lib/security/cacerts
zum hinzufügen von DSTX3 cert, die entweder von Ihrem Betriebssystem oder browser, oder über einen link unter https://letsencrypt.org/certificates/ zu https://www.identrust.com/certificates/trustid/root-download-x3.html - außer, dass die Seite nonstandardly gibt nur den base64 Körper des cert, so müssen Sie manuell fügen Sie die PEM-header-und trailer-Linien vor Javakeytool
wird es importieren.Oracle-Java-6-wird, sondern konfigurieren Sie Ihre Anwendung (mit system-Eigenschaften) verwenden einer benutzerdefinierten truststore, die Sie erstellen mit der DSTX3 cert wie oben.
verwenden Sie eine version von Java 6, die beinhaltet das root-cert in cacerts. Insbesondere ich nutze CentOS 6 und seine openjdk-Pakete (für 6, 7 und 8) verwenden Sie einen systemweiten CA 'bundle', enthält DSTX3, das ist, was machte es einfach für mich, um diesen test zu tun. Ich erwarte, kann aber nicht bestätigen, dass andere RedHat-Varianten, das gleiche zu tun. Für andere Distributionen und Plattformen kann ich nicht sagen; wenn nicht, siehe oben.
Monitor die Verbindung mit wireshark oder ähnlichen zu sehen, dass die ClientHello nicht enthalten SNI, aber die Verbindung erfolgreich ist und erfolgreich eingesetzt wird für eine HTTP-Anforderung.
Wenn Sie wirklich wollen, um mit dem server kommunizieren statt testen es für SNI, einfach weglassen, die Letzte 'monitor' Schritt.
Die Berichte von SSLLabs über SNI sind in der Regel korrekt. Verständnis, dass SNI ist nicht erforderlich, wenn Sie Ihr Zertifikat enthält alle möglichen hosts korrekt zu. Aber, nicht notwendig in der Theorie bedeutet nicht, dass Ihre server-setup nicht erforderlich SNI sowieso.
Gegeben, dass Sie nur angeben, was Sie nicht haben, gehe ich davon aus, dass Sie alles andere, was benutzt werden könnte. Eine einfache Möglichkeit zu überprüfen, ist openssl:
Vergleichen Sie die Ausgabe der beiden Aufrufe von
openssl s_client
. Wenn Sie sich in der Bescheinigung, die Sie dienen, oder wenn der Anruf w/o SNI scheitert der Aufbau einer SSL-Verbindung, als Sie brauchen, SNI, um die richtige Zertifikat oder zum herstellen einer SSL-Verbindung überhaupt.Eine einfache Möglichkeit zu überprüfen, ob eine Website basiert auf SNI ist diese:
Und wenn in dieser Ausgabe sehen Sie das folgende, es bedeutet, dass die site ist mit SNI.
Das oben genannte ist eine Zusammenfassung von eine Antwort auf serverfault.