2011-04-18 12 views
34

मैं cacerts और jssecacerts फ़ाइलों के बीच अंतरों पर गंभीरता से उलझन में हूं।जावा में कैकर्ट और जेएससीकेकर्ट दोनों फाइलें क्यों हैं?

मुझे पता है कि डिफ़ॉल्ट जावा द्वारा jssecacerts फ़ाइल और फिर cacerts फ़ाइल की तलाश होती है।

लेकिन jssecacerts फ़ाइल का बिंदु क्या है?

मेरी समझ यह है कि यदि एक नए ट्रस्टस्टोर का उपयोग करने की आवश्यकता है तो cacerts की एक प्रति बनाई जानी चाहिए और सभी नए विश्वसनीय सीए को उस प्रतिलिपि में जोड़ा जाना चाहिए। cacerts (नए सीएएस के साथ) की प्रतिलिपि को -Djavax.net.ssl.trustStore सिस्टम प्रॉपर्टी द्वारा संदर्भित किया जाना चाहिए। इस तरह से उस मशीन पर चलने वाले अन्य जावा एप्लिकेशन गलती से गैर-डिफ़ॉल्ट सीए पर भरोसा नहीं करेंगे।

+0

क्या आपको वास्तव में सही होने के लिए 3 उत्तरों में से कोई भी नहीं मिला है? क्या आप उस व्यक्ति को चुन सकते हैं जिसे आप सही मानते हैं? – JoeG

उत्तर

4

अच्छा सवाल। मुझे लगता है कि यह ऐतिहासिक तथ्य से उत्पन्न होता है कि जेएसएसई एक बार एड-ऑन था। जेएसएसई कई प्रदाताओं को अनुमति देता है, इसलिए शायद jssecacerts केवल जेएसएसई प्रदाता के लिए है, और अन्य प्रदाता स्वयं का उपयोग कर सकते हैं।

लेकिन जेएसएसई से पहले कैकर्ट का उपयोग करने वाला एक और सवाल है।

9

जैसा कि मैं इसे समझता हूं, cacerts फ़ाइल भेज दी गई डिफ़ॉल्ट डिफ़ॉल्ट है।

यदि jssecacerts फ़ाइल है तो यह विशेष रूप से उपयोग की जाती है - cacerts फ़ाइल के अतिरिक्त नहीं।

मेरी सिफारिश: cacerts फ़ाइल को रखें, jssecacerts पर कॉपी करें और jssecacerts फ़ाइल पर आवश्यक कोई भी निजी CA/Signing certs जोड़ें।

+0

इसके लिए धन्यवाद, मैंने यह भी पाया कि यदि कोई jssecacerts फ़ाइल मौजूद है, तो कैकर्ट में सीए होने पर काम नहीं होता है, और इसे इसके बजाय jssecacerts में जोड़ा जाना आवश्यक है। –

+0

@EJP आप भेजे गए jssecacerts फ़ाइल में "clobber" नहीं हैं। कोई jssecacerts फ़ाइल भेज दी गई है। Jssecacerts में cacerts की प्रतिलिपि बनाकर जावा अब इसके बजाय jssecacerts का उपयोग करेगा। अब आप जावा के साथ भेजे गए डिफ़ॉल्ट (कैकर्ट) को बदलने के बारे में चिंता किए बिना 'कीटोल' का उपयोग करके jssecacerts से/रिमोट कर्ट जोड़ सकते हैं। किसी भी बदलाव को पूर्ववत करना निर्देशिका से jssecacerts को हटाने के रूप में आसान है। – DeezCashews

22

Java™ Secure Socket Extension (JSSE) Reference Guide से, TrustManagerFactory विश्वास सामग्री खोजने के लिए प्रयास करने के लिए निम्न चरणों के उपयोग करता है:

  1. प्रणाली संपत्ति javax.net.ssl.trustStore
  2. java-home/lib/security/jssecacerts
  3. java-home/lib/security/cacerts (डिफ़ॉल्ट रूप से भेज दिया)

मैं इस बारे में सोच कॉन्फ़िगरेशन अवधारणा पर सम्मेलन पर आधारित है। अतिरिक्त कोडिंग प्रयास के बिना, cacert का उपयोग किया जाएगा। अतिरिक्त निजी सीए/हस्ताक्षर करने के लिए, एक डेवलपर या तो पहले या दूसरे तरीके का उपयोग कर सकता है, जहां पूर्व में केवल एक विशेष प्रमाणपत्र हो सकता है लेकिन बाद में इसमें कर्ट की एक सूची शामिल है।

+4

बिंदु 1, 2, या 3 पाता है, यह उस विशेष रूप से उपयोग करता है, इसलिए यदि उपयोग किया जाता है तो jssecacerts को सभी कर्ट शामिल करने की आवश्यकता होगी। – JoeG

संबंधित मुद्दे