Ich versuche, eine HTTPS-REST-API über Jersey Client
aufzurufen. Und im Laufe der Entwicklung stolpere ich über folgenden Fehler:
Also habe ich es ein bisschen geglotzt und eine Menge Lösung dafür gefunden, was tatsächlich funktioniert.
Sie sind in einer anderen Domäne, aber sie haben eine gemeinsame Lösung, um es auszuarbeiten.
Ich verwende derzeit ein selbst erstelltes selbstsigniertes Zertifikat in der Entwicklungsumgebung. Und deshalb wird es das Problem zeigen.
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.
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?
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
:
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.
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 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 ...
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%