Dans l’environnement de développement des services Web Java, les développeurs génèrent toujours un certificat de test à l’aide de
keytool
. Lors des tests client, le client de test de service Web rencontre souvent les messages d’erreur suivants:
-
lien://services web/jax-ws/hôte-java-security-cert-certificateexception-no-name-matching-local-found/[java.security.cert.CertificateException:
Aucun nom correspondant à l’hôte local trouvé]. link://services Web/jax-ws/suncertpathbuilderexception-impossible-à-trouver-valide-certification-chemin-à-cible-demandée/[SunCertPathBuilderException:
impossible de trouver un chemin de certification valide vers la cible demandée]
Voici un code source, que j’ai copié du livre: Java Web Services: 1ère édition de Martin Kalin , qui permet de vérifier le certificat et le nom d’hôte. Un code très utile dans l’environnement de test SEULEMENT , recommande d’étudier et de mettre en signet pour référence future :)
package com.mkyong.client; import java.net.MalformedURLException; import java.net.URL; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import java.security.cert.Certificate; import java.security.cert.X509Certificate; import java.io.** ; import javax.net.ssl.HostnameVerifier; import javax.net.ssl.HttpsURLConnection; import javax.net.ssl.SSLContext; import javax.net.ssl.SSLPeerUnverifiedException; import javax.net.ssl.SSLSession; import javax.net.ssl.TrustManager; import javax.net.ssl.X509TrustManager; public class HttpsClient{ public static void main(String[]args) { new HttpsClient().testIt(); } private TrustManager[]get__trust__mgr() { TrustManager[]certs = new TrustManager[]{ new X509TrustManager() { public X509Certificate[]getAcceptedIssuers() { return null; } public void checkClientTrusted(X509Certificate[]certs, String t) { } public void checkServerTrusted(X509Certificate[]certs, String t) { } } }; return certs; } private void testIt(){ String https__url = "https://localhost:8443/HelloWorld/hello?wsdl"; URL url; try { //Create a context that doesn't check certificates. SSLContext ssl__ctx = SSLContext.getInstance("TLS"); TrustManager[]trust__mgr = get__trust__mgr(); ssl__ctx.init(null, //key manager trust__mgr, //trust manager new SecureRandom());//random number generator HttpsURLConnection.setDefaultSSLSocketFactory(ssl__ctx.getSocketFactory()); url = new URL(https__url); HttpsURLConnection con = (HttpsURLConnection)url.openConnection(); //Guard against "bad hostname" errors during handshake. con.setHostnameVerifier(new HostnameVerifier() { public boolean verify(String host, SSLSession sess) { if (host.equals("localhost")) return true; else return false; } }); //dumpl all cert info print__https__cert(con); //dump all the content print__content(con); } catch (MalformedURLException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); }catch (NoSuchAlgorithmException e) { e.printStackTrace(); }catch (KeyManagementException e) { e.printStackTrace(); } } private void print__https__cert(HttpsURLConnection con){ if(con!=null){ try { System.out.println("Response Code : " + con.getResponseCode()); System.out.println("Cipher Suite : " + con.getCipherSuite()); System.out.println("\n"); Certificate[]certs = con.getServerCertificates(); for(Certificate cert : certs){ System.out.println("Cert Type : " + cert.getType()); System.out.println("Cert Hash Code : " + cert.hashCode()); System.out.println("Cert Public Key Algorithm : " + cert.getPublicKey().getAlgorithm()); System.out.println("Cert Public Key Format : " + cert.getPublicKey().getFormat()); System.out.println("\n"); } } catch (SSLPeerUnverifiedException e) { e.printStackTrace(); } catch (IOException e){ e.printStackTrace(); } } } private void print__content(HttpsURLConnection con){ if(con!=null){ try { System.out.println("** ** ** ** ** ** Content of the URL ** ** ** ** ** ** ** ** "); BufferedReader br = new BufferedReader( new InputStreamReader(con.getInputStream())); String input; while ((input = br.readLine()) != null){ System.out.println(input); } br.close(); } catch (IOException e) { e.printStackTrace(); } } } }
lien://tag/jax-ws/[jax-ws]lien://tag/web-services/[services web]