Chaque fois que nous essayons de nous connecter à l'URL,
si le serveur de l'autre site fonctionne sur le protocole https et exige que nous communiquions via les informations fournies dans le certificat, nous avons l'option suivante:
1) demandez le certificat (téléchargez le certificat), importez ce certificat en trustore. Les utilisations Java de confiance par défaut peuvent être trouvées dans \ Java \ jdk1.6.0_29 \ jre \ lib \ security \ cacerts, alors si nous réessayons de nous connecter à l'URL, la connexion sera acceptée.
2) Dans les cas commerciaux normaux, nous pourrions nous connecter à des URL internes dans des organisations et nous savons qu'elles sont correctes. Dans de tels cas, vous êtes sûr qu'il s'agit de l'URL correcte. Dans les cas ci-dessus, un code peut être utilisé qui ne demandera pas de stocker le certificat pour se connecter à une URL particulière.
pour le point n ° 2, nous devons suivre les étapes ci-dessous:
1) écrivez ci-dessous la méthode qui définit HostnameVerifier pour HttpsURLConnection qui renvoie true pour tous les cas, ce qui signifie que nous faisons confiance au trustStore.
// 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) écrivez la méthode ci-dessous, qui appelle doTrustToCertificates avant d'essayer de vous connecter à l'URL
// connecting to URL
public void connectToUrl(){
doTrustToCertificates();//
URL url = new URL("https://www.example.com");
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
System.out.println("ResponseCode ="+conn.getResponseCode());
}
Cet appel renverra le code de réponse = 200 signifie que la connexion est réussie.
Pour plus de détails et un exemple d'exemple, vous pouvez vous référer à URL .