আমি আমাদের বৃহত জাভা অ্যাপ্লিকেশনটিতে একটি মডিউল যুক্ত করছি অন্য কোম্পানির এসএসএল-সুরক্ষিত ওয়েবসাইটের সাথে কথা বলতে হবে। সমস্যাটি হ'ল সাইটটি স্ব-স্বাক্ষরিত শংসাপত্র ব্যবহার করে। আমি মাঝারি-মধ্যবর্তী আক্রমণটির মুখোমুখি হচ্ছি না তা যাচাই করার জন্য আমার শংসাপত্রের একটি অনুলিপি রয়েছে এবং সার্ভারের সংযোগটি সফল হতে পারে এমনভাবে আমার এই শংসাপত্রটি আমাদের কোডে অন্তর্ভুক্ত করা দরকার।
এখানে মূল কোডটি রয়েছে:
void sendRequest(String dataPacket) {
String urlStr = "https://host.example.com/";
URL url = new URL(urlStr);
HttpURLConnection conn = (HttpURLConnection)url.openConnection();
conn.setMethod("POST");
conn.setRequestProperty("Content-Length", data.length());
conn.setDoOutput(true);
OutputStreamWriter o = new OutputStreamWriter(conn.getOutputStream());
o.write(data);
o.flush();
}
স্ব-স্বাক্ষরিত শংসাপত্রের জন্য কোনও অতিরিক্ত হ্যান্ডলিং ছাড়াই, নিম্নলিখিত ব্যতিক্রম সহ এটি সংযুক্ত.আউটআউটপুটস্ট্রিম () এ মারা যায়:
Exception in thread "main" javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
....
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
....
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
আদর্শভাবে, আমার কোডটিকে জাভাকে এই স্ব-স্বাক্ষরিত শংসাপত্রটি গ্রহণের জন্য অ্যাপ্লিকেশনের এই একটি স্পটের জন্য এবং অন্য কোথাও শেখানো দরকার।
আমি জানি যে আমি জেআরই'র শংসাপত্র কর্তৃপক্ষের দোকানে শংসাপত্রটি আমদানি করতে পারি এবং এটি জাভা এটি স্বীকার করার অনুমতি দেবে। আমি যদি সহায়তা করতে পারি তবে আমি নিতে চাই না এটি এমন একটি উপায় নয়; আমাদের গ্রাহকের সমস্ত মেশিন তারা ব্যবহার না করতে পারে এমন একটি মডিউলের জন্য করা খুব আক্রমণাত্মক বলে মনে হয়; এটি একই জেআরই ব্যবহার করে অন্যান্য সমস্ত জাভা অ্যাপ্লিকেশনগুলিকে প্রভাবিত করবে এবং আমি এটি পছন্দ করি না যদিও এই সাইটটিতে অ্যাক্সেস করা অন্য কোনও জাভা অ্যাপ্লিকেশনের প্রতিক্রিয়া শূন্য রয়েছে। এটি কোনও তুচ্ছ অপারেশনও নয়: ইউএনআইএক্স-এ আমাকে এইভাবে জেআরই সংশোধন করার জন্য অ্যাক্সেসের অধিকার অর্জন করতে হবে।
আমি এটিও দেখেছি যে আমি একটি ট্রাস্ট ম্যানেজার উদাহরণ তৈরি করতে পারি যা কিছু কাস্টম চেকিং করে। দেখে মনে হচ্ছে আমি এমনকি একটি ট্রাস্ট ম্যানেজার তৈরি করতে সক্ষম হতে পারি যা এই এক শংসাপত্র ব্যতীত সকল ক্ষেত্রে প্রকৃত ট্রাস্ট ম্যানেজারকে প্রতিনিধি করে। তবে দেখে মনে হচ্ছে বিশ্বস্তভাবে ট্রাস্ট ম্যানেজারটি ইনস্টল হয়ে গেছে এবং আমি ধারণা করছি আমাদের অ্যাপ্লিকেশন থেকে অন্যান্য সমস্ত সংযোগ প্রভাবিত করবে এবং এটি আমার কাছে খুব একটা গন্ধ পাবে না।
স্ব-স্বাক্ষরিত শংসাপত্র গ্রহণ করার জন্য জাভা অ্যাপ্লিকেশন সেটআপ করার পছন্দের, মানক বা সর্বোত্তম উপায় কী? আমি কি আমার উপরে যে লক্ষ্যগুলি রেখেছি তা সবই পূরণ করতে পারি, বা আমাকে আপস করতে হবে? ফাইল এবং ডিরেক্টরি এবং কনফিগারেশন সেটিংস এবং অল্প-টু-নো কোড যুক্ত কোনও বিকল্প রয়েছে?