क्या मूल प्रमाणपत्र के उपयोग को किसी डोमेन तक सीमित करना संभव है


28

मेरा ग्राहक किसी एप्लिकेशन के काम करने के लिए स्व हस्ताक्षरित प्रमाणपत्र का उपयोग करता है। काम करने में सक्षम होने के लिए, मुझे रूट प्रमाणपत्र स्थापित करना होगा जो वे प्रमाण पत्र पर हस्ताक्षर करने के लिए उपयोग करते थे।

क्या रूट प्रमाणपत्र को कॉन्फ़िगर करना संभव है इसलिए यह केवल एक डोमेन के लिए मान्य है?


यह सिर्फ मुझे हो सकता है, लेकिन मैं स्पष्ट नहीं हूं कि आप वास्तव में क्या पूछ रहे हैं। आप किस अंतिम स्थिति को पूरा करने की कोशिश कर रहे हैं? यदि आप डोमेन कंट्रोलर्स ट्रस्ट में उनके रूट सर्टिफिकेट को आयात करते हैं, तो बस उस डोमेन के तहत सिस्टम इसके खिलाफ सत्यापन कर सकेंगे ...
ग्रेवी

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

क्या आपके पास एक आंतरिक CA सर्वर है?
Crypt32

1
एक CA खुद को कुछ बाधाओं के लिए सीमित कर सकता है नाम की कमी के साथ , लेकिन किसी अन्य के CA के लिए प्रतिगामी रूप से बाधाओं को लागू करना एक अलग मामला है।
मैट नॉर्डहॉफ

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

जवाबों:


24

निर्धारित नियम के रूप में:

नहीं , ग्राहक के सीए प्रमाणपत्र पर भरोसा करने में निहित है, उस सीए द्वारा हस्ताक्षरित प्रत्येक प्रमाण पत्र में भरोसा है।

मैं ऐसे किसी भी एप्लिकेशन / लाइब्रेरी के बारे में नहीं जानता, जिसके पास एक आसान विकल्प है जो आपको अंतिम-उपयोगकर्ता के रूप में चयन करने की अनुमति देता है कि आप अपने ग्राहकों या किसी अन्य CA प्रमाणपत्र पर केवल कुछ (उप) डोमेन के लिए अर्थात केवल * के लिए विश्वास करेंगे। example.com और * .example.org और कुछ नहीं।

मोज़िला को वर्तमान में विश्वसनीय सरकारी प्रायोजित सीए के रूप में एक समान ध्यान देने वाली बात है , उदाहरण के लिए और क्रोम ने Google साइटों तक पहुँचने के लिए अतिरिक्त चेक का निर्माण किया है, जो कि दुष्ट * .google.com प्रमाणपत्र और डिजीनोटार सीए के समझौता था। ।

लेकिन अगर आप सीए पर भरोसा नहीं करते हैं, तब भी आप उस सीए द्वारा हस्ताक्षरित एक विशिष्ट सर्वर प्रमाणपत्र को आयात / भरोसा कर सकते हैं, जो उस प्रमाणपत्र में होस्टनाम के लिए एसएसएल चेतावनी को रोक देगा। यह आपके आवेदन को त्रुटियों या शिकायतों के बिना काम करना चाहिए।

अपवाद:

X.509v3 PKI मानक का एक बहुत ही उपयोग किया जाने वाला विकल्प नाम की कमी का विस्तार है, जो CA प्रमाणपत्र को सफेद और डोमेन नाम पैटर्न के ब्लैक लिस्ट को शामिल करने की अनुमति देता है, जिसके लिए प्रमाणपत्र जारी करने के लिए अधिकृत है।

आप भाग्यशाली हो सकते हैं और आपके ग्राहक ने खुद को संयमित किया है जब उन्होंने अपने पीकेआई बुनियादी ढांचे की स्थापना की और अपने सीए प्रमाण पत्र में उस नाम की कमी शामिल की। फिर आप उनके CA प्रमाणपत्र को सीधे आयात कर सकते हैं और जान सकते हैं कि यह केवल सीमित नामों के डोमेन नाम को ही मान्य कर सकता है।


2
@CryptoGuy: एक आंतरिक CA बाहरी डोमेन के लिए प्रमाणपत्र भी जारी कर सकता है। एक बार जब आप अपने आंतरिक सीए पर भरोसा करते हैं, तो ऐसा कोई प्रतिबंध नहीं होता है जो केवल आपके (सक्रिय निर्देशिका या DNS) डोमेन के लिए प्रमाण पत्र example.comया *.ad.example.com मान्य हैं। आपका आंतरिक सीए *.example.bankएक अच्छा आदमी-इन-द-बीच हमले की अनुमति देने और आपके ऑनलाइन बैंकिंग क्रेडेंशियल्स को स्नूपिंग करने के लिए प्रमाण पत्र जारी कर सकता है ।
HBruijn

