कुछ हफ़्ते पहले मैं एक समस्या में भाग गया - टॉमकैट सर्वर (विंडोज़ 2008) पर है, यह मेरे द्वारा स्थापित नहीं किया गया था, इसके अलावा, मैंने यह भी नहीं देखा कि यह कैसे स्थापित किया गया था। एसएसएल प्रोटोकॉल के माध्यम से प्राधिकरण बनाना आवश्यक है। पहले, मैंने कभी भी विंडोज या निक पर एक वेब सर्वर स्थापित नहीं किया, लेकिन आपको इसे कम से कम संभव समय में हल करने की आवश्यकता है - 3 दिन। मैंने Google को यैंडेक्स के साथ पूछने का फैसला किया और एसएसएल चैनल एन्क्रिप्शन और "दो-चरण प्रमाणीकरण" के बारे में एक अस्पष्ट बनाने के लेखों का एक गुच्छा पाया। मुझे 3 दिनों के लिए सताया गया था और शब्द के अंत में मुझे एक निर्णय मिला (हमेशा की तरह, एक उज्ज्वल विचार एक महान हैंगओवर से आया था)। अब और विस्तार से:
मैं नहीं बताऊंगा कि टॉमकैट कैसे स्थापित किया जाए, क्योंकि इस तरह के लेख बड़े पैमाने पर हैं।
सबसे पहले, कुंजी के साथ एक कीस्टोर बनाएं:कमांड लाइन में निम्न कोड टाइप करें:
>keytool -genkey -alias tomcat -keyalg RSA -keystore mystore -validity 999 -keysize 512
यहां:
- टॉमकैट - उपनाम नाम
- कीगल - कुंजी पीढ़ी एल्गोरिथ्म
- कीस्टोर - भंडारण नाम
- वैधता - प्रमाणपत्र वैधता अवधि
- Keyize - कुंजी आकार
परिणामस्वरूप, आप कंसोल पर निम्न देखेंगे:
पासवर्ड दर्ज करें:
रहस्यआपका पहला और अंतिम नाम क्या है?
[अज्ञात]:
Firstname lastnameआपकी संगठनात्मक इकाई का नाम क्या है?
[अज्ञात]:
संगठनात्मकआपके संगठन का नाम क्या है?
[अज्ञात]:
संगठनआपके शहर या इलाके का नाम क्या है?
[अज्ञात]:
शहरआपके राज्य या प्रांत का नाम क्या है?
[अज्ञात]:
राज्यइस इकाई के लिए दो अक्षर वाला देश कोड क्या है?
[अज्ञात]:
आरयूक्या CN = Firstname अंतिम नाम, OU = संगठनात्मक, O = संगठन, L = शहर, ST = राज्य, C = आरयू सही है?
[नहीं]:
हाँ(RETURN यदि कीस्टोर पासवर्ड के समान है) के लिए कुंजी पासवर्ड दर्ज करें:
बोल्ड में हाइलाइट किया गया मैन्युअल रूप से दर्ज किया जाता है, अनुरोध लाइन द्वारा लाइन में दिखाई देते हैं।
कृपया ध्यान दें कि कुंजी के लिए कोई पासवर्ड दर्ज नहीं किया गया है (इस मामले में, भंडारण पासवर्ड का उपयोग किया जाता है)।
SSL कनेक्टर कॉन्फ़िगर करें (
server.xml टुकड़ा):
रिकॉर्ड का पता लगाएं
और इसे नीचे जोड़ें
<Connector port="8443" SSLEnabled="true" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="200" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="mystore" keystorePass="mystorepassword" keystoreType="JKS" keyAlias="tomcat"/>
लाइन ढूंढें:
<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
- डिफ़ॉल्ट रूप से, लाइन 27, यह टिप्पणी करें।
इसके अलावा, यदि आपके पास यह पंक्ति है:
<Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
हम इस पर टिप्पणी भी करते हैं।
अब हम
java फोल्डर से टमाटर की जड़ तक
मिस्ट्री फाइल
फेंकते हैं , यदि आप इसे रूट में नहीं फेंकते हैं, तो आपको लाइन बदलने की जरूरत है
keystoreFile="mystore"
पर
keystoreFile="/ /mystore"
पंक्ति
keystorePass="mystorepassword"
- "Wordorepassword", यह कुंजी के साथ रिपॉजिटरी बनाते समय निर्दिष्ट आपका पासवर्ड है।
हम टॉमकैट शुरू करते हैं, एसएसएल एन्क्रिप्शन पहले से ही काम कर रहा है।
"दो-चरण" एसएसएल - प्रमाण पत्र द्वारा साइट पर प्राधिकरणसत्यापन तंत्र बहुत सरल है: यह आवश्यक है कि सर्वर में एक कुंजी हो जिसका विषय प्रतिष्ठित नाम जारी किए जाने वाले कुंजी के जारी किए गए विशिष्ट नाम के साथ मेल खाएगा (इस मामले में, ग्राहक के पास ऐसी कुंजी नहीं है, क्योंकि आप संवाद मोड में विश्वास की पुष्टि कर सकते हैं)। किसी प्रमाणन केंद्र द्वारा जारी की गई कुंजियों का उपयोग करते समय, हमारे पास पहले से ही केंद्र की एक सार्वजनिक कुंजी है और इस केंद्र द्वारा हस्ताक्षर किए गए हमारे अपने हैं। स्व-हस्ताक्षरित कुंजी के मामले में (बिल्कुल इस तरह की कुंजी केटुल द्वारा बनाई गई है), यह आवश्यक है कि क्लाइंट द्वारा उपयोग की जाने वाली सार्वजनिक कुंजी सर्वर के ट्रस्टस्टोर में हो।
हमने ऊपर सर्वर कुंजी उत्पन्न की, अब हम क्लाइंट कुंजी बनाएंगे
कंसोल में निम्न कमांड टाइप करें
keytool -genkey -alias client -keyalg RSA -keystore myclientstore -storetype PKCS12 -validity 999 -keysize 512
कंसोल पर निम्न प्रकट होता है:
पासवर्ड दर्ज करें:
myclientstorepasswordआपका पहला और अंतिम नाम क्या है?
[अज्ञात]:
ग्राहकआपकी संगठनात्मक इकाई का नाम क्या है?
[अज्ञात]:
orgunitआपके संगठन का नाम क्या है?
[अज्ञात]:
orgआपके शहर या इलाके का नाम क्या है?
[अज्ञात]:
स्थानीयताआपके राज्य या प्रांत का नाम क्या है?
[अज्ञात]:
राज्यइस इकाई के लिए दो अक्षर वाला देश कोड क्या है?
[अज्ञात]:
आरयूक्या CN = ग्राहक, OU = orgunit, O = org, L = स्थानीयता, ST = राज्य, C = RU सही है?
[नहीं]:
हाँ(RETURN यदि कीस्टोर पासवर्ड के समान है) के लिए कुंजी पासवर्ड दर्ज करें:
सभी सर्वर कुंजी पीढ़ी के साथ सादृश्य द्वारा, केवल पैरामीटर दिखाई दिया
-storetype
। यह पैरामीटर हमारे ब्राउज़र द्वारा समर्थित भंडारण के प्रकार को इंगित करता है, यदि आपको नहीं पता कि आपके पास वास्तव में किस प्रकार का है, तो इसे न बदलें, यह सभी के लिए उपयुक्त है (इलेक्ट्रॉनिक्स द्वारा जाँच !!!)
-keystore
- यहां पहले से ही ग्राहक प्रमाणपत्रों का भंडार है।
अगला कदम सार्वजनिक कुंजी को सर्वर के विश्वसनीय स्टोर (ट्रस्टस्टोर) में रखना है। ऐसा करने के लिए, इसे परिणामस्वरूप स्टोर (myclientstore) से क्लाइंटटर्ट फ़ाइल में निर्यात करें:
कंसोल में निम्न कमांड दर्ज करें:
keytool -export -alias client -keyalg RSA -keystore myclientstore -storetype PKCS12 -file clientcert
जवाब में हम देखेंगे:
पासवर्ड दर्ज करें:
myclientstorepassword"क्लाइंटक्रर्ट" फ़ाइल में संग्रहीत प्रमाणपत्र
यहाँ प्रश्न "कीस्टोर पासवर्ड दर्ज करें:" एक नया पासवर्ड नहीं मांगता है, लेकिन "माइलस्टास्टिस्ट" बनाते समय हमने जो दर्ज किया है
यहां मुझे लगता है कि सब कुछ स्पष्ट है, क्योंकि सभी मापदंडों के ऊपर चर्चा की गई है। और परिणाम एक क्लाइंट फ़ाइल है।
हम परिणामस्वरूप फ़ाइल को सर्वर के लिए एक नए संग्रहण में आयात करते हैं (यह विश्वसनीय होगा):
कंसोल में कमांड दर्ज करते हैं
keytool -import -alias client -keyalg RSA -keystore mytruststore -storetype JKS -file clientcert
वे हमसे पूछेंगे
पासवर्ड दर्ज करें:
mytruststorepasswordअगर सही उत्तर दिया जाए, तो हम देखेंगे
स्वामी: CN = ग्राहक, OU = orgunit, O = org, L = स्थानीयता, ST = राज्य, C = RU
जारीकर्ता: CN = ग्राहक, OU = orgunit, O = org, L = स्थानीयता, ST = राज्य, C = RU
क्रमांक: 462a2361
मान्य से: Sat Apr 21 18:44:49 MSD 2007 तक: शुक्र जुलाई 20 18:44:49 MSD 2007
प्रमाण पत्र उंगलियों के निशान:
MD5: 78: 55: 83: 13: 3A: 4F: DB: CA: 1A: 60: 5E: A4: 87: 1D: EC: 93
SHA1: 7A: A7: 7C: C6: 71: 2B: 82: 74: 9C: 4F: C7: 3D: FA: 14: AD: 2A: E5: BF: 39: 2F
आखिरी सवाल
इस प्रमाणपत्र पर भरोसा करें? [नहीं]:
हाँऔर जवाब में
प्रमाणपत्र कीस्टोर में जोड़ा गया था
यहाँ प्रश्न "कीस्टोर पासवर्ड दर्ज करें:" एक नया पासवर्ड नहीं मांगता है, लेकिन हम जिसे "mytruststore" के गठन के दौरान दर्ज करते हैं
खैर, सभी प्रमाण पत्र उत्पन्न होते हैं और विश्वसनीय रिपोजिटरी में रखे जाते हैं।
अब हमें सर्वर को बताने की आवश्यकता है कि उनका उपयोग करने की आवश्यकता है, हम सर्वर कॉन्फ़िगरेशन को पूरक करते हैं। अब SSL कनेक्टर का कॉन्फ़िगरेशन इस तरह दिखता है:
<Connector port="8443" SSLEnabled="true" maxHttpHeaderSize="8192" maxThreads="150" minSpareThreads="25" maxSpareThreads="200" enableLookups="false" disableUploadTimeout="true" acceptCount="100" scheme="https" secure="true" clientAuth="true" sslProtocol="TLS" keystoreFile="mystore" keystorePass="123456" keystoreType="JKS" keyAlias="tomcat" truststoreFile="mytruststore" truststorePass="123456" truststoreType="JKS"/>
मायट्रस्टस्टोर, मिस्ट्रोर के रास्ते, जैसा कि पहले ही कहा गया था, बदला जा सकता है, एक ही समय में पासवर्ड मान बदलना न भूलें :-)
यदि आपको किसी तृतीय-पक्ष प्रमाणपत्र को विश्वसनीय स्टोर में जोड़ने की आवश्यकता है, तो निम्न कोड का उपयोग करें:
keytool -import -mytruststore -keystore mystore -alias tomcat -file clientcert
यदि आपको विश्वसनीय स्टोर में प्रमाण पत्र को हटाने की आवश्यकता है, तो निम्न कोड का उपयोग करें:
keytool -delete -mytruststore -keystore mystore -alias tomcat -file clientcert
यदि आपने उन्हें बदल दिया है तो फाइल्स mytruststore और मिस्टोर को टमाटर के रूट या कनेक्टर पैरामीटर (keystoreFile और TruststoreFile) में निर्दिष्ट फ़ोल्डर में कॉपी करें।
हम myclientstore को उपयोग किए गए ब्राउज़र में प्रमाणपत्रों में आयात करते हैं। यानी उदाहरण के लिए, IE:
उपकरण-> इंटरनेट विकल्प-> सामग्री-> प्रमाण पत्र-> आयात-> अगला-> ब्राउज़-> सभी फाइलें-> प्रकट के साथ फ़ोल्डर ढूंढें (डिफ़ॉल्ट रूप से नई उत्पन्न फाइलें वहां सहेजी जाती हैं), हमारे myclientstore का चयन करें, -> अगला>> दर्ज करें वह पासवर्ड जो हम myclientstore बनाते समय सेट करते हैं और वह यह है!
हम सर्वर को पुनरारंभ करते हैं।
अब यदि आप https: // localhost: 8443 टाइप करते हैं, तो सर्वर को एक प्रमाणपत्र की आवश्यकता होगी, लेकिन यदि आप टाइप करते हैं
http: // localhost: 8080 एक ही पेज पहले मामले में खुल जाएगा, लेकिन बिना किसी सुरक्षा के।
Web.xml में http से https तक सभी अनुरोधों को पुनर्निर्देशित करने के लिए
, जोड़ें
वेब-ऐप बंद करने से पहले:
<security-constraint> <web-resource-collection> <web-resource-name>Protected Context</web-resource-name> <url-pattern>/*</url-pattern> </web-resource-collection> <!— --> <user-data-constraint> <transport-guarantee>CONFIDENTIAL</transport-guarantee> </user-data-constraint> </security-constraint>
हम सर्वर को पुनः आरंभ करते हैं, वॉयला - सब कुछ काम करता है!
मुझे उम्मीद है कि यह लेख बाकी की तुलना में अधिक समझने योग्य होगा, क्योंकि यहाँ मैंने इंटरनेट पर पाए जाने वाले ज्ञान के सभी अनाज और एसएसबी और टॉमकैट के साथ कड़ी मेहनत के प्यार के समय प्राप्त अनुभव को एकत्र किया।