আমরা যখনই ইউআরএল সংযোগের চেষ্টা করছি,
যদি অন্য সাইটে সার্ভারটি https প্রোটোকলটিতে চলমান থাকে এবং বাধ্যতামূলক হয় যে শংসাপত্রের সরবরাহিত তথ্যের মাধ্যমে আমাদের যোগাযোগ করা উচিত তবে আমাদের নিম্নলিখিত বিকল্প রয়েছে:
1) শংসাপত্রের জন্য জিজ্ঞাসা করুন (শংসাপত্রটি ডাউনলোড করুন), বিশ্বস্তরে এই শংসাপত্রটি আমদানি করুন। ডিফল্ট বিশ্বাসযোগ্য জাভা ব্যবহারগুলি \ জাভা \ jdk1.6.0_29 \ jre \ lib \ সুরক্ষা \ ক্যাসর্টগুলিতে পাওয়া যায়, তবে আমরা যদি ইউআরএল সংযোগের সাথে সংযোগ করার চেষ্টা করি তবে তা গ্রহণযোগ্য হবে।
2) সাধারণ ব্যবসায়ের ক্ষেত্রে আমরা সংস্থাগুলিতে অভ্যন্তরীণ URL গুলির সাথে সংযুক্ত হতে পারি এবং আমরা জানি যে সেগুলি সঠিক। এই জাতীয় ক্ষেত্রে, আপনি বিশ্বাস করেন যে এটি সঠিক URL, উপরের ক্ষেত্রে যেমন কোড ব্যবহার করা যেতে পারে যা নির্দিষ্ট ইউআরএলে সংযোগ করার জন্য শংসাপত্রটি সংরক্ষণ করার আদেশ দেয় না।
পয়েন্ট নং 2 এর জন্য আমাদের নীচের পদক্ষেপগুলি অনুসরণ করতে হবে:
1) নীচে এমন পদ্ধতি লিখুন যা Https URL সংযোগের জন্য হোস্টনাম ভেরিফায়ার সেট করে যা সমস্ত ক্ষেত্রে সত্য হয়ে যায় যার অর্থ আমরা ট্রাস্টস্টোরকে বিশ্বাস করি।
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) নীচে মেথড লিখুন, যা ইউআরএলতে সংযোগ দেওয়ার চেষ্টা করার আগে doTrustToCertificates বলে
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 টি উল্লেখ করতে পারেন ।