1
अच्छी तरह से "सब कुछ" पूरी तरह से सही नहीं है। प्रमाणपत्र निरस्तीकरण सूची जैसी चीजें हैं। लेकिन यह नीचे की रेखा को नहीं बदलता है।
बेन वोइगट

1
क्षमा करें, आप फिर से गलत हैं। आप 3 पार्टी CA को विश्वास प्रमाणपत्र (उस CA से) को नाम सूची में जारी कर सकते हैं जिसे आप चाहते हैं। अपने स्वयं के आंतरिक सीए के बारे में, मैं विश्वास को निस्संदेह मानता हूं। यदि आप अपने स्वयं के सीए पर भरोसा नहीं करते हैं, तो आपके आईटी में कुछ गड़बड़ है। मैं कहना चाहता हूं कि एक निजी सीए होने से, ओपी एक तृतीय पक्ष सीए के लिए एक आंशिक ट्रस्ट स्थापित कर सकता है (उन नामों को सीमित करके जो वे भरोसा करते हैं)।
Crypt32

3
अपने संपादित पद के लिए: भले ही 3rd पार्टी सीए में नाम की कमी का विस्तार नहीं है, क्रॉस-प्रमाणीकरण के माध्यम से अपने स्वयं के आंतरिक सीए सर्वर का उपयोग करके उन्हें लागू करना संभव है। इस मामले में, सर्टिफिकेट चेन इस प्रकार होगी: लीफ एसएसएल सर्टिफिकेट -> क्रॉस-सर्टिफिकेट -> आपका सीए सर्टिफिकेट -> आपका आंतरिक रूट सर्टिफिकेट। चाल यह है कि आप अपने आंतरिक सीए का उपयोग करके तीसरे पक्ष के सीए पर हस्ताक्षर करते हैं। और क्रॉस-सर्टिफिकेट में सभी आवश्यक बाधाएं होंगी।
Crypt32

1
CryptoGuy का कहना है कि यह संभव है, लेकिन कार्यान्वयन विवरण ढूंढना चुनौतीपूर्ण है। यह कैसे पूरा किया जा सकता है इसका वर्णन करने वाले उत्तर के बारे में कैसे? और शायद इस बात की चर्चा कि कौन से प्लेटफॉर्म nameConstraints का समर्थन करते हैं।
जॉर्फस

17

@CryptoGuy का यहाँ बहुत अच्छा जवाब था, लेकिन मैं इस पर विस्तार करना चाहता था।

विवरण बताने के लिए:

आप 3 पार्टी CA को विश्वास प्रमाणपत्र (उस CA से) को नाम सूची में जारी कर सकते हैं जिसे आप चाहते हैं। भले ही 3rd पार्टी CA में नाम की कमी एक्सटेंशन नहीं है, लेकिन क्रॉस-प्रमाणन के माध्यम से अपने स्वयं के आंतरिक CA सर्वर का उपयोग करके उन्हें लागू करना संभव है। चाल यह है कि आप अपने आंतरिक सीए का उपयोग करके तीसरे पक्ष के सीए पर हस्ताक्षर करते हैं।

लीफ एसएसएल सर्टिफिकेट -> क्रॉस-सर्टिफिकेट -> आपका सीए सर्टिफिकेट -> आपका आंतरिक रूट सर्टिफिकेट।

और यहां बताया गया है कि आप उस कार्य को कैसे करते हैं (OpenSSL कमांड लाइन CA का उपयोग करके)

एक साधारण सीए बनाएं

openssl req -new -x509 -days 3650 -newkey rsa:2048 -sha256 -out root-ca.crt -keyout root-ca.key -subj "/CN=My Root CA"

आप एक मध्यवर्ती CA बनाना छोड़ सकते हैं

नाम की कमी के साथ एक मध्यवर्ती CA अनुरोध बनाएँ।

openssl req -new -days 3650 -newkey rsa:2048 -out domain-ca.req -sha256 -keyout domain-ca.key -config ossl_domain_com.cfg

इसके साथ ossl_domain_com.cfgफाइल में:

[ req ]
prompt=no
distinguished_name=req_distinguished_name
req_extensions=domain_ca

