मैं tomcat6/7 से कनेक्ट करने वाले उपयोगकर्ताओं को प्रमाणित करने के लिए SSL क्लाइंट प्रमाणपत्र का उपयोग करना चाहता हूं। मुझे टॉमकैट सही तरीके से कॉन्फ़िगर किया गया है, और मैं टॉमकैट को दिए गए ट्रस्टस्टोर में प्रमाण पत्र के साथ हस्ताक्षर करता हूं, आईई और फ़ायरफ़ॉक्स दोनों से सफलतापूर्वक प्रमाणीकरण कर रहा हूं।श्रृंखलाबद्ध ग्राहक प्रमाण पत्र
मैं क्लाइंट प्रमाण पत्र भी लेना चाहता हूं, क्योंकि मैं ग्राहकों को अपने स्वयं के उपयोगकर्ताओं को प्रबंधित करने की क्षमता देना चाहता हूं। मैं एक ग्राहक को एक itermediate प्रबंधन सीए प्रमाण पत्र जारी करके इसे पूरा कर सकता हूं कि वे अतिरिक्त उपयोगकर्ता कर्ट पर हस्ताक्षर करने के लिए उपयोग करेंगे। प्रमाणीकरण के लिए मुझे प्रबंधन सीए (मेरे रूट प्रमाणपत्र द्वारा हस्ताक्षरित) के साथ जंजीर उपयोगकर्ता प्रमाण पत्र भेजने के लिए उपयोगकर्ता के ब्राउज़र की आवश्यकता होगी।
मैं openssl उपयोग कर रहा हूँ, और मैं एक रूट सीए और कोई इंटरमीडिएट CA बनाया है, और मैं एक पत्ता प्रमाण पत्र पर हस्ताक्षर करने के इंटरमीडिएट CA इस्तेमाल किया है। मैंने सभी तीन प्रमाणपत्रों को pkcs12 और पेम में परिवर्तित कर दिया है, और रॉम प्रमाणपत्र को टॉमकैट के लिए ट्रस्टस्टोर में आयात करने के लिए keytool का उपयोग किया है। openssl -verify मध्यवर्ती प्रमाणपत्र (और मध्यवर्ती रूट के खिलाफ सत्यापित) के खिलाफ पत्ता pkcs12 सत्यापित करेगा। लेकिन मुझे मूल प्रमाणपत्र (pkcs12) के खिलाफ सत्यापित करने के लिए पत्ता प्रमाणपत्र (pkcs12) नहीं मिल सकता है। मैं या तो आईई या फ़ायरफ़ॉक्स को पत्ता प्रमाण पत्र का उपयोग करके प्रमाणित करने के लिए नहीं मिल सकता। आईई मुझे प्रमाण पत्र के लिए संकेत देगा, लेकिन प्रमाणित करने में विफल रहता है (टोमकैट के लॉग में कनेक्शन या विफलता का कोई उल्लेख नहीं है)। फ़ायरफ़ॉक्स पत्ती प्रमाण पत्र के लिए संकेत नहीं देता है; यह बस प्रमाणित करने में विफल रहता है।
root.bat:
set name=Root
set keyPassword=dummypassword
set trustPassword=dummypassword
openssl genrsa -des3 -passout pass:%keyPassword% -out %name%.key 4096
openssl req -new -key %name%.key -passin pass:%keyPassword% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -signkey %name%.key -passin pass:%keyPassword% -extfile GenerateCertificate.cfg -extensions v3_ca -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%keyPassword% -passout pass:%keyPassword% -out %name%.pkcs12
keytool -noprompt -import -file %name%.crt -alias %name% -keystore %name%.truststore -deststorepass %trustPassword%
keytool -list -v -keystore %name%.truststore -storepass %trustPassword% > %name%.truststore.dump.txt
keytool -exportcert -alias %name% -keystore %name%.truststore -storetype jks -storepass %trustPassword% -rfc -file %name%.truststore.pem
openssl pkcs12 -in %name%.pkcs12 -out %name%.pem -nodes -passin pass:%keyPassword%
openssl verify -CAfile ..\root\Root.pem Leaf.pem
यहाँ स्क्रिप्ट मैं तीन प्रमाण पत्र उत्पन्न करने के लिए उपयोग कर रहा हूँ कर रहे हैं:
यहाँ कैसे मैं openssl का उपयोग कर जड़ के खिलाफ पत्ता सत्यापित करने का प्रयास है
intermediate.bat:
set name=Intermediate
set password=dummypassword
set caDir=../root
set caName=Root
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -extfile GenerateCertificate.cfg -extensions v3_ca -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.crt -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12 -out %name%.pem -nodes -passin pass:%password%
पत्ती .bat:
set name=Leaf
set password=dummypassword
set caDir=../intermediate
set caName=Intermediate
set caPassword=dummypassword
openssl genrsa -des3 -passout pass:%password% -out %name%.key 2048
openssl req -new -key %name%.key -passin pass:%password% -out %name%.csr -subj "/C=US/ST=Chaos/L=TimeNSpace/O=None/CN=%name%"
openssl x509 -req -days 3650 -in %name%.csr -CA %caDir%/%caName%.crt -CAkey %caDir%/%caName%.key -passin pass:%caPassword% -set_serial 1 -out %name%.crt
openssl pkcs12 -export -in %name%.crt -inkey %name%.key -passin pass:%password% -passout pass:%password% -chain -CAfile %caDir%/%caName%.pem -out %name%.pkcs12
openssl pkcs12 -in %name%.pkcs12 -out %name%.pem -nodes -passin pass:%password%
GenerateCertificate.cfg:
[ v3_ca ]
subjectKeyIdentifier=hash
authorityKeyIdentifier=keyid:always,issuer
basicConstraints = CA:true,pathlen:3