जब भी हम URL से जुड़ने की कोशिश कर रहे हैं,
अगर दूसरी साइट पर सर्वर https प्रोटोकॉल पर चल रहा है और यह अनिवार्य कर रहा है कि हमें प्रमाणपत्र में दी गई जानकारी के माध्यम से संवाद करना चाहिए तो हमारे पास निम्नलिखित विकल्प हैं:
1) प्रमाणपत्र के लिए पूछें (प्रमाण पत्र डाउनलोड करें), इस प्रमाण पत्र को ट्रस्टोर में आयात करें। डिफ़ॉल्ट भरोसेमंद जावा का उपयोग \ Java \ jdk1.6.0_29 \ jre \ lib \ Security \ cacerts में पाया जा सकता है, अगर हम URL कनेक्शन से जुड़ने के लिए पुन: प्रयास करेंगे तो स्वीकार कर लिया जाएगा।
2) सामान्य व्यावसायिक मामलों में, हम संगठनों में आंतरिक URLS से जुड़ सकते हैं और हम जानते हैं कि वे सही हैं। ऐसे मामलों में, आप भरोसा करते हैं कि यह सही URL है, ऊपर दिए गए ऐसे मामलों में, कोड का उपयोग किया जा सकता है, जो विशेष URL से जुड़ने के लिए प्रमाणपत्र को संग्रहीत करने के लिए अनिवार्य नहीं होगा।
बिंदु नंबर 2 के लिए हमें निम्न चरणों का पालन करना होगा:
1) नीचे विधि लिखें जो HttpsURLConnection के लिए HostnameVerifier सेट करता है जो सभी मामलों के लिए सही है जिसका अर्थ है कि हम ट्रस्टस्टोर पर भरोसा कर रहे हैं।
// 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) नीचे विधि लिखें, जो URL से कनेक्ट करने का प्रयास करने से पहले doTrustToCert प्रमाणपत्र कहता है
// 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());
}
यह कॉल प्रतिक्रिया कोड = 200 का अर्थ है कि कनेक्शन सफल है।
अधिक विवरण और नमूना उदाहरण के लिए आप URL का उल्लेख कर सकते हैं ।