कड़ाई से बोलते हुए, आपको कभी भी कार्य करने के लिए SSL की श्रृंखला की आवश्यकता नहीं है।
क्या आप हमेशा की जरूरत है एक है SSLCertificateFile
एक साथ SSLCertificateKeyFile
कि प्रमाण पत्र के लिए सही कुंजी युक्त।
मुसीबत यह है, कि अगर आप अपाचे देते हैं, तो यह प्रमाणपत्र है, तो सभी को जोड़ने वाले ग्राहकों को प्रमाणपत्र देना होगा - जो उस एसएसएल प्रमाणपत्र के बारे में पूरी कहानी नहीं बताता है। यह कह रहा है, "मैं किसी के द्वारा हस्ताक्षरित हूं, लेकिन मैं आपको उनके बारे में बताने वाला नहीं हूं"।
यह आमतौर पर ठीक काम करता है, क्योंकि अधिकांश क्लाइंट सिस्टम में सीए प्रमाणपत्र (रूट और इंटरमीडिएट दोनों) का एक बड़ा भंडार होता है, जिसे वह ट्रस्ट की स्थापना के लिए एक मिलान हस्ताक्षरित रिश्ते के माध्यम से जांच सकता है। हालाँकि, कभी-कभी यह काम नहीं करता है; सबसे अधिक बार आप जिस मुद्दे पर चलेंगे, वह एक ग्राहक है जो आपके सीए द्वारा हस्ताक्षरित एक मध्यवर्ती सीए के लिए प्रमाण पत्र नहीं रखता है।
यहीं से जंजीर आती है; यह अपाचे को क्लाइंट को वास्तव में वैसा ही दिखाने देता है, जो विश्वास का रिश्ता दिखता है, जो क्लाइंट को आपके सर्टिफिकेट के बीच के रिक्त स्थान, जो वे विश्वास करते हैं, और मध्यवर्ती के बारे में नहीं बता सकते हैं। श्रृंखला को आपके कॉन्फ़िगरेशन में दो तरीकों में से एक में शामिल किया जा सकता है:
SSLCertificateFile
सर्वर सर्टिफिकेट के बाद नई लाइनों पर आपके द्वारा सेट की गई उसी फ़ाइल में एंबेडेड (रूट नीचे की ओर होना चाहिए)। यदि आप इसे इस तरह सेट करते हैं, तो आप SSLCertificateChainFile
ठीक उसी फ़ाइल की ओर इंगित करेंगे SSLCertificateFile
।
SSLCertificateChainFile
निर्देश में कॉन्फ़िगर की गई एक अलग फ़ाइल में ; सीए सर्टिफिकेट जो सर्वर का सर्टिफिकेट जारी करता है, वह पहले फाइल में होना चाहिए, उसके बाद रूट में कोई भी अन्य।
अब आपके पास मौजूद प्रमाणपत्र फ़ाइल की जाँच करें - मैं शर्त लगा रहा हूँ कि इसमें चेन डेटा शामिल नहीं है। जो आमतौर पर ठीक काम करता है, लेकिन अंततः कुछ ब्राउज़र या अन्य के साथ एक समस्या पैदा करेगा।
/etc/ssl
,/usr/local/etc/ssl
है, या एक मेंssl
वेबसाइट के लिए उप-निर्देशिका विशिष्ट (जैसे/home/www/example.com/data
वेबसाइट तो हैhome/www/example.com/ssl
प्रमाणपत्र है)।