[java] ट्रस्ट स्टोर बनाम कुंजी स्टोर - कीटोल के साथ बनाना



1 Answers

कीस्टोर और ट्रस्टस्टोर फ़ाइलों के बीच कोई अंतर नहीं है। दोनों मालिकाना जेकेएस फ़ाइल प्रारूप में फाइलें हैं। भेद उपयोग में है: मेरे सर्वोत्तम ज्ञान के लिए, जावा केवल उस स्टोर का उपयोग करेगा जिसे javax.net.ssl.trustStore द्वारा संदर्भित किया गया है ताकि एसएसएल कनेक्शन बनाते समय विश्वास के लिए प्रमाणपत्रों की तलाश हो सके। कुंजी और javax.net.ssl.keyStore लिए वही। लेकिन सिद्धांत रूप में ट्रस्ट- और कीस्टोरों के लिए एक और एक ही फ़ाइल का उपयोग करना ठीक है।

Question

मैं समझता हूं कि कीस्टोर आमतौर पर निजी / सार्वजनिक कुंजी रखता है और ट्रस्ट स्टोर केवल सार्वजनिक कुंजी (और उन विश्वसनीय पार्टियों की सूची का प्रतिनिधित्व करता है जिनके साथ आप संवाद करना चाहते हैं)। खैर, यह मेरी पहली धारणा है, इसलिए यदि यह सही नहीं है, तो शायद मैंने बहुत अच्छी शुरुआत नहीं की है ...

मुझे यह समझने में दिलचस्पी थी कि जब आप keytool का उपयोग करते समय स्टोर को अलग करते हैं।

तो, अब तक मैंने एक कीस्टोर का उपयोग कर बनाया है

keytool -import -alias bob -file bob.crt -keystore keystore.ks

जो मेरी keystore.ks फ़ाइल बनाता है। मैं सवाल के लिए yes का जवाब देता हूं क्या मुझे बॉब पर भरोसा है लेकिन यह मेरे लिए अस्पष्ट है अगर इसने एक कीस्टोर फ़ाइल या ट्रस्टस्टोर फ़ाइल बनाई है? मैं फ़ाइल का उपयोग करने के लिए अपना आवेदन भी सेट कर सकता हूं।

-Djavax.net.ssl.keyStore=keystore.ks -Djavax.net.ssl.keyStorePassword=x
-Djavax.net.ssl.trustStore=keystore.ks -Djavax.net.ssl.trustStorePassword=x

और System.setProperty( "javax.net.debug", "ssl") सेट के साथ, मैं विश्वसनीय प्रमाणन के तहत प्रमाण पत्र देख सकता हूं (लेकिन कीस्टोर अनुभाग के अंतर्गत नहीं)। मैं जिस विशेष प्रमाणपत्र को आयात कर रहा हूं वह केवल एक सार्वजनिक कुंजी है और मैं इसका उपयोग बॉब को एसएसएल कनेक्शन पर सामान भेजने के लिए करना चाहता हूं (लेकिन शायद यह किसी अन्य प्रश्न के लिए सबसे अच्छा छोड़ दिया गया है!)।

किसी भी संकेतक या स्पष्टीकरण की सराहना की जाएगी। क्या आप जो कुछ भी आयात करते हैं और उसके सिर्फ एक सम्मेलन का कहना है कि एक कुंजीस्टोर है और दूसरा ट्रस्ट स्टोर है? SSL आदि का उपयोग करते समय रिश्ते क्या है?




सामान्य उपयोग / उद्देश्य या आम आदमी के तरीके में व्याख्या करने के लिए:

ट्रस्टस्टोर : जैसा कि नाम इंगित करता है, इसका सामान्य रूप से विश्वसनीय संस्थाओं के प्रमाणपत्रों को संग्रहीत करने के लिए उपयोग किया जाता है। एक प्रक्रिया उन सभी विश्वसनीय पार्टियों के प्रमाण पत्रों की एक दुकान को बनाए रख सकती है, जिन पर यह भरोसा करता है।

keyStore : हस्ताक्षरित प्रमाणपत्र के साथ सर्वर कुंजी (सार्वजनिक और निजी दोनों) को स्टोर करने के लिए प्रयुक्त होता है।

एसएसएल हैंडशेक के दौरान,

  1. क्लाइंट https: // तक पहुंचने का प्रयास करता है

  2. और इस प्रकार, सर्वर एक एसएसएल प्रमाणपत्र प्रदान करके प्रतिक्रिया देता है (जो इसके कीस्टोर में संग्रहीत है)

  3. अब, क्लाइंट को SSL प्रमाणपत्र प्राप्त होता है और इसे ट्रस्टस्टोर के माध्यम से सत्यापित करता है (यानी क्लाइंट के ट्रस्टस्टोर में पहले से ही प्रमाणपत्रों के प्री-डिफ़ाइंड सेट हैं जिन पर यह भरोसा करता है।)। इसकी तरह: क्या मैं इस सर्वर पर भरोसा कर सकता हूं? क्या यह वही सर्वर है जिसे मैं बात करने की कोशिश कर रहा हूं? कोई मध्य आदमी हमला नहीं करता है?

  4. एक बार, ग्राहक सत्यापित करता है कि यह उस सर्वर से बात कर रहा है जिस पर यह भरोसा करता है, फिर एसएसएल संचार एक साझा गुप्त कुंजी पर हो सकता है।

नोट: मैं सर्वर पक्ष पर क्लाइंट प्रमाणीकरण के बारे में कुछ भी नहीं बोल रहा हूं। यदि कोई सर्वर क्लाइंट प्रमाणीकरण भी करना चाहता है, तो सर्वर क्लाइंट को सत्यापित करने के लिए ट्रस्टस्टोर भी बनाए रखता है।




Related