2010-08-13 21 views
8

काम नहीं कर रहा है मैं 1 महीने से अधिक समय के लिए एक एसएसएल समस्या से जूझ रहा हूं।स्वयं हस्ताक्षरित सीए के साथ क्लाइंट एसएसएल

हमने अपना स्वयं का सीए, सर्वर और क्लाइंट प्रमाणपत्र उत्पन्न करने के लिए openssl का उपयोग किया है। हम यह भी है (htaccess में यह गलत हो सकता है), Apache वेब सर्वर पर "SSLrequire" सक्षम जिसका मतलब है कि किसी को भी किसी मान्य प्रमाणपत्र

कदम पेश करने के लिए इस प्रकार हैं सर्वर पर https के माध्यम से कनेक्ट करने का प्रयास की जरूरत है ;

  • सीए कुंजी
  • सीए सीएसआर
  • संकेत सीए कुंजी

तो हम अपने ही सीए जो हमारे सर्वर और ग्राहक प्रमाणपत्र पर हस्ताक्षर करने के लिए इस्तेमाल किया जाता है के साथ सीए सीएसआर उत्पन्न उत्पन्न ।

अगले कदम

  • उत्पन्न सर्वर कुंजी
  • उत्पन्न सर्वर सीएसआर
  • सीए कुंजी के साथ
  • संकेत सर्वर सीएसआर

इसलिए हम अपने सर्वर प्रमाणपत्र & सर्वर निजी कुंजी हम सफलतापूर्वक स्थापित किया है जो सर्वर पर

अगला हम

  • उत्पन्न क्लाइंट कुंजी
  • सीए कुंजी के साथ ग्राहक सीएसआर
  • संकेत ग्राहक सीएसआर उत्पन्न

हम तो CA प्रमाणपत्र के साथ एक साथ हमारे उपयोगकर्ताओं के लिए क्लाइंट प्रमाणपत्र वितरित करते हैं। दोनों अपने ब्राउज़र में स्थापित किए गए थे।

कनेक्ट करने का प्रयास करते समय हमें "पीयर आपके प्रमाण पत्र जारी करने वाले सीए को पहचान और भरोसा नहीं करता है। " त्रुटि।

हमने समस्या की पहचान की है कि स्वयं हस्ताक्षरित सीए प्रमाणपत्र सर्वर पर स्थापित नहीं किया गया था। आम तौर पर सर्वर उस डिवाइस से विश्वसनीय सीए की एक सूची पेश करेगा जो डिवाइस से कनेक्ट करने का प्रयास कर रहा है और डिवाइस को प्रमाणपत्र भेजना होगा जिसे सर्वर द्वारा प्रस्तुत किए गए किसी भी सीए द्वारा हस्ताक्षरित किया गया है। लेकिन चूंकि हमारे स्वयं हस्ताक्षरित सीए प्रमाण पत्र सर्वर पर स्थापित नहीं किया गया था, इसलिए ब्राउज़र एक प्रमाणपत्र प्रस्तुत कर सकता है जो सर्वर द्वारा स्वीकार्य होगा।

तो हम सर्वर पर सीए प्रमाण स्थापित करने पर गए - नियंत्रण कक्ष Hsphere।

हम सीए प्रमाण पत्र की सामग्री ले लिया और सर्वर पर "प्रमाणपत्र प्राधिकारी फ़ाइल" पाठ क्षेत्र में यह नकल की और सर्वर इसे हर शिकायत "एसएसएल कॉन्फिग अलग कुंजी और प्रमाणपत्र अपडेट करने में असफल"

स्वीकार नहीं करेगा

सीए प्रमाणपत्र स्वयं ही हस्ताक्षरित किया गया है तो सर्वर कैसे कह सकता है कि प्रमाण पत्र और कुंजी अलग हैं।

हमने सीए प्रमाणपत्र फ़ाइल और सीए कुंजी फ़ाइल दोनों की सामग्री को "प्रमाणपत्र प्राधिकरण फ़ाइल" टेक्स्टरेरा में कॉपी करने का भी प्रयास किया, लेकिन यह भी काम नहीं करेगा।

जैसा कि मैंने कहा था कि हम एक से अधिक महीनों से इसके साथ संघर्ष कर रहे हैं। अगर कोई मदद कर सकता है तो इसकी सराहना की जाएगी। अगर हमें सेवा के लिए भुगतान करना है तो कृपया हमें बताएं।

अग्रिम धन्यवाद।

+0

