2009-09-21 16 views
33

मेरा ऐप एसएसएल का उपयोग सर्वर के साथ सुरक्षित रूप से संवाद करने के लिए करता है और उसे प्रमाणपत्र श्रृंखला की पुष्टि करने में परेशानी हो रही है। श्रृंखला इस तरह दिखता है:एसएसएल प्रमाणपत्र श्रृंखला सत्यापन

Entrust.net सुरक्षित सर्वर प्रमाणन प्राधिकरण -> DigiCert वैश्विक सीए -> * .ourdomain.com

हम प्रयोग कर रहे हैं एक प्रमाणपत्र संग्रह मोज़िला से खींच लिया। इसमें Entrust.net प्रमाण पत्र है, लेकिन DigiCert Global CA एक नहीं है।

मेरे समझ एक मध्यवर्ती अधिकार के रूप में लंबे रूट अधिकार है के रूप में भरोसा किया जा की जरूरत नहीं है कि है, लेकिन सत्यापन विफल रहता है:

% openssl verify -CAfile mozilla-root-certs.crt ourdomain.com.crt 
error 20 at 0 depth lookup:unable to get local issuer certificate 

तो मैं स्पष्ट रूप में DigiCert वैश्विक सीए पर भरोसा करने की जरूरत है सत्यापन के लिए आदेश पास करने के लिए आदेश? यह गलत लगता है। लेकिन तुम मुझे बताओ!

संपादित करें: अब मैं समझता हूं कि प्रमाणपत्र फ़ाइल को ओपनएसएसएल के सामने उपलब्ध होना चाहिए। कुछ इस तरह काम करता है:

% openssl verify -CAfile mozilla-root-certs.crt -untrusted digicert.crt ourdomain.com.crt 
ourdomain.com.crt: OK 

यह स्पष्ट रूप से कहा, "मैं यह भरोसा", पूरी श्रृंखला अभी भी सत्यापित किया जाना आवश्यक बिना DigiCert सीए की एक प्रति उपलब्ध कराने के लिए अनुमति देता है मुझे।

लेकिन निश्चित रूप से फ़ायरफ़ॉक्स जैसे ब्राउज़र हमेशा आवश्यक प्रत्येक प्रमाणपत्र की एक प्रति के साथ शिप नहीं होंगे। हमेशा नए सीए होने जा रहे हैं और बिंदु यह सुनिश्चित करने के लिए रूट प्रमाण पत्र की सुरक्षा का उपयोग करना है कि सभी मध्यवर्ती सीए वैध हैं। सही? तो यह काम करता है? क्या यह वाकई मूर्खतापूर्ण है जैसा दिखता है?

+0

ओपनबीएसडी पर, '-CAfile' को '/ etc/ssl/cert.pem' पर सेट किया जा सकता है। –

उत्तर

16

इंटरमीडिएट कॉर्ट आपके वेब सर्वर पर और साथ ही अपने डोमेन के लिए कर्ट भी स्थापित किए जाने हैं। मुझे पिछले हफ्ते एक ही समस्या थी ... फ़ायरफ़ॉक्स इस बारे में बाकी ब्राउज़रों की तुलना में अधिक picky लगता है।

+4

आह ... ठीक है। अंतर्दृष्टि डेविड के लिए धन्यवाद। Google से यहां आने वाले लोगों के लिए, अपाचे कॉन्फ़िगर करने के लिए कुंजी शब्द SSLCertificateChainFile है। इसे देखें (DigiCert से ही!) http://www.digicert.com/ssl-certificate-installation-apache.htm –

+0

सबसे बढ़िया। धन्यवाद, जोश, इससे मुझे बहुत मदद मिली। – 0xCAFEBABE

6

यहाँ एक सर्टिफिकेट की एक वेब सर्वर

  • ग्राहक विश्वस्त CA रूट प्रमाणपत्र की सूची रखता है से आ रही सत्यापित करने के लिए सही तरीका है
  • वेब सर्वर्स निम्नलिखित सर्वर प्रमाणपत्र लौटना चाहिए - आवश्यक
  • माध्यमिक प्रमाणन (ओं) - आवश्यक रूट सीओ प्रमाण - आवश्यक नहीं/वैकल्पिक

जब कोई ग्राहक किसी सर्वर से कनेक्ट होता है, तो उसे सर्वर प्रमाणपत्र और इंटरमीडिया मिलता है सर्वर से te प्रमाणपत्र (ओं)। उसके बाद क्लाइंट, सर्वर प्रमाण पत्र से ट्रस्ट की श्रृंखला बनाता है, इंटरमीडिएट सर्टिफिकेट्स के माध्यम से सीए रूट प्रमाणपत्रों में से एक को विश्वास करता है। रूट सर्टिफिकेट हमेशा स्व-हस्ताक्षरित होते हैं - इसलिए वह जगह है जहां श्रृंखला बंद हो जाती है।

यहाँ openssl

openssl s_client -CAfile <root ca file> -quiet -showcerts -connect IP:PORT 

का उपयोग कर आभासी होस्टिंग, जहां कई प्रमाण पत्र एक ही आईपी पर परोसा जाता है के मामले में एक वेब सर्वर प्रमाण पत्र का परीक्षण करने के लिए एक सरल कमांड है: पोर्ट, सर्वर नाम संकेत (SNI) कर सकते हैं -servername <FQDN> का उपयोग करके सक्षम किया जा सकता है। अन्यथा, डिफ़ॉल्ट प्रमाणपत्र भेजा जाएगा।

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