2012-05-07 17 views
14

को अनदेखा करता है मैं एसएसएल पर एलडीएपी सर्वर से कनेक्ट करने के लिए टॉमकैट 6 के शीर्ष पर चलने वाला एप्लिकेशन प्राप्त करने का प्रयास कर रहा हूं।जावा कीस्टोर में आयातित प्रमाणपत्र, JVM नए प्रमाणपत्र

मैं का उपयोग कर KeyStore करने के लिए सर्वर का प्रमाणपत्र आयातित:

C:\Program Files\Java\jdk1.6.0_32\jre\lib\security>keytool -importcert -trustcacerts -file mycert -alias ca_alias -keystore "c:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts" 

जब मैं बिलाव शुरू एसएसएल डिबगिंग के साथ चालू, लॉग बिलाव सही प्रमाणपत्र फ़ाइल उपयोग कर रहा है के अनुसार:

trustStore is: C:\Program Files\Java\jdk1.6.0_32\jre\lib\security\cacerts 

हालांकि , टोमकैट मैंने जो प्रमाणपत्र आयात किया है, वह नहीं जोड़ता है - कैकर्ट फ़ाइल में अन्य सभी कर्ट लॉग पर मुद्रित होते हैं - और कनेक्शन विफल रहता है:

handling exception: 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 

टॉमकैट को पुनरारंभ करने से मदद नहीं मिलती है। मैंने keytool -list कमांड के साथ सत्यापित किया है कि नया प्रमाणपत्र वास्तव में फ़ाइल पर मौजूद है।

क्यों टोमकैट मेरे नए प्रमाण को अनदेखा कर रहा है?

संपादित करें:

लगता है कि इस मुद्दे को विंडोज 7 VirtualStore संपन्न हुई थी। कीटोल ने कैकरर्ट फ़ाइल की एक नई प्रति बनाई, और टोमकैट ने मूल फ़ाइल का उपयोग किया।

+0

क्या फ़ाइल 'mycert' में संपूर्ण प्रमाणपत्र श्रृंखला है? जावा स्टोर में पूरा ट्रस्ट पथ होना चाहता है। – Romain

+0

बस एक साधारण सुझाव, अपने 'सी: \ उपयोगकर्ता \ YourAccountName' पर जाएं, फ़ाइल नाम' .keystore' वहां होगा, इसे खोलें और उस से अपना पिछला एक हटा दें, और उसके बाद आपने जो किया वह करें।उम्मीद है कि चीजों को आपके लिए हल कर देगा :-) –

+1

@ रोमेन नहीं, एक विश्वसनीय प्रमाणपत्र के पास श्रृंखला के साथ कुछ लेना देना नहीं है। एक विश्वसनीय प्रमाण पत्र के रूप में आयात किया गया कोई प्रमाणपत्र एक विश्वसनीय रूट प्रमाणपत्र की तरह माना जाता है। – emboss

उत्तर

4

यह देखने के लिए जांचें कि क्या सीएन जानकारी के साथ एक कुंजी है लेकिन एक अलग उपनाम है।

जब मैंने प्रमाण पत्र का एक नया संस्करण आयात करने का प्रयास किया था, तो मुझे पहले की समस्याएं थीं लेकिन कुंजीस्टोर में पुराना संस्करण छोड़ दिया था। मेरे जावा प्रोग्रामों को केवल कीस्टोर में पहली मिलान वाली सीएन कुंजी मिल जाएगी (जो पुराना समय समाप्त हो गया था) और इसका उपयोग करने का प्रयास करें, भले ही एक नया व्यक्ति जो सीएन से मेल खाता हो।

यह भी सुनिश्चित करें कि प्रमाणीकरण रूट प्रमाणपत्र (और लागू होने पर इंटरमीडिएट प्रमाण पत्र) कीस्टोर में मौजूद है। यदि आप Verisign या Globalsign जैसे प्रमुख सुरक्षा प्रदाताओं में से एक के खिलाफ प्रमाणीकरण कर रहे हैं, तो वे आम तौर पर आपको रूट और इंटरमीडिएट प्रमाणपत्र प्रदान करेंगे। यदि ये प्रमाण पत्र पहले से ही कीस्टोर में मौजूद हैं, तो सुनिश्चित करें कि वे अभी भी वैधता में हैं। आपको अपने व्यक्तिगत प्रमाणपत्र से सभी प्रमाण पत्र रूट पर प्रमाणीकरण श्रृंखला के नीचे सभी तरह से जरूरी है, जो आपके कीस्टोर में मौजूद है, ताकि यह समझ सके कि आपके क्रेडेंशियल को कैसे सत्यापित किया जाए।

+0

यह समस्या नहीं प्रतीत होती है, लेकिन सुझाव – tputkonen

+0

के लिए धन्यवाद मैंने अपना जवाब संपादित कर दिया है। क्या आपने जांच की है कि आपके प्रमाणन प्राधिकरण के लिए रूट प्रमाणपत्र कुंजीस्टोर में मौजूद है? – wattostudios

+1

आपको पहले से ही ट्रस्ट स्टोर में मौजूद प्रमाणपत्रों को जोड़ने की आवश्यकता नहीं है। स्टोर में कोई प्रमाण पत्र बिना किसी सत्यापन के विश्वसनीय है। लेकिन उपनाम के साथ अच्छी सलाह! – emboss

0

आपने जो वर्णन किया है वह वही है जो मुझे cmd.exe का उपयोग करते समय प्राप्त हो रहा है और एक नियमित उपयोगकर्ता हालांकि Windows सर्वर पर व्यवस्थापकीय समूह का सदस्य है। आपको cacerts फ़ाइलों में परिवर्तन लागू करने के लिए प्रशासन मोड में cmd.exe प्रारंभ करना होगा। कम से कम Win2k8 ओएस पर।

यदि आप ऐसा नहीं करते हैं तो यह कैरेट आपको keytool.exe -list में दिखाएगा नए जोड़े गए कॉर्ट देखें लेकिन टॉमकैट उन्हें नहीं देख पाएगा। यकीन नहीं क्यों। लेकिन जब आप इसे cmd.exe के साथ जोड़ते हैं तो व्यवस्थापक टॉमकैट नए जोड़े गए कर्ट के साथ ठीक है।

आप यह देखने के लिए Djavax.net.debug="ssl,handshake" का उपयोग भी कर सकते हैं कि टॉमकैट कैकर्ट फ़ाइल से क्या पढ़ता है।

14

कीस्टोर को कर्ट आयात करने के बाद JVM को पुनरारंभ करने की आवश्यकता है।

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