2009-10-12 24 views
6

का उपयोग कर टोमकैट क्लाइंट प्रमाणीकरण मैं नुकसान में हूं, क्योंकि मैं टॉमकैट व्यक्ति नहीं हूं। मुझे किसी तृतीय पक्ष की वेब सेवा का उपयोग करने की आवश्यकता है और उन्हें एसएसएल के माध्यम से क्लाइंट प्रमाणीकरण की आवश्यकता है, इसलिए उन्होंने मुझे एक SSL प्रमाणपत्र जेनरेट किया और जारी किया। दुर्भाग्यवश यह तब तक है जब तक वे इसका समर्थन करते हैं और मुझे का उपयोग करने के तरीके पर कोई निर्देश नहीं दे सकते हैं। मैं इस तीसरे पक्ष का उपयोग कर फंस गया हूं इसलिए दुर्भाग्यवश मुझे समर्थन की कमी के साथ रखना होगा।एसएसएल

तो मेरे पास एक जावा एप्लिकेशन है जो एक विक्रेता हमारे लिए आपूर्ति कर रहा है (जो स्पष्ट रूप से इस से निपटने के लिए कभी नहीं था), एक टॉमकैट ऐप सर्वर CentOS 5.3 पर 6.0.20 चल रहा है, और तीसरे से SSL प्रमाणपत्र पार्टी।

मुझे इस बिंदु पर क्या करने की ज़रूरत है? मैं ऑनलाइन खोज सकता हूं कि एक कीस्टोर कैसे सेट अप करें ताकि मेरा ऐप क्लाइंट प्रमाणीकरण का उपयोग उन चीज़ों के खिलाफ कर सकता है, जब इसे किसी अन्य से कनेक्ट करने की आवश्यकता न हो, या पोर्ट 8443 पर एसएसएल का उपयोग कैसे करें (जो मुझे पता है पहले से ही कैसे करें और स्थापित करें)।

+0

मैं आपके द्वारा प्रदान की गई जानकारी के आधार पर वेब सेवा प्रदाता से सहमत हूं। उन्होंने एक मानक, व्यापक रूप से समर्थित प्रमाणीकरण तंत्र का उपयोग करना चुना है। उनके पास कोई व्यवसाय नहीं है (जब तक कि आप उन्हें परामर्श करने के लिए भुगतान नहीं कर रहे हों) आपको बताएंगे कि उनके द्वारा निर्दिष्ट इंटरफ़ेस को कैसे कार्यान्वित किया जाए। सौभाग्य से, चूंकि उन्होंने व्यापक रूप से उपयोग किए जाने वाले मानक का चयन किया है, इसलिए आपके पास कई संसाधन हैं जिनके लिए आप बदल सकते हैं (उनमें से कई जैसे स्टैक ओवरफ्लो-मुक्त हैं), और ऐसी तकनीक सीखें जो आपको अन्य संदर्भों में लाभ पहुंचा सकती है। – erickson

+0

उनके साथ मेरी पकड़ सिर्फ एक ही समस्या से गहरी है। हम न केवल सेवा * तक पहुंच प्राप्त करते हैं, बल्कि हमें प्रति लेनदेन का भुगतान करना पड़ता है, इसलिए मुझे कम से कम थोड़ी मदद की उम्मीद है (कुछ अस्पष्ट पीडीएफ फाइलों के अलावा उनमें से लगभग कोई तकनीकी विवरण नहीं है) । मेरे सभी अन्य तृतीय पक्ष सेवा प्रदाता कम से कम मुझे कोड उदाहरण देते हैं या जब मेरे कोई प्रश्न हैं तो मुझे सही दिशा में इंगित कर सकते हैं। – dragonmantank

उत्तर

3

यहाँ वास्तव में लंबे समय से इस सवाल का जवाब है: http://java.sun.com/javase/6/docs/technotes/guides/security/jsse/JSSERefGuide.html

इसके लिए मेरे शब्द नहीं लेते हैं, लेकिन मुझे विश्वास है कि एक ग्राहक के रूप में, ग्राहक प्रमाणन स्वचालित रूप से जब सर्वर यह अनुरोध करता है प्रदर्शन किया जाएगा।