[ req_distinguished_name ]
CN=somedomain.com trust CA

[ domain_ca ]
basicConstraints=critical,CA:true,pathlen:1
nameConstraints=critical,permitted;DNS:.somedomain.com

फिर, अपने CA के साथ उस मध्यवर्ती डोमेन CA पर हस्ताक्षर करें।

openssl x509 -req -in domain-ca.req -CA root-ca.crt -CAkey root-ca.key -sha256 -set_serial 1 -out domain-ca.crt -extensions domain_ca -extfile ossl_domain_com.cfg

यदि आपने इंटरमीडिएट बनाना छोड़ दिया है, तो साइन करने के लिए अपने रूट CA का उपयोग करें

अब अपने प्रमाण पत्र का उपयोग करके, अपने अधिकार के तहत मूल डोमेन के सीए पर फिर से हस्ताक्षर करें। आप यहां सीए एक्सटेंशन जोड़ सकते हैं।

openssl x509 -in third_party_ca.crt -CA domain-ca.crt -CAkey domain-ca.key -set_serial 47 -sha256 -extensions domain_ca -extfile ossl_domain_com.cfg -out domain-cross-ca.crt

-x509-to-reqअनुरोध बनाने के लिए आपको तर्क का उपयोग करने की आवश्यकता हो सकती है , जिसे आप ठीक उसी तरह साइन करेंगे जिस तरह से ऊपर मध्यवर्ती है।

अब, अपने ब्राउज़र के ट्रस्ट डेटाबेस में अपना रूट CA, मध्यवर्ती CA और डोमेन-क्रॉस-सीए जोड़ें।


2
MacOS nameConstraints का समर्थन नहीं करता है। आंतरिक नाम पर काम करने वाले किसी भी व्यक्ति के लिए बस FIY ने आंतरिक CA को बाध्य किया। security.stackexchange.com/questions/95600/... archive.is/6Clgb
jorfus

प्रश्न: इस समाधान की स्थिति क्या है? आजकल (2018) में क्या सिस्टम काम करता है? // मैं हर बार यही चाहता हूं कि मुझे एक और कंपनी से स्वप्रमाणित प्रमाणपत्र स्थापित करने के लिए मजबूर किया जाए; और हर बार मैं हांगकांग पोस्ट ऑफिस या सिमेंटेक के बारे में सोचता हूं। // मुझे लगता है कि मैं कभी भी इस तरह के वर्णित संकीर्णता को लागू नहीं कर सकता, इसलिए जब तक वे गलती से एक चौड़ीकरण को लागू नहीं करते हैं।
क्रेजी गेलव

@KrazyGlew मेरे पास एक बैच फ़ाइल है जिसका मैं इसके लिए उपयोग करता हूं, और मैं अभी भी नियमित रूप से इसका उपयोग करता हूं। कभी-कभी मुझे मध्यवर्ती खंडों को फिर से जारी करना पड़ता है क्योंकि वे समाप्त हो जाते हैं या घुमाते हैं, इसलिए यह थोड़ा अधिक मैनुअल है, लेकिन यह कोई समस्या नहीं है। मैं कभी-कभी प्राधिकरण-प्रबंधित साइटों पर दौड़ता हूं, जो मेरा ब्राउज़र एक अलग मध्यवर्ती प्राधिकरण, या उनके द्वारा जोड़े गए अतिरिक्त डोमेन नाम के उपयोग के कारण विश्वास करने में विफल रहता है, जो मेरा विश्वास नहीं करता है।
davenpcj

2
मैंने अभी इसका सफलतापूर्वक उपयोग किया है, धन्यवाद। यह मध्यवर्ती प्रमाण पत्र के बिना बहुत अच्छा काम करता है, क्या किसी एक का उपयोग करने का कोई फायदा है? इसके अलावा, basicConstraintsकॉन्फ़िगरेशन फ़ाइल में लाइन दो बार प्रमाण पत्र में बाधा विस्तार को शामिल करने का कारण बनती है, जो फ़ायरफ़ॉक्स को एक गुप्त त्रुटि संदेश के साथ प्रमाण पत्र को अस्वीकार करने का कारण बनता है। मुझे लगता है कि इसे सुरक्षित रूप से हटाया जा सकता है।
wrtlprnft

मैं अंतिम चरण में कोई त्रुटि मिलती है: error with certificate to be certified - should be self signed। इसका क्या मतलब है और इसे कैसे हल किया जाए? pastebin.ubuntu.com/p/QHhpQh2N6J
mymedia
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.