সম্পাদনা করুন: - খনি ব্লগে আরও উপস্থাপনযোগ্য উপায়ে প্রশ্নটি ফর্ম্যাট করার চেষ্টা করেছে এবং উত্তরটি গৃহীত হয়েছে
আসল বিষয়টি এখানে।
আমি এই ত্রুটি পাচ্ছি:
বিশদ বার্তা সূর্য.সিকিউরিটি.অলডিয়েটার.ভালিডেটর এক্সসেপশন: পিকেএক্স পাথ বিল্ডিং ব্যর্থ হয়েছে:
sun.security.provider.certpath.SunCertPathBuilderException: অনুরোধ করা টার্গেটে বৈধ শংসাপত্রের পথ খুঁজে পেতে ব্যর্থকারণ javax.net.ssl.SSL.andLLandSandException: sun.security. লাডিয়েটার.ভালিডেটর এক্সপেশন: PKIX পাথ বিল্ডিং ব্যর্থ হয়েছে: সূর্য.সিকিউরিটি।
আমি টমকেট 6 ওয়েবসার্ভার হিসাবে ব্যবহার করছি। আমার কাছে দুটি বন্দুকের বিভিন্ন টমক্যাটে তবে একই মেশিনে দুটি এইচটিটিপিএস ওয়েব অ্যাপ্লিকেশন ইনস্টল করা আছে। বলে App1(port 8443)
ও
App2(port 443)
। App1
সাথে সংযোগ করে App2
। যখন আমি App1
সংযোগ App2
করি তখন উপরের ত্রুটিটি পাই। আমি জানি এটি একটি খুব সাধারণ ত্রুটি তাই বিভিন্ন ফোরাম এবং সাইটগুলিতে বহু সমাধান জুড়ে এসেছিল। server.xml
উভয় টোমকেটসের নীচে আমার প্রবেশ রয়েছে :
keystoreFile="c:/.keystore"
keystorePass="changeit"
প্রতিটি সাইট একইভাবে বলেছে যে অ্যাপ 2 দ্বারা দেওয়া শংসাপত্রটি অ্যাপ্লিকেশন jvm এর বিশ্বস্ত দোকানে নেই trusted এটি সত্য বলে মনে হয় যখন আমি IE ব্রাউজারে একই ইউআরএল হিট করার চেষ্টা করেছি, এটি কাজ করে (ওয়ার্মিংয়ের সাথে, এই ওয়েব সাইটের সুরক্ষা শংসাপত্রের সাথে একটি সমস্যা আছে Here আমি এখানে এই ওয়েবসাইটটিতে চালিয়ে যেতে বলি)। কিন্তু যখন একই URL টি জাভা ক্লায়েন্ট দ্বারা আঘাত করা হয় (আমার ক্ষেত্রে) আমি উপরের ত্রুটিটি পাই। সুতরাং এটি ট্রস্টস্টোরে রাখার জন্য আমি এই তিনটি বিকল্প চেষ্টা করেছিলাম:
বিকল্প 1
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore");
System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
অপশন 2 পরিবেশ পরিবর্তনশীল নীচে সেট
CATALINA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
অপশন 3 পরিবেশ পরিবর্তনশীল নীচে সেট করা
JAVA_OPTS -- param name
-Djavax.net.ssl.trustStore=C:\.keystore -Djavax.net.ssl.trustStorePassword=changeit ---param value
তবে কিছুই কাজ করেনি ।
অ্যাপাচি এইচটিপিপিএলিয়েন্টের সাথে কীভাবে অবৈধ এসএসএল শংসাপত্রগুলি পরিচালনা করতে হবে তার পরামর্শ দেওয়া জাভা পদ্ধতির শেষ অবধি কি কাজ করা হয়েছে? পাস্কেল থিভেন্ট অর্থাৎ প্রোগ্রাম ইনস্টল করে দিয়ে
তবে এই পদ্ধতির ডেভবক্স সেটআপের জন্য ঠিক আছে তবে আমি উত্পাদন পরিবেশে এটি ব্যবহার করতে পারি না।
আমি অবাক হচ্ছি কেন তিন পন্থা উপরে কাজ করে নি উল্লেখ করেছিলেন, যখন আমি একই মান উল্লেখ করেছি server.xml
এর app2
সেটিংস এর দ্বারা truststore মধ্যে সার্ভার এবং একই মান
System.setProperty("javax.net.ssl.trustStore", "C:/.keystore") and System.setProperty("javax.net.ssl.trustStorePassword", "changeit");
মধ্যে app1
প্রোগ্রাম।
আরও তথ্যের জন্য আমি এইভাবে সংযোগটি করছি:
URL url = new URL(urlStr);
URLConnection conn = url.openConnection();
if (conn instanceof HttpsURLConnection) {
HttpsURLConnection conn1 = (HttpsURLConnection) url.openConnection();
conn1.setHostnameVerifier(new HostnameVerifier() {
public boolean verify(String hostname, SSLSession session) {
return true;
}
});
reply.load(conn1.getInputStream());
domainname
আমার আরএইচএল সার্ভারগুলিতে সঠিকভাবে সেট করলে সমস্যাটি শেষ হয়ে যায়। আশা করি এটি কাউকে সাহায্য করবে।