SSL-Zertifikat-Verifizierung : javax.net.ssl.SSLHandshakeException

Bin ich versucht, rufen Sie eine HTTPS-REST-API durch Jersey Client. Und auf den Verlauf der Entwicklung stolpere ich über folgenden Fehler :

Exception in thread "main" com.sun.jersey.api.client.ClientHandlerException: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching mvn.signify.abc.com found
    at com.sun.jersey.client.urlconnection.URLConnectionClientHandler.handle(URLConnectionClientHandler.java:149)
    at com.sun.jersey.api.client.Client.handle(Client.java:648)
    at com.sun.jersey.api.client.WebResource.handle(WebResource.java:670)
    at com.sun.jersey.api.client.WebResource.access$200(WebResource.java:74)
    at com.sun.jersey.api.client.WebResource$Builder.get(WebResource.java:503)
    at com.lftechnology.sbworkbench.utility.utils.PingFederateUtility.main(PingFederateUtility.java:32)
Caused by: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No name matching mvn.signify.abc.com found

Also googelte ich es für ein bisschen und fand Tonnen Lösung , die tatsächlich funktioniert.

  1. HTTPS mit Client-Jersey
  2. https://gist.github.com/outbounder/1069465
  3. Wie kann man das "java.Sicherheit.cert.CertificateException: Kein Betreff alternative Namen vorhanden" - Fehler?
  4. http://www.mkyong.com/webservices/jax-ws/java-security-cert-certificateexception-no-name-matching-localhost-found/
  5. http://java.globinch.com/enterprise-java/security/fix-java-security-certificate-exception-no-matching-localhost-found/

Sind Sie in anderen Domäne, aber Sie haben eine gemeinsame Lösung zu arbeiten.

Szenario

Ich bin derzeit mit einem selbst erstellten self-signed certificate in development environment. Und damit ist es gebunden ist, zu zeigen, bis Sie das Problem.

Frage

Der oben genannten Lösung den Fokus auf das überspringen /erlaubt alle Zertifikate zu verifizieren.

Aber wenn ich mich bewege es an die Produktionsumgebung , dann habe ich Zugriff auf Gültiges Signiertes Zertifikat aus vertrauenswürdiger Quelle.

  1. Also diese Lösung helfen, wenn ich zu bewegen, um die Produktion?
  2. Ist es OK überspringen der SSL-überprüfung ?
  3. Was sind die anderen alternativen Weg zum erreichen einer gemeinsamen Lösung für
    sowohl die Entwicklung und Produktion Umwelt?

P. S

Die Lösung, die ich verwendet wurde ,

try
{
    //Create a trust manager that does not validate certificate chains
    TrustManager[] trustAllCerts = new TrustManager[] {new X509TrustManager() {
        public java.security.cert.X509Certificate[] getAcceptedIssuers() {
            return null;
        }
        public void checkClientTrusted(X509Certificate[] certs, String authType) {
        }
        public void checkServerTrusted(X509Certificate[] certs, String authType) {
        }
    }
    };

    //Install the all-trusting trust manager
    SSLContext sc = SSLContext.getInstance("SSL");
    sc.init(null, trustAllCerts, new java.security.SecureRandom());
    HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());

    //Create all-trusting host name verifier
    HostnameVerifier allHostsValid = new HostnameVerifier() {
        public boolean verify(String hostname, SSLSession session) {
            return true;
        }
    };

    //Install the all-trusting host verifier
    HttpsURLConnection.setDefaultHostnameVerifier(allHostsValid);
} catch (NoSuchAlgorithmException e) {
    e.printStackTrace();
} catch (KeyManagementException e) {
    e.printStackTrace();
}

die ich dann in Zusammenarbeit mit Jersey machen, damit es funktioniert. Und es funktioniert Super.

So , die Question wieder. Ist diese Lösung sinnvoll eingesetzt werden, in der Produktion Umwelt?
Allerdings müssen Sie nicht möchten, ändern Sie die Rückkehr Einheiten, es ist viel besser, Holen die Personen in nur-lese-Modus. Dies wird ermöglicht Hibernate zu verwerfen, die damit verbundenen abgenommenen Zustand, die verwendet wird, durch die dirty-checking-Mechanismus zum erkennen von entity-state-Modifikationen. Mehr, nur-lese-Einheiten übersprungen werden während der Spülung.

  • "Ist es OK, überspringen SSL-überprüfung ?" - eher nicht.. oder hast du nicht hier über Apples GOTO-FAIL?!
  • "Also , nochmal die Frage. Ist diese Lösung sinnvoll eingesetzt werden, in der Produktion Umwelt?" - nicht, nicht seiner. Seine unverantwortlich und grob fahrlässig.
InformationsquelleAutor Runcorn | 2014-08-01
Schreibe einen Kommentar