2017-05-03 11 views
6

पर आधारित प्रमाणपत्र स्वीकार करें मैं वसंत सुरक्षा का उपयोग authenticate using an x.509 certificate पर कर रहा हूं, और यह तब काम करता है जब ब्राउज़र कुंजी-स्टोर में कॉन्फ़िगर किया गया क्लाइंट प्रमाणपत्र सर्वर ट्रस्ट-स्टोर में मौजूद होता है ।स्प्रिंग सुरक्षा x.50 9 प्रमाणीकरण - उनके जारीकर्ता प्रमाणपत्र प्राधिकरण

कैसे यह वर्तमान में काम कर रहा है:

  • मैं वैकल्पिक के रूप में SSL क्लाइंट प्रमाणीकरण कॉन्फ़िगर किया है (server.ssl.client लेखन = चाहते हैं, this post में) की तरह
  • मैं एक सर्वर कॉन्फ़िगर किया है ट्रस्ट-स्टोर जिसमें सभी क्लाइंट प्रमाणपत्र शामिल हैं। यदि ग्राहक द्वारा प्रस्तुत प्रमाण पत्र ट्रस्ट-स्टोर में है, तो आपसी एसएसएल कनेक्शन बनाया गया है।
  • जब मेरे पास सर्वर-साइड ट्रस्ट-स्टोर में मौजूद क्लाइंट प्रमाणपत्र हैं, फ़ायरफ़ॉक्स मेरे क्लाइंट-साइड सर्टिफिकेट के साथ एक पॉपअप खोलता है, जिसे मैं चुन सकता हूं और आपसी एसएसएल कनेक्शन स्थापित हो सकता है।
  • मैंने क्लाइंट प्रमाण पत्र के विषय डीएन से उपयोगकर्ता नाम निकालने के लिए वसंत सुरक्षा कॉन्फ़िगर की है और इसे UserDetailsService के विरुद्ध जांचें। एक UserDetails उद्देश्य यह है कि उपयोगकर्ता नाम लौटाया जाता है, प्रमाणीकरण प्रक्रिया को सफलतापूर्वक पूरा

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

मुझे क्या करना चाहते हैं: जब ग्राहक एक प्रमाण पत्र सर्वर में मूल CA द्वारा जारी किए गए प्रस्तुत सर्वर विश्वास की दुकान एक रूट प्रमाणपत्र प्राधिकरण

  • का ही प्रमाण पत्र में

    • दुकान आपसी SSL कनेक्शन की अनुमति देने के ट्रस्ट-स्टोर (भले ही क्लाइंट सर्टिफिकेट सर्वर ट्रस्ट-स्टोर में मौजूद न हो)

    मैं इंटरनेट पर दो संसाधनों से भी चिंतित हूं। Baeldung पर this tutorial में, यह कहता है कि सभी क्लाइंट प्रमाणपत्रों को X.509 ऑथ के लिए सर्वर ट्रस्ट-स्टोर में संग्रहीत किया जाना चाहिए (जो मेरे अनुभव की पुष्टि करता है)।

    आपको याद रखना चाहिए कि सर्वर द्वारा सत्यापित किए जाने वाले प्रत्येक उपयोगकर्ता के लिए, कॉन्फ़िगर किए गए ट्रस्टस्टोर में इसके प्रमाणपत्र को स्थापित करने की आवश्यकता है। केवल कुछ ग्राहकों के साथ छोटे अनुप्रयोगों के लिए, यह शायद व्यावहारिक हो सकता है, ग्राहकों की बढ़ती संख्या के साथ यह उपयोगकर्ताओं के लिए जटिल कुंजी प्रबंधन का कारण बन सकता है।

    हालांकि, this tutorial @robinhowlett द्वारा कहा गया है कि

    क्लाइंट सर्वर को अपने कीस्ट्रोक में अपनी प्रमाण पत्र पेश करेंगे, और सर्वर सर्वर के truststore में CA प्रमाणपत्र का उपयोग कर क्लाइंट प्रमाणपत्र की श्रृंखला को मान्य होगा ।

    यह मूल रूप से मैं प्राप्त करना चाहता हूं, लेकिन मैं सक्षम नहीं हूं।

    निष्कर्ष: किसी किसी एक या सर्वर विश्वास-स्टोर में अधिक रूट CA प्रमाणपत्र की दुकान और इन रूट सीए द्वारा जारी किए गए स्प्रिंग सुरक्षा में 509 आपसी एसएसएल हाथ मिलाना के माध्यम से प्रमाणित करने के लिए क्लाइंट प्रमाण पत्र का उपयोग करने के प्रबंधन कैसे किया?

    मैं वसंत बूट 1.5.2.RELEASE (वसंत-सुरक्षा-वेब 4.2.2.RELEASE) का उपयोग कर रहा हूं। मैंने फ़ायरफ़ॉक्स 53 के साथ अपने काम कर रहे एसएसएल प्रमाणीकरण का परीक्षण किया है।

  • +1

    @dur - धन्यवाद, मुझे डीबग सक्षम करने के लिए मार्गदर्शिका मिली है और उपरोक्त टिप्पणी में वर्णित अजीबता को डीबग करने का प्रयास करेगा और वापस आ जाएगा http://docs.oracle.com/javase/7/docs/technotes/guides/ सुरक्षा/जेएसई/ReadDebug.html –

    +1

    समस्या मिली - ट्रस्ट-स्टोर केवल जेवीएम शुरू होने पर ही पढ़ा जाता है। मैं ट्रस्ट-स्टोर को संशोधित कर रहा था जब सर्वर पहले से ही ऊपर था और पुराना संस्करण स्मृति में था। सर्वर को रिबूट करना ठीक काम करता है। विवरण https://serverfault.com/questions/328533/can-tomcat-reload-its-ssl-certificate-without-being-restarted –

    उत्तर

    0

    मुझे मेरी समस्या मिली - मैं ट्रस्ट-स्टोर को संशोधित कर रहा था (क्लाइंट प्रमाण को हटा रहा था और केवल सीए प्रमाण छोड़ रहा था) सर्वर चालू होने पर (टॉमकैट, मेरे मामले में)। लेकिन ट्रस्ट-स्टोर को स्मृति में रखा जाता है और केवल एक बार पढ़ा जाता है, जब JVM प्रारंभ होता है (विवरण on this ServerFault post)। इसलिए टॉमकैट द्वारा रनटाइम के दौरान ट्रस्ट-स्टोर परिवर्तन नहीं पढ़े जा रहे हैं।

    तो उत्तर सरल है: हाँ, अगर ट्रस्ट-स्टोर में केवल सीए केर्ट मौजूद हैं, एसएसएल हैंडशेक के दौरान सर्वर ब्राउज़र से संचार करता है तो वह विश्वसनीय सीए द्वारा जारी क्लाइंट प्रमाण पत्र चाहता है और फिर ब्राउज़र उपयोगकर्ता को संकेत देता है किसी विश्वसनीय CA द्वारा जारी किए गए प्रमाणपत्र का चयन करने के लिए (यदि ऐसा प्रमाणपत्र ब्राउज़र कीस्टोर में मौजूद है)।

    हालांकि, सर्वर चालू होने और चलने पर सर्वर को ट्रस्ट-स्टोर में गतिशील रूप से जोड़ा गया है, तो यह पता नहीं लगाया जाएगा। सर्वर को रीबूट करने के बाद नया सीए केवल पहचाना जाएगा (और जेवीएम फिर से शुरू किया गया है)।

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