Chaque fois que nous essayons de nous connecter à l'URL ,
Si le serveur à l'autre site est en cours d'exécution sur le protocole https et exige que nous devrions communiquer grâce à l'information fournie dans le certificat
nous avons l'option suivante
1) demander le certificat(télécharger le certificat) ,l'importation de ce certificat dans le fichier de clés certifiées. Par défaut du fichier de clés certifiées java utilise peut être trouvé dans \Java\jdk1.6.0_29\jre\lib\security\cacerts ,alors si nous réessayer de se connecter à l'URL de connexion est acceptée.
2) Dans des conditions normales d'affaires des cas, on peut se connecter à l'URL internes dans les organisations, et nous savons qu'ils sont corrects.
Dans de tels cas, vous convaincu que sa l'URL est correcte ,Dans de tels cas, le code ci-dessus peut être utilisé, qui ne sera pas mandat pour stocker le certificat pour se connecter à perticular URL
pour le point n ° 2, nous devons suivre les étapes ci-dessous :
1) écrire ci-dessous la méthode qui définit HostnameVerifier pour HttpsURLConnection qui renvoie la valeur true pour tous les cas, ce qui signifie que nous espérons que le fichier de clés certifiées
// trusting all certificate
public void doTrustToCertificates() throws Exception {
Security.addProvider(new com.sun.net.ssl.internal.ssl.Provider());
TrustManager[] trustAllCerts = new TrustManager[]{
new X509TrustManager() {
public X509Certificate[] getAcceptedIssuers() {
return null;
}
public void checkServerTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
public void checkClientTrusted(X509Certificate[] certs, String authType) throws CertificateException {
return;
}
}
};
SSLContext sc = SSLContext.getInstance("SSL");
sc.init(null, trustAllCerts, new SecureRandom());
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
HostnameVerifier hv = new HostnameVerifier() {
public boolean verify(String urlHostName, SSLSession session) {
if (!urlHostName.equalsIgnoreCase(session.getPeerHost())) {
System.out.println("Warning: URL host '" + urlHostName + "' is different to SSLSession host '" + session.getPeerHost() + "'.");
}
return true;
}
};
HttpsURLConnection.setDefaultHostnameVerifier(hv);
}
2) écrire ci-dessous la méthode , qui appelle doTrustToCertificates avant d'essayer de se connecter à l'URL
// connecting to URL
public void connectToUrl(){
doTrustToCertificates();//
URL url = new URL("https://www.abc.com");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
System.out.println("ResponseCoede ="+conn.getResponseCode());
}
Cet appel renvoie le code de réponse = 200 moyens de connexion est réussie.
pour plus de détails et l'exemple d'échantillon que vous pouvez consulter à l'URL