SSL Certificat de Vérification : javax.net.le protocole ssl.SSLHandshakeException

Je suis en train d'appeler un HTTPS API REST par Jersey Client. Et sur le cours de développement, je tombe sur l'erreur suivante :

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

Donc je l'ai googlé un peu et trouvé des tonnes de solution pour elle , qui fonctionne réellement.

  1. HTTPS à l'aide de Jersey Client
  2. https://gist.github.com/outbounder/1069465
  3. Comment fixer le "java.de sécurité.cert.CertificateException: Pas d'autres noms de l'objet présent" d'erreur?
  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/

Ils sont dans différents domaine, mais ils ont une solution commune pour travailler.

Scénario

Je suis actuellement en utilisant un auto créé certificat auto-signé dans un environnement de développement. Et par conséquent, il est lié à la question.

Question

La solution mentionnée ci-dessus se concentrer sur sauter /permettant à tous les certificats à vérifier.

Mais quand je la déplace dans l'environnement de production , puis-je avoir accès à la validation de la signature de Certificat de source digne de confiance.

  1. Sont donc ces solution toute aide quand je bouge à la production?
  2. C'est OK pour ignorer la vérification SSL ?
  3. Quels sont les autre façon de parvenir à une solution commune pour
    à la fois le développement et l'environnement de production?

P. S

La solution que j'ai utilisé était ,

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();
}

qui je puis en-coopérer avec Jersey pour le faire fonctionner. Et c'est génial de travailler.

Donc , le Question de nouveau. Est-ce une solution viable à être utilisé dans un environnement de Production?
Cependant, vous ne voulez pas modifier le retour des entités, c'est beaucoup mieux pour extraire les entités en mode lecture seule. Cela permet à Hibernate de jeter les associés détaché de l'état qui est utilisé par la sale mécanisme de contrôle afin de détecter l'état de l'entité modifications. De plus, en lecture seule entités sont ignorées pendant le rinçage.

"C'est OK pour ignorer la vérification SSL ?" - plutôt pas.. ou n'avez-vous pas ici sur les Pommes GOTO FAIL?!
"Donc , la Question à nouveau. La solution est-elle viable à être utilisé dans un environnement de Production?" - non, il n'est pas. Son irresponsabilité et la négligence.

OriginalL'auteur Runcorn | 2014-08-01