तो बिल्ला को विन्यस्त सवाल यह है कि, आप पढ़ सकते हैं http://tomcat.apache.org/tomcat-6.0-doc/ssl-howto.html है? विशेष रूप से, कनेक्टर तत्व के क्लाइंटऑथ विशेषता को नोट करें।

+0

तो मुझे बस इतना करना है कि एक कीस्टोर उत्पन्न करें (मुझे लगता है कि पोर्ट विशेषता का उपयोग किए बिना) और जब मेरा ऐप तीसरी पार्टी (एसओएपी के माध्यम से) तक पहुंचता है, तो यह एसएसएल प्रमाणीकरण के लिए अनुरोध उठाएगा और क्लाइंट के साथ भेज देगा एसएसएल मेरे पास है? – dragonmantank

+0

यदि उन्होंने आपको एक प्रमाणपत्र दिया है जिसे आपसे कनेक्ट करने के लिए उपयोग करना है, तो उन्हें आपको एक निजी कुंजी भी देनी चाहिए। आम तौर पर, आप दोनों को उत्पन्न करेंगे, निजी कुंजी रखें और उन्हें अपने सर्वर पर रखने के लिए प्रमाणपत्र की एक प्रति भेजें। लेकिन हाँ, उस कुंजीपटल में उस निजी कुंजी और प्रमाण पत्र को प्राप्त करें, अपने सर्वर के लिए प्रमाण पत्र प्राप्त करें और एसएसएल सॉकेट उत्पन्न करने के लिए उन्हें SSLContext में रखें। –

1

मैं नहीं जानता कि इस बिलाव कॉन्फ़िगर करने के बारे में है, के अलावा अन्य बिलाव में चल रहे एक वेब अनुप्रयोग के लिए सिस्टम गुण में पारित करने के लिए सक्षम होने के लिए।

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

उदाहरण के लिए, वे अपने आवेदन को कस्टम कनेक्शन के लिए कस्टम KeyManager लागू कर सकते हैं जो कॉन्फ़िगर करने योग्य स्थान से क्लाइंट प्रमाणपत्र और निजी कुंजी को देखने में सक्षम है।

यदि उन्होंने ऐसा नहीं किया है, तो वे शायद डिफ़ॉल्ट SunX509 KeyManager का उपयोग कर रहे हैं।

डिफ़ॉल्ट कीमैनगर के लिए, आप क्लाइंट सर्टिफिकेट और प्रमाण पत्र का निजी कुंजी युक्त कुंजीस्टोर बनाने के लिए स्पष्ट रूप से कीटोल का उपयोग कर सकते हैं। तो फिर तुम निम्न सिस्टम पैरामीटर का उपयोग कर कि कुंजी संग्रह निर्दिष्ट कर सकते हैं:

-Djavax.net.ssl.keyStore="/path/to/keystore" 
-Djavax.net.ssl.keyStorePassword="<password>" 

आप बिलाव कॉन्फ़िगर करने के लिए इन गुणों में पारित करने के लिए की आवश्यकता होगी।

2

अद्यतन:

बिलाव में क्लाइंट प्रमाणीकरण सक्षम करने के लिए जिस तरह से पालन करें।

क्लाइंट प्रमाणीकरण के फायदे लेने के लिए, हमें तीन प्रमाणपत्रों की आवश्यकता होती है। i.e टॉमकैट के लिए एक सर्वर सर्टिफिकेट, ब्राउज़र के लिए क्लाइंट सर्टिफिकेट और सीए का प्रमाणपत्र जो उपरोक्त उल्लिखित प्रमाणपत्रों पर हस्ताक्षर करेगा। यहां, मैं दिखाऊंगा कि विंडोज़ में इसे कैसे किया जाए।

दो तरीके हैं।

1) आपके पास एक सीएसआर फ़ाइल यानी एक प्रमाणपत्र हस्ताक्षर अनुरोध होना चाहिए।आप इसे प्रमाणपत्र प्राधिकरण में Verisign या Comodo या उनके जैसे कई अन्य सबमिट कर सकते हैं। वे आपको प्रमाणपत्र प्रदान करेंगे। या

