2012-05-28 15 views
5

में प्रमाण पत्र के डोमेन की पुष्टि करना मुझे सी-भूमि ओपनएसएसएल का उपयोग कर X509 प्रमाण पत्र के डोमेन को सत्यापित करने की आवश्यकता है।ओपनएसएसएल

मेरे समझ है कि पुस्तकालय मेरे लिए यह करना नहीं है, और मैं मोटे तौर पर निम्नलिखित कलन विधि को लागू करना है:

  1. तो subjectAlternativeName विस्तार के dns नाम क्षेत्र मौजूद है, कि करने के लिए name सेट मूल्य।
  2. अन्यथा, विषय के सीएन क्षेत्र में name सेट करें।
  3. अनुरोधित होस्टनाम के विरुद्ध name की तुलना करें, प्रत्येक तारांकन को [ए-ज़ा-जे 0-9 _] + से मिलान करने की अनुमति दें, लेकिन 'dot' (।) नहीं।

ऐसा लगता है कि ऐसा करने के लिए बहुत सारे कोड लात मारना चाहिए, लेकिन मुझे कोई नहीं मिला है।

क्या कोई इसका उदाहरण पा सकता है? या वैकल्पिक रूप से, स्वच्छता-मेरे एल्गोरिदम की जांच करें?

संपादित करें: यह मैं इसके साथ आया: https://gist.github.com/2821083। यह वास्तव में अजीब लगता है कि ओपनएसएसएल इसे कॉल करने के लिए छोड़ देगा।

+1

प्रमाण पत्र में जो भी मिलता है उसके आधार पर मूल्य को "सेटिंग" करने के बजाय, आपको इसे दूसरी तरफ करना चाहिए: जांचें कि क्या आप अपेक्षा करते हैं कि एक मेल SAN प्रविष्टि है। ऐसा इसलिए है क्योंकि SAN एक्सटेंशन में कई DNS प्रविष्टियां हो सकती हैं। (अब आरएफसी 6125 में वाइल्डकार्ड मिलान के बारे में अधिक सटीक नियम हैं, बीटीडब्ल्यू।) – Bruno

उत्तर

5

आप बहुत अधिक जगह पर हैं - हालांकि विषय वैकल्पिक नाम और कच्चे आईपी पते और एफक्यूडीएन से सावधान रहें। आप

BOOL SSL_X509_getIDs(apr_pool_t *p, X509 *x509, apr_array_header_t **ids) 

और http://svn.apache.org/viewvc/httpd/httpd/trunk/modules/ssl/ssl_util_ssl.c से संबंधित दोस्तों और ssl_engine_init.c में कॉल प्राप्त करने वाला सभी विकल्प के लिए (जो जिस तरह से सर्वर साइड से होता है) चोरी करने के लिए कर सकते हैं।

जैसा कि आप ओपनस्ल कॉलबैक पर काम कर रहे हैं - तिथि & समय और श्रृंखला पर विचार करें यदि आपने पहले से ही सीटीएक्स में प्रदान नहीं किया है।

डीडब्ल्यू।

2

ऐसा लगता है कि ओपनएसएसएल इसे कॉल करने के लिए छोड़ देगा।

हां, अभ्यास में यह बहुत ही समस्याग्रस्त चूक है क्योंकि इतने सारे एप्लिकेशन को यह नहीं पता कि उन्हें मैन्युअल रूप से चेक करना होगा।

ओपनएसएसएल 1.1.0 में होस्टनाम सत्यापन (इसमें HEAD में अब (एसईपीटी 2013 के रूप में) शामिल होगा)। परिवर्तन लॉग के अनुसार, -verify_name विकल्प है, और apps.c-verify_hostname स्विच का जवाब देता है। लेकिन s_client किसी भी स्विच का जवाब नहीं देता है, इसलिए इसका स्पष्ट नहीं है कि क्लाइंट के लिए होस्टनाम जांच कैसे लागू की जाएगी या लागू की जाएगी।


तो subjectAlternativeName विस्तार के dnsName क्षेत्र है कि मूल्य के लिए मौजूद है, सेट के नाम पर है।

कई विषय वैकल्पिक नाम (SAN) हो सकते हैं, इसलिए एक से अधिक के लिए तैयार रहें।

अन्यथा, विषय के सीएन क्षेत्र में नाम सेट करें।

मुझे विश्वास है कि आपको इसे एक मैच के लिए भी जांचना होगा।

अनुरोध किया होस्टनाम के खिलाफ नाम की तुलना करें, प्रत्येक तारांकन मिलान करने के लिए अनुमति देता है [एक-zA-Z0-9 _], लेकिन 'डॉट' (।)।

यह और अधिक दर्दनाक है। आपको यह भी सुनिश्चित करना होगा कि आप जीटीएलडी या सीसीटीएलडी से मेल नहीं खा रहे हैं। उदाहरण के लिए, आप जीटीएलडी *.com के खिलाफ जारी प्रमाण पत्र से मेल नहीं खाते हैं। वह प्रमाणपत्र शायद एक बुरे आदमी द्वारा जारी किया गया था;)

सीसीटीएलडी * .eu, * .us, या இலங்கை (nic.lk) की तरह हैं। उनमें से कुछ 5000 या उससे अधिक हैं और मोज़िला http://publicsuffix.org/ पर एक सूची प्रदान करता है। कच्ची सूची https://mxr.mozilla.org/mozilla-central/source/netwerk/dns/effective_tld_names.dat?raw=1 पर है।


ऐसा नहीं है कि वहाँ यह करने के लिए चारों ओर लात कोड के बहुत होना चाहिए मुझे लगता है, लेकिन मैं किसी भी नहीं मिला है।

वैन गुलिक के सुझाव के अतिरिक्त, आप कर्ल को भी आजमा सकते हैं। मैं काफी निश्चित हूं कि कर्ल में होस्टनाम मिलान कोड है।


आप यह भी सत्यापित कर सकते हैं कि प्रमाणपत्र अच्छी तरह से गठित हैं। वेब के संदर्भ में जिम्मेदार समूह सीए/ब्राउज़र मंच है। ,

आधारभूत डॉक्स में, आप पाएंगे, उदाहरण के लिए, एक IP: वे बनाने प्रमाण पत्र के लिए आधारभूत और विस्तारित आवश्यकताओं है सामान्य नाम (सीएन) के रूप में सूचीबद्ध विषय वैकल्पिक नाम (SAN) में भी सूचीबद्ध होना चाहिए।

विस्तारित दस्तावेज़ों में, आप पाएंगे कि आरक्षित आईपी (आरएफसी 1 9 18) एक विस्तारित सत्यापन (ईवी) प्रमाण पत्र में उपस्थित नहीं हो सकता है; और ईवी प्रमाण पत्र में जंगली कार्ड नहीं हो सकते हैं।

संबंधित मुद्दे