আমি www.udemy.com এ (আরইএসটি জাভা ওয়েব সার্ভিসেস) আরআরএসটি ওয়েব পরিষেবাদির একটি টিউটোরিয়ালটিতে কাজ করছি। টিউটোরিয়ালের উদাহরণটিতে বলা হয়েছে যে এসএসএল রাখতে হলে আমাদের অবশ্যই আমাদের গ্রহন "ক্লায়েন্ট" প্রজেক্টে "ট্রাস্ট_স্টোর" নামে একটি ফোল্ডার থাকতে হবে যাতে একটি "কী স্টোর" ফাইল থাকা উচিত (আমাদের কাছে পরিষেবাটিতে কল করার জন্য একটি "ক্লায়েন্ট" প্রকল্প ছিল , এবং "পরিষেবা" প্রকল্পটিতে অন্তর্ভুক্ত রয়েছে আরএসটি ওয়েব পরিষেবা - একই গ্রহন কর্মক্ষেত্রের 2 টি প্রকল্প, একটি ক্লায়েন্ট, অন্য পরিষেবা)। জিনিসগুলি সহজ রাখতে, তারা কাচফিশ অ্যাপ্লিকেশন সার্ভার থেকে "keystore.jks" অনুলিপি করতে বলেছিলেন (গ্লাস ফিশ ma ডোমেনগুলি \ ডোমেন 1 \ কনফিগারেশন \ কীস্টোর.জ্যাকস) আমরা ব্যবহার করছি এবং এই "ট্রাস্ট_স্টোর" ফোল্ডারে রেখেছি যা তারা আমাকে তৈরি করেছিল ক্লায়েন্ট প্রকল্প। এটি বোধগম্য বলে মনে হচ্ছে: সার্ভারে স্ব-স্বাক্ষরিত শংসাপত্রগুলি ' s কী_স্টোর ক্লায়েন্ট ট্রাস্ট_স্টোরের শংসাপত্রের সাথে মিলবে। এখন, এটি করাতে, আমি ত্রুটি পেয়ে যাচ্ছিলাম যে মূল পোস্টটি উল্লেখ করেছে। আমি এটি গুগল করে পড়েছি এবং শুনেছি যে ত্রুটিটি কোনও বিশ্বস্ত / স্বাক্ষরিত শংসাপত্র না থাকা ক্লায়েন্টের "কীস্টোর.জ্যাকস" ফাইলের কারণে, এটি শংসাপত্রটি সন্ধান করে যা স্ব-স্বাক্ষরিত।
বিষয়গুলি পরিষ্কার রাখতে, আমি বলতে পারি যে এটি আমি যেমন বুঝতে পেরেছি, "কীস্টোর.জেক্স" -তে স্ব-স্বাক্ষরিত শংসাপত্র রয়েছে এবং "কেসার্টস.জেक्स" ফাইলটিতে সিএ শংসাপত্র রয়েছে (সিএ স্বাক্ষরিত)। "Keystore.jks" হ'ল "কীস্টোর" এবং "cacerts.jks" হ'ল "বিশ্বাসের দোকান"। যেমন "ব্রুনো", একজন মন্তব্যকারী, উপরে বলেছেন, "কীস্টোর.জক্স" স্থানীয় এবং "cacerts.jks" দূরবর্তী ক্লায়েন্টদের জন্য।
সুতরাং, আমি নিজেকে বলেছিলাম, আরে, গ্লাসফিশের "ক্যাসর্টস.জেक्स" ফাইলও রয়েছে, যা গ্লাসফিশের ভরস_তার দোকান ফাইল। cacerts.jsk এ CA শংসাপত্র থাকার কথা। এবং আপাতদৃষ্টিতে আমার কাছে একটি মূল স্টোর ফাইল থাকতে কমপক্ষে একটি সিএ শংসাপত্র থাকতে আমার বিশ্বাসের_স্টোর ফোল্ডারটি দরকার। সুতরাং, আমি আমার ক্লায়েন্ট প্রজেক্টে তৈরি "trust_store" ফোল্ডারে "cacerts.jks" ফাইলটি স্থাপন করার চেষ্টা করেছি এবং ভিএম বৈশিষ্ট্যগুলিকে "কীস্টোর.জ্যাকস" এর পরিবর্তে "cacerts.jks" নির্দেশ করতে চাইছি। যা ত্রুটি থেকে মুক্তি পেয়েছে। আমার ধারণা, এটির জন্য সিএ সার্টের দরকার ছিল।
এটি উত্পাদন, বা এমনকি কিছু কাজ পাওয়ার বাইরেও উন্নয়নের জন্য আদর্শ হতে পারে না। উদাহরণস্বরূপ আপনি ক্লায়েন্টের "keystore.jks" ফাইলটিতে CA সার্টিফিকেট যুক্ত করতে সম্ভবত "keytool" কমান্ডটি ব্যবহার করতে পারেন। তবে যাইহোক আশা করি এটি কমপক্ষে সম্ভাব্য পরিস্থিতিগুলিকে সঙ্কুচিত করে যা এখানে সমস্যা হতে পারে।
ALSO: আমার পদ্ধতির বিষয়টি ক্লায়েন্টের জন্য দরকারী বলে মনে হয়েছে (ক্লায়েন্ট বিশ্বাস_পরিষদে সার্ভারের শংসাপত্র যুক্ত হয়েছে), মনে হচ্ছে মূল পোস্টটি সমাধান করার জন্য উপরের মন্তব্যগুলি সার্ভারের জন্য দরকারী (ক্লায়েন্ট শংসাপত্রটি সার্ভারের ট্রাস্ট_স্টোরে যুক্ত হয়েছে)। চিয়ার্স।
গ্রহন প্রকল্পের সেটআপ:
- MyClientProject
- src
- পরীক্ষা
- জেআরই সিস্টেম লাইব্রেরি
- ...
- trust_store
--- cacerts.jks --- keystore.jks
মাই ক্লায়েন্টপ্রজেক্ট.জাভা ফাইল থেকে স্নিপেট:
static {
// Setup the trustStore location and password
System.setProperty("javax.net.ssl.trustStore","trust_store/cacerts.jks");
// comment out below line
System.setProperty("javax.net.ssl.trustStore","trust_store/keystore.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
//System.setProperty("javax.net.debug", "all");
// for localhost testing only
javax.net.ssl.HttpsURLConnection.setDefaultHostnameVerifier(new javax.net.ssl.HostnameVerifier() {
public boolean verify(String hostname, javax.net.ssl.SSLSession sslSession) {
return hostname.equals("localhost");
}
});
}