Ssl क्लाइंट सर्टिफिकेट जेनरेट करने के लिए Opensl CA को ठीक से सेटअप कैसे करें


9

मैं अपना पहला CA कॉन्फ़िगर कर रहा हूं इसका उद्देश्य हमारे ग्राहकों के लिए प्रमाण पत्र जारी करना होगा, जो उन्हें https पर हमारी EDI सेवा का उपयोग करने के लिए उपयोग करेंगे। इसलिए मुझे ssl क्लाइंट सर्टिफिकेट जेनरेट करना होगा। प्रमाण पत्र पर हस्ताक्षर करने की पूरी प्रक्रिया अब तक काम करती है, और हमारी सेवा तक पहुंचने के लिए प्रमाण पत्र का सफलतापूर्वक उपयोग किया जा सकता है, लेकिन मुझे एक बात की चिंता है:

जेनरेट किए गए प्रमाणपत्र उद्देश्य सामान्य तरीके हैं:

$ openssl x509 -purpose  -noout -in client.crt.pem
Certificate purposes:
SSL client : Yes
SSL client CA : No
SSL server : Yes
SSL server CA : No
Netscape SSL server : Yes
Netscape SSL server CA : No
S/MIME signing : Yes
S/MIME signing CA : No
S/MIME encryption : Yes
S/MIME encryption CA : No
CRL signing : Yes
CRL signing CA : No
Any Purpose : Yes
Any Purpose CA : Yes
OCSP helper : Yes
OCSP helper CA : No

मुझे लगता है कि मेरे मामले में SSL क्लाइंट और S / MIME साइन करने के अलावा और कोई उद्देश्य नहीं होना चाहिए। क्या मैं गलत हूं और इसे वैसे ही रहना चाहिए?

यदि मैं सही हूं और मुझे अन्य उद्देश्यों को अक्षम करना चाहिए, तो मुझे मेरे Opensl.cnf कॉन्फ़िगरेशन में क्या रखना चाहिए?

यहाँ मेरा वर्तमान विन्यास है (थोड़ा सा छीन लिया गया है):

[ CA_edi ]
# here was directory setup and some other stuff, cut it for clarity
x509_extensions = usr_cert      # The extentions to add to the cert

name_opt    = ca_default        # Subject Name options
cert_opt    = ca_default        # Certificate field options
# Extension copying option: use with caution.
# copy_extensions = copy
# stripped rest of config about validity days and such

[ usr_cert ]

basicConstraints=CA:FALSE
nsCertType = client, email
keyUsage = nonRepudiation, digitalSignature, keyEncipherment, keyAgreement

मैं क्या गलत कर रहा हूं कि उत्पन्न किए गए सर्वर सर्वर के उपयोग की अनुमति देते हैं?


"Cert_opt = ca_default" की समीक्षा करें जो ओवरराइड बनाता हुआ प्रतीत होता है।
zedman9991

यह एक अच्छा सवाल लगता है, सालों बाद और कोई जवाब नहीं?
इवान कैरोल

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

मैंने नीचे दिए गए उत्तर में अपना सर्वश्रेष्ठ स्टैब लिया है, लेकिन यदि आप openssl x509 -text -nameopt multiline -certopt no_sigdump -certopt no_pubkey -noout -in one_of_your_client_certificates.pemअपनी openssl.cnfफ़ाइल से आउटपुट और एक्सटेंशन अनुभाग की एक प्रति शामिल कर सकते हैं , तो मैं देखूंगा कि क्या मैं अधिक विशिष्ट सलाह प्रदान कर सकता हूं।
कालरात्रि

जवाबों:


4

आपको "सीआरएल साइनिंग", "एनी पर्पस सीए", और "ओसीएसपी हेल्पर" के बारे में चिंतित होने का अधिकार है, ये आमतौर पर सीए प्रमाणपत्रों या प्रमाणपत्रों के लिए आरक्षित होते हैं जो विशेष रूप से प्रमाणपत्र निरस्तीकरण सूची (CRLs, प्रमाणपत्रों की एक सूची पर हस्ताक्षर करने के लिए जारी किए जाते हैं) अमान्य), या OCSP सर्वर चलाना (CRLs के समान है, लेकिन एक ऑनलाइन सेवा जो प्रमाणपत्र के लिए वैधता की स्थिति प्रदान करती है)।

प्रासंगिक OpenSSL प्रलेखन पृष्ठ x509 कमांड और x509v3_config के लिए है

ग्राहक प्रमाणपत्र बनाने के लिए मैं OpenSSL कॉन्फ़िगरेशन का उपयोग करता हूं:

[user]
basicConstraints = critical,CA:FALSE
extendedKeyUsage = clientAuth,emailProtection
subjectAltName=email:copy
crlDistributionPoints = URI:http://www.rgweb.org/ca/rgweb-ca.crl
authorityKeyIdentifier=keyid:always
authorityInfoAccess = caIssuers;URI:http://www.rgweb.org/ca/rgweb-ca.cer

