আমি এই সমস্যাটি এমন একটি শংসাপত্র সরবরাহকারীর কাছে তাড়া করেছি যা ডিফল্ট জেভিএম বিশ্বস্ত হোস্টগুলির অংশ নয় JDK 8u74
। সরবরাহকারীটি হ'ল www.identrust.com , তবে এটি সেই ডোমেনটি নয় যা আমি সংযোগের চেষ্টা করছিলাম। এই ডোমেনটি এই সরবরাহকারীর কাছ থেকে এর শংসাপত্র অর্জন করেছে। জেডিকে / জেআরই-তে ডিফল্ট তালিকার মাধ্যমে ক্রস রুট কভার বিশ্বাসটি দেখুন ? - একটি দম্পতি এন্ট্রি পড়ুন। আরো দেখুন কোন ব্রাউজার এবং অপারেটিং সিস্টেম আসুন এনক্রিপ্ট সমর্থন ।
সুতরাং, আমি আগ্রহী এমন ডোমেনের সাথে সংযোগ স্থাপনের জন্য, যা থেকে identrust.com
আমার শংসাপত্র জারি করা হয়েছিল নিম্নলিখিত পদক্ষেপগুলি করেছে। মূলত, আমি DST Root CA X3
জেভিএম দ্বারা বিশ্বাসযোগ্য হতে পরিচয় ডটকম ( ) শংসাপত্র পেতে হয়েছিল। আমি অ্যাপাচি এইচটিপিপি কম্পোনেন্টগুলি 4.5 ব্যবহার করে তা করতে সক্ষম হয়েছি:
1: শংসাপত্র চেইন ডাউনলোডের নির্দেশাবলীতে indettrust থেকে শংসাপত্র পান । ডিএসটি রুট সিএ এক্স 3 লিঙ্কটিতে ক্লিক করুন ।
2: "ডিএসটি রুট সিএ এক্স 3.pem" নামের একটি ফাইলটিতে স্ট্রিংটি সংরক্ষণ করুন। প্রারম্ভিক এবং শেষে ফাইলটিতে "----- শুরু করুন শংসাপত্র -----" এবং "----- সমাপ্তি প্রত্যয় -----" লাইন যুক্ত করার বিষয়ে নিশ্চিত হন।
3: নিম্নলিখিত কমান্ড সহ একটি জাভা কীস্টোর ফাইল তৈরি করুন, cacerts.jks:
keytool -import -v -trustcacerts -alias IdenTrust -keypass yourpassword -file dst_root_ca_x3.pem -keystore cacerts.jks -storepass yourpassword
4: ফলস্বরূপ cacerts.jks কীস্টোরটি আপনার জাভা / (maven) অ্যাপ্লিকেশনটির সংস্থান ডিরেক্টরিতে অনুলিপি করুন।
5: এই ফাইলটি লোড করতে এবং অ্যাপাচি 4.5 এইচটিটিপি ক্লায়েন্টের সাথে সংযুক্ত করার জন্য নিম্নলিখিত কোডটি ব্যবহার করুন। এটি এমন সমস্ত ডোমেনের সমস্যার সমাধান করবে যা থেকে শংসাপত্র জারি করা হয়েছেindetrust.com
ইউরাক ওরাকল করা হয়েছে তাদের জেআরই ডিফল্ট কীস্টোরের শংসাপত্র অন্তর্ভুক্ত করবে solve
SSLContext sslcontext = SSLContexts.custom()
.loadTrustMaterial(new File(CalRestClient.class.getResource("/cacerts.jks").getFile()), "yourpasword".toCharArray(),
new TrustSelfSignedStrategy())
.build();
// Allow TLSv1 protocol only
SSLConnectionSocketFactory sslsf = new SSLConnectionSocketFactory(
sslcontext,
new String[] { "TLSv1" },
null,
SSLConnectionSocketFactory.getDefaultHostnameVerifier());
CloseableHttpClient httpclient = HttpClients.custom()
.setSSLSocketFactory(sslsf)
.build();
যখন প্রকল্পটি তৈরি হবে তখন cacerts.jks ক্লাসপথে অনুলিপি করে সেখান থেকে লোড করা হবে। আমি ঠিক সময়ে এই সময়ে অন্যান্য এসএসএল সাইটের বিরুদ্ধে পরীক্ষা করিনি, তবে এই শংসাপত্রের উপরের কোডটি যদি "চেইন" থাকে তবে সেগুলিও কার্যকর হবে, তবে আবার, আমি জানি না।
তথ্যসূত্র: কাস্টম এসএসএল প্রসঙ্গে এবং আমি কীভাবে জাভা এইচটিপিএসর URL সংযোগের সাথে স্ব-স্বাক্ষরিত শংসাপত্র গ্রহণ করব?