आप serverfault.com को आजमा सकते हैं, जो hsphere का उपयोग करने वाले व्यवस्थापक ढूंढने की अधिक संभावना है। – sarnold

उत्तर

13

(शायद https://serverfault.com/ इस प्रश्न के लिए एक बेहतर जगह होगी।)

यहां कुछ विकल्प आप अपाचे httpd विन्यास (मुझे यकीन है कि यह कैसे आपके विन्यास पैनल के लिए मैप किया गया है नहीं कर रहा हूँ) में उपयोग कर सकते हैं।

SSLCertificateFile  /etc/ssl/certs/host.pem 
SSLCertificateKeyFile /etc/ssl/private/host.key 
SSLCACertificatePath /etc/ssl/certs/trusteddir 
#SSLCACertificateFile /etc/ssl/certs/trustedcert.pem 
#SSLCADNRequestFile  /etc/ssl/certs/advertisedcas.pem 

SSLCertificateFile और SSLCertificateKeyFile अपने सर्वर पर SSL सक्षम करने के लिए बुनियादी आवश्यकताओं हैं।

क्योंकि आप क्लाइंट-प्रमाणपत्र प्रमाणीकरण चाहते हैं, आप या SSLCACertificateFile (एक फ़ाइल के लिए), जो सीए आप पर विश्वास करना चाहते कहना, इसलिए वहां आपके CA प्रमाणपत्र जोड़ने के लिए (एक निर्देशिका के लिए) SSLCACertificatePath में से एक विन्यस्त करने की जरूरत। ये पीईएम प्रारूप में फाइलें होनी चाहिए। वहां के किसी भी प्रमाण पत्र को भरोसेमंद माना जाएगा (हालांकि इसे सीए मूलभूत बाधा होने की आवश्यकता हो सकती है, मुझे याद नहीं है, अगर आप रूट रूट प्रमाण पत्र को वैसे भी उत्पन्न करते हैं तो यह काफी मानक है)।

इसके अलावा, आप SSLCADNRequestFile में प्रमाण पत्र डाल सकते हैं। यह आवश्यक नहीं होना चाहिए, क्योंकि यह स्वचालित रूप से SSLCACertificatePath या SSLCACertificateFile प्रमाणपत्र निर्देशों से पॉप्युलेट हो गया है, लेकिन यदि आप सीए की सूची पर अधिक नियंत्रण चाहते हैं तो सर्वर विज्ञापित करता है कि यह स्वीकार कर सकता है, यही वह जगह है। बस स्पष्ट करने के लिए, यह क्लाइंट प्रमाणपत्रों में विश्वास का प्रबंधन नहीं करता है, लेकिन सर्वर का विज्ञापन जो भी करता है, वह भरोसा कर सकता है, इसलिए आपको अभी भी SSLCACertificatePath या SSLCACertificateFile की आवश्यकता है। शायद आप अपने कॉन्फ़िगरेशन पैनल में "प्रमाणपत्र प्राधिकरण फ़ाइल" विकल्प नियंत्रित करते हैं और अन्य दो विकल्पों में से एक नहीं है।

एक तरीका यह डिबग करने के लिए यह एक कमांड लाइन करने के लिए है:

echo | openssl s_client -showcerts -connect www.your.host.example:443 

यह प्रमाणपत्र श्रृंखला आप पहली बार पेश सूचीबद्ध करना चाहिए (यह अच्छा होगा यह सीए करने के लिए पूर्ण श्रृंखला पेश करने के लिए , जैसा कि कुछ ग्राहकों को कभी-कभी इसकी आवश्यकता होती है, जहां तक ​​मुझे याद है)। फिर, इसे सीए को सूचीबद्ध करना चाहिए जो क्लाइंट-सर्टिफिकेट प्रमाणीकरण के लिए स्वीकार करने के इच्छुक है, या कोई क्लाइंट प्रमाणपत्र सीए नाम अन्यथा भेजा गया है (जिस स्थिति में ऊपर वर्णित निर्देशों में से एक समस्या है)। यह आपको कम से कम एक संकेत देगा कि कैसे SSLCADNRequestFile या SSLCACertificatePath/SSLCACertificateFile कॉन्फ़िगर किया गया है (हालांकि यह पिछले दो महत्वपूर्ण है)।

+1

करुणा I में केवल +1 देने के लिए है: पीईएम, सीए मूल बाधाओं को निर्दिष्ट करना, सर्वर-ट्रस्ट बनाम क्लाइंट-ट्रस्ट और openssl s_client -showcerts को स्पष्ट करना, प्रत्येक के अपने बिंदु का हकदार है। – sarnold

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