आप SSLProtocol को केवल कॉन्फ़िगरेशन फ़ाइल में पहले VirtualHost के लिए सेट कर सकते हैं। सभी बाद की VirtualHost प्रविष्टियाँ इनहेरिट करेंगी कि पहली प्रविष्टि से सेटिंग और एक ओपनएसएसएल बग के कारण चुपचाप अपनी स्वयं की सेटिंग को अनदेखा करें ।
Mod_ssl के लिए एक संबंधित बग रिपोर्ट है , लेकिन जैसा कि बग रिपोर्ट में वर्णित है, समस्या को OpenSSL में हल किया जाना चाहिए (प्रमाण पत्र विरासत में मिला है, लेकिन प्रोटोकॉल नहीं है)।
सिफर सूट प्रत्येक वर्चुअलबॉस्ट के लिए स्वतंत्र रूप से सेट किया जाना चाहिए, अन्यथा आप डिफ़ॉल्ट सूची के साथ समाप्त हो जाएंगे, जिसमें कई असुरक्षित साइफर भी शामिल हैं। यह भी जान लें कि पुराने ग्राहक जो सर्वर नेम इंडिकेशन (एसएनआई) का समर्थन नहीं करते हैं, वे हमेशा डिफ़ॉल्ट होस्ट (जब तक कि ब्लॉक किए गए का उपयोगSSLStrictSNIVHostCheck
न करें ) का उपयोग करेंगे , जो आपके परीक्षण को भ्रमित कर सकता है।
संक्षेप में, आपको प्रत्येक वर्चुअल होस्ट के लिए कस्टम सिफर सुइट्स और प्रमाण पत्र निर्दिष्ट करने में सक्षम होना चाहिए, लेकिन जब तक बग को ठीक नहीं किया जाता है, तब तक प्रत्येक वर्चुअल होस्ट के लिए कस्टम प्रोटोकॉल के साथ सही व्यवहार की उम्मीद न करें।
मुझे Apache 2.4 के साथ इस समस्या का सामना करना पड़ा और OpenSSL 1.0.1k के साथ modssl, और मुझे उम्मीद है कि Apache 2.2 उसी मुद्दों के अधीन होगा।
अद्यतन (अक्टूबर 2016): ओपनएसएसएल बग को 13 अक्टूबर, 2016 को हल के रूप में चिह्नित किया गया था। हालांकि, यह खुले मुद्दों के बड़े पैमाने पर बंद होने का हिस्सा था और हालांकि 'आंशिक रूप से तय' की आपूर्ति की गई थी, समस्या को पूरी तरह से संबोधित नहीं किया गया था।
अद्यतन (अप्रैल २०१)): पुनर्विकसित ओपनएसएसएल बग में अब एक पैच उपलब्ध है (९ अप्रैल २०१) के अनुसार)। यह पैच कई SNI वर्चुअल होस्ट के साथ कॉन्फ़िगर किए गए Apache इंस्टेंस के व्यवहार को बदल देगा:
उन कनेक्शनों को अस्वीकार करें जो vhost SSLProtocol के अनुरूप नहीं हैं
यह 2.4.27 और उस संस्करण के साथ उत्पादन में विकसित और परीक्षण किया गया था। पैच को 2.4.33 के लिए संशोधित किया गया था और हल्के से परीक्षण किया गया था।
यह SNI पर आधारित वर्चुअल होस्ट के लिए कॉन्फ़िगर किए गए SSLProtocol के विरुद्ध कनेक्शन के संस्करण की जाँच करता है। क्योंकि शुरू में कनेक्शन पोर्ट के लिए डिफ़ॉल्ट होस्ट के लिए कॉन्फ़िगर किए गए SSLProtocol के साथ किया जाता है, डिफ़ॉल्ट होस्ट में सभी प्रोटोकॉल शामिल होने चाहिए जो किसी भी वर्चुअल होस्ट द्वारा समर्थित होंगे।
यह पैच init_vhost फ़ंक्शन के लिए APR_EMISMATCH का एक अतिरिक्त रिटर्न स्टेटस जोड़ता है ताकि OpenSSL के साथ पंजीकृत ssl_callback_ServerNameIndication कॉलबैक घातक अलर्ट SSL -AD_PROTOCOL_VERSION को वापस कर सके। इसका उद्देश्य क्लाइंटहेलो के लिए एक ही प्रतिक्रिया उत्पन्न करना है क्योंकि इसमें SSLProtocol निर्दिष्ट है जो संस्करण को प्रश्न में शामिल नहीं करता है। क्योंकि एसएनआई कॉलबैक को क्लाइंटहेलो के प्रसंस्करण के दौरान कहा जाता है और प्रतिक्रिया उत्पन्न होने से पहले, यह वास्तव में ऐसा लगता है।
यदि आप अचानक निम्न प्रारूप के संदेश देखते हैं:
Rejecting version [version] for servername [hostname]
फिर आपको SSLProtocol
अपने डिफ़ॉल्ट होस्ट के लिए अपनी जांच दोबारा करनी चाहिए ।
SSLStrictSNIVHostCheck
को काफी सराहा गया है। हालांकि, यह भी उद्धृत दस्तावेज से ध्यान दिया जाना चाहिए कि यदि किसी अन्य वर्चुअल होस्ट में सेट किया गया है, तो एसएनआई अनजान क्लाइंट को इस विशेष वर्चुअल होस्ट तक पहुंचने की अनुमति नहीं है ।