2) आप अपनी खुद की प्रमाणपत्र प्राधिकरण बना सकते हैं और प्रमाणपत्रों पर हस्ताक्षर कर सकते हैं। लेकिन यह केवल व्यक्तिगत उपयोग के लिए ऐसा करने की सिफारिश की जाती है।

आपके पास निम्न चरणों को करने के लिए जावा और ओपनएसएसएल स्थापित होना चाहिए।

प्रमाणपत्र हस्ताक्षर अनुरोध उत्पन्न करने के लिए, आपके पास कुंजी होना चाहिए। मुख्य प्रकार उत्पन्न करने के लिए सीएमडी में निम्न आदेश टाइप करें।

openssl genrsa आउट Serverkey.key 1024

यह एक फ़ाइल "Serverkey.key" उत्पन्न होगा। मुख्य आकार 1024 है। आप इसे अपनी आवश्यकता के अनुसार दे सकते हैं।

अब निम्न आदेश की सहायता से सीएसआर फ़ाइल जेनरेट करें।

openssl अनुरोध -नया -कुंजी Serverkey.key आउट ServerReq.csr -config /path/to/openssl.cnf

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

openssl X509 -req -days 365 -इन CAReq.csr -signkey CAKey.key आउट CA.crt

एक बार जब आप CA प्रमाणपत्र है, तो आप अन्य प्रमाणपत्र पर हस्ताक्षर करने के लिए इसका इस्तेमाल कर सकते हैं।

openssl X509 -req -days 365 -CA CA.crt -CAkey CAKey.key -CAcreateserial -इन ServerReq.csr आउट server.crt

आप क्लाइंट प्रमाणपत्र के लिए एक ही आदेश का उपयोग कर सकते हैं भी।

हमारे क्लाइंट जो ब्राउज़र यहां है, वह पी 12 प्रारूप प्रमाण पत्र स्वीकार करेगा। पी 12 प्रारूप एक फ़ाइल है जिसमें आपका प्रमाण पत्र और कुंजी भी शामिल है।

सीआरटी को पी 12 में कनवर्ट करने के लिए निम्न आदेश का उपयोग करें।

openssl PKCS12 निर्यात -इन server.crt -inkey ServerKey.key -chain -CAfile CA.crt आउट ServerCert.p12

बिल्ला में, वहाँ एक truststore है जो होगा सीए के प्रमाणपत्र और दूसरा एक कीस्टोर है जिसमें सर्वर की कुंजी और प्रमाणपत्र (पी 12 फाइल) होगी।

ट्रस्टस्टोर में सीए के प्रमाण पत्र को आयात करने के लिए निम्न आदेश का उपयोग करें।

keytool -import -alias CertAuth -keystore caCerts।jks -file CA.crt

आप जो कुछ भी चाहते हैं उसे उपनाम दे सकते हैं। ऊपर दिए गए आदेश को निष्पादित करने के बाद पूछे जाने वाले पासवर्ड को नोट करें। हम server.xml फ़ाइल में उस पासवर्ड का उपयोग करेंगे। नीचे दिए गए आदेश के लिए भी लागू होता है।

कुंजीस्टोर में पी 12 प्रारूप प्रमाण पत्र आयात करने के लिए निम्न आदेश का उपयोग करें।

Keytool -importkeystore -destkeystore tomcat.keystore -srckeystore -ServerCert.p12 -srcstoretype PKCS12 -alias 1

अब, निम्नलिखित के रूप में बिल्ला के server.xml बदल जाते हैं।

<Connector port="8443" 
      protocol="org.apache.coyote.http11.Http11NioProtocol" 
      SSLEnabled="true" scheme="https" secure="true" 
      truststoreFile="path/to/truststorefile" truststorePass="password" 
      keystoreFile="path/to/keystorefile" keystorePass="password" 
      clientAuth="true" sslProtocol="TLS" 
      /> 

अब, ब्राउज़र के क्लाइंट के पी 12 प्रारूप प्रमाण पत्र को आयात करें। फिर, टॉमकैट सर्वर शुरू करें और https://localhost:8443 तक पहुंचने का प्रयास करें। आप इस उत्तर के विस्तृत संस्करण के लिए blog पर जा सकते हैं। उम्मीद है की यह मदद करेगा।