मैं आपको इसके द्वारा लाइन-दर-लाइन ले जाऊंगा:

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

विस्तारित कुंजी का उपयोग आवश्यक नहीं है, लेकिन कुछ सॉफ्टवेयर की आवश्यकता है यह मौजूद होना चाहिए और एक विशेष उद्देश्य सूचीबद्ध होना चाहिए। यह क्लाइंट प्रमाणीकरण (आप किस बारे में बात कर रहे हैं) को सूचीबद्ध करता है और S / MIME ईमेल पर हस्ताक्षर और एन्क्रिप्शन भी करता है; यदि आपको इसकी आवश्यकता नहीं है तो आप S / MIME उद्देश्य को सुरक्षित रूप से निकाल सकते हैं।

subjectAltNameआपको उस विषय के बारे में जानकारी शामिल करने की अनुमति देता है जिसे आप subjectफ़ील्ड में शामिल नहीं कर सकते । यह डोमेन नाम शामिल करने के लिए वेब सर्वर प्रमाणपत्रों में भी उपयोग किया जाता है कि प्रमाणपत्र का उपयोग विषय के सामान्य नाम विशेषता में निर्दिष्ट डोमेन के अलावा किया जा सकता है; इन प्रमाणपत्रों को SAN (विषय वैकल्पिक नाम) प्रमाणपत्र के रूप में संदर्भित किया जाता है। subjectAltNameविषय के बजाय ईमेल पते को शामिल करना आम बात है ; आपको ईमेल पते को शामिल करने की आवश्यकता नहीं है, और एक्सटेंशन को छोड़ सकते हैं।

crlDistributionPointsजारी करने वाले प्राधिकरण के लिए सीआरएल उपलब्ध स्थानों को सूचीबद्ध करता है; यह सॉफ़्टवेयर को बताता है कि प्रमाण पत्र को मान्य करने की कोशिश की जा रही है "यह देखने के लिए कि यह प्रमाण पत्र अभी भी मान्य है या नहीं।" इंटरनेट के उपयोग के लिए, एक http://URL संभवतः सबसे अच्छा है (CRLs डिजिटल रूप से हस्ताक्षरित हैं, इसलिए इसकी कोई आवश्यकता नहीं है https, और यह ट्रस्ट लूप समस्याओं का कारण बन सकता है)।

authorityKeyIdentifierआमतौर पर CA की सार्वजनिक कुंजी जारी करने का SHA-1 हैश (हालांकि यह अन्य मूल्य हो सकता है)। यदि आप इस एक्सटेंशन को शामिल करते हैं, तो मूल्य जारी करने वाले CA प्रमाणपत्र में मूल्य से मेल खाना चाहिएsubjectKeyIdentifier

authorityInfoAccessथोड़ा सा है, crlDistributionPointsलेकिन यह निर्दिष्ट करता है कि CRL के बजाय जारी करने वाला CA प्रमाणपत्र कहाँ से प्राप्त किया जाए । यदि आपके पास विश्वास की एक लंबी श्रृंखला है तो यह उपयोगी है: जैसे CA-1 CA-2 जारी करता है, जो CA-3 जारी करता है, जो प्रमाणपत्र जारी करता है; प्रमाणपत्र को सत्यापित करने का प्रयास करने वाला सॉफ़्टवेयर CA-3 प्रमाणपत्र प्राप्त करने के लिए इस एक्सटेंशन का उपयोग कर सकता है, फिर CA-2 प्रमाणपत्र प्राप्त करने के लिए उस प्रमाणपत्र में मान का उपयोग करें, आदि आमतौर पर, प्रमाण पत्र श्रृंखला (इस मामले में, CA-2 प्रमाणपत्र) और (CA-3 प्रमाणपत्र) विषय के प्रमाण पत्र के साथ बंडल किया गया है (जैसे एक एसएसएल लेनदेन में, या एस / माइम ईमेल)। मुझे इस एक्सटेंशन का उपयोग करने वाले किसी भी सॉफ़्टवेयर का पता नहीं है, लेकिन मैं नहीं जानता कि यह आमतौर पर इस्तेमाल नहीं किया जाता है। यह आमतौर पर प्रमाण पत्र में शामिल है।

सब से, आप केवल वास्तव में जरूरत हैbasicConstraints और extendedKeyUsage; बुनियादी बाधाओं वास्तव में, वास्तव में महत्वपूर्ण होना चाहिए (या आप सिर्फ सीए प्रमाण पत्र सौंप दिया है!), और आम तौर पर विस्तारित कुंजी उपयोग नहीं है।


आपके उत्तर के लिए धन्यवाद। मैंने पहले ही अपनी आशा खो दी है। मैं इसे आज बाद में पढ़ूंगा और जितना जल्दी हो सके वापस आ जाऊंगा।
SWilk
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.