Überprüfung des SSL-Zertifikats: javax.net.ssl.SSLHandshakeException

8

Ich versuche, eine HTTPS-REST-API über Jersey Client aufzurufen. Und im Laufe der Entwicklung stolpere ich über folgenden Fehler:

%Vor%

Also habe ich es ein bisschen geglotzt und eine Menge Lösung dafür gefunden, was tatsächlich funktioniert.

  1. HTTPS mit Jersey Client
  2. Ссылка
  3. Wie behebt man das "Java. security.cert.CertificateException: Keine alternativen Subjektnamen vorhanden "Fehler?
  4. Ссылка
  5. Ссылка

Sie sind in einer anderen Domäne, aber sie haben eine gemeinsame Lösung, um es auszuarbeiten.

Szenario

Ich verwende derzeit ein selbst erstelltes selbstsigniertes Zertifikat in der Entwicklungsumgebung. Und deshalb wird es das Problem zeigen.

Frage

Die oben erwähnte Lösung konzentriert sich auf das Überspringen / Zulassen, dass alle Zertifikate verifiziert werden.

Aber wenn ich es in die Produktionsumgebung verschiebe, habe ich Zugriff auf ein gültiges signiertes Zertifikat aus einer vertrauenswürdigen Quelle.

  1. Ist diese Lösung also eine Hilfe, wenn ich in Produktion gehe?
  2. Ist es OK, die SSL-Verifizierung zu überspringen?
  3. Was ist der andere alternative Weg, um eine gemeinsame Lösung zu erreichen? sowohl Entwicklungs- als auch Produktionsumgebung?

P.S

Die Lösung, die ich verwendet habe, war

%Vor%

Ich arbeite dann mit Jersey zusammen, damit es funktioniert. Und es funktioniert großartig.

Also, die Question wieder. Ist diese Lösung für den Einsatz in der Produktionsumgebung geeignet?

    
Runcorn 01.08.2014, 11:57
quelle

3 Antworten

13
  

Ich verwende derzeit ein selbst erstelltes selbstsigniertes Zertifikat in   Entwicklungsumgebung. ... javax.net.ssl.SSLHandshakeException:   java.security.cert.CertificateException: Kein passender Name   dev.ppc.lftechnology.com gefunden

Es scheint, dass das selbstsignierte Zertifikat falsch ist.

Im Folgenden finden Sie die Datei OpenSSL CONF , mit der Sie selbstsignierte Zertifikate und Zertifikatsanforderungen für die Verwendung während des Tests erstellen können. Speichere es als example-com.conf . Ändern Sie die DNS-Namen unter [ alternate_names ] nach Ihrem Geschmack. Sie können localhost , localhost.localdomain und 127.0.0.1 sogar zum Testen eingeben.

Wenn Sie ein selbstsigniertes Zertifikat erstellen möchten, verwenden Sie:

%Vor%

Wenn Sie eine Signaturanforderung (CSR) erstellen möchten, die von einer vertrauenswürdigen Stelle signiert wird, verwenden Sie:

%Vor%

Der Unterschied zwischen einem selbstsignierten Zertifikat und einer Signaturanforderung besteht in der Option -x509 . Wenn -x509 vorhanden ist, wird ein selbstsigniertes Zertifikat erstellt. Das Fehlen von -x509 bedeutet, dass eine Anfrage erstellt wird.

Wenn Sie Ihr selbstsigniertes Zertifikat oder die Anfrage ausdrucken möchten, um zu sehen, was tatsächlich darin enthalten ist, dann verwenden Sie:

%Vor%

Wenn Sie den Server testen möchten, verwenden Sie s_client :

%Vor%

Der obige Befehl sollte mit einer Nachricht ähnlich wie Verify OK (0) enden. Wenn Sie Verify OK (0) nicht erhalten, reparieren Sie Ihren Prüfstand. Sobald OpenSSL erfolgreich abgeschlossen wurde, wird dies zu Ihrer Baseline.

%Vor%
  

Ist es OK, die SSL-Verifizierung zu überspringen?

Nein. Das ist sehr unverantwortlich. Wenn Sie PKIX nicht korrekt verwenden, warum dann überhaupt verwenden?

Das kommt mir in den Sinn: Der gefährlichste Code der Welt: Validierung von SSL-Zertifikaten in Nicht-Browser-Software .

%Vor%

Es ist besser, wenn Sie Ihr selbstsigniertes Zertifikat in einem Keystore laden (oder Ihre private CA laden) und es dann an SSLContext.init übergeben. Dann funktioniert alles wie beabsichtigt, und es ist nicht nötig, alles zu vertrauen oder true von verify zurückzugeben.

Bruno und EJP haben viele Antworten zu diesem Thema.

  

Was ist der andere alternative Weg, um eine gemeinsame Lösung für Entwicklungs- und Produktionsumgebung zu erreichen?

Verwenden Sie ein wohlgeformtes Zertifikat, das mit einem vertrauenswürdigen Stamm verknüpft ist.

Zum Testen können Sie ein selbstsigniertes Zertifikat erstellen. Oder erstellen Sie eine Zertifikatsanforderung und lassen Sie sie von Ihrer internen Zertifizierungsstelle in einer privaten PKI signieren. In diesem Fall müssen Sie Ihrem selbstsignierten Zertifikat vertrauen oder Ihrer internen Zertifizierungsstelle vertrauen.

Für die Produktion können Sie ein Zertifikat verwenden, das von einem der Mitglieder des CA Zoo signiert wurde, damit auch andere Personen außerhalb der Organisation diesem vertrauen. StartCom und CACert bieten kostenlose Zertifikate der Klasse 1 an .

Class-1-Zertifikate sind in der Regel Domain-validiert und erlauben keine Platzhalter. Während die Klasse 1 kostenlos ausgegeben wird, verlangen sie den Widerruf, weil dort die Kosten liegen.

Wenn Sie eine Joker-Karte benötigen, kaufen Sie normalerweise eine Klasse 2 oder höher.

    
jww 01.08.2014, 16:14
quelle
5

@jww beantwortet zu Recht die Frage

  

Ist es OK, die SSL-Verifizierung zu überspringen? Nein. Das ist sehr unverantwortlich.

In einigen Fällen können Sie jedoch den betreffenden Server nicht kontrollieren, um ein gültiges Zertifikat installieren zu können. Wenn der Server einer anderen Person gehört und Sie diesem Server vertrauen, ist es besser, eine "Whitelist" zu verwenden, um Zertifikate nur für vertrauenswürdige Server zu validieren, andernfalls verwenden Sie die normale Validierung.

%Vor%

Und installieren Sie es einmal:

%Vor%

Wenn Sie eine Sicherheitsprüfung deaktivieren möchten, tun Sie es nicht global ...

    
Steve Jones 28.07.2016 18:47
quelle
1

Beim Erstellen eines selbstsignierten Zertifikats liegt ein Label-Softwarefehler mit dem Java Keytool für Java Version 1.7.0_60-b19 vor. Siehe diese Anweisungen als Referenz.

Ссылка

Wenn Sie zur Eingabe von "Wie lautet Ihr Vor- und Nachname?" aufgefordert werden, sollten Sie anstelle des Namens Ihren allgemeinen Namen oder (vollständig qualifizierten Domänennamen Ihres Servers) eingeben.

%Vor%

Sie können überprüfen, ob das Attribut "CN" (allgemeiner Name) richtig gesetzt wird, indem Sie Folgendes aufrufen:

%Vor%

Suche Java-Version:

%Vor%     
MacGyver 08.12.2016 20:47
quelle

Tags und Links