2016-02-19 16 views
6

पर्ल का MojoliciousServer Name Identification (SNI) का समर्थन करता है, जो कुछ वेब सर्वर एक HTTPS प्रमाणपत्र के साथ कई साइटों को होस्ट करने के लिए उपयोग करते हैं। मैं एक ऐसे सिस्टम पर काम कर रहा हूं जो इसका उपयोग करने के लिए स्थापित नहीं है, और थोड़ी सी गुगल करने से प्रक्रिया कुछ स्पष्ट नहीं होती है और विभिन्न हिस्सों को स्पष्ट किया जाता है। StackOverflow प्रश्न Perl LWP GET or POST to an SNI SSL URL कुछ चीजों का उल्लेख करता है।मैं Mojolicious के लिए एसएनआई समर्थन कैसे स्थापित करूं?

तो, मुझे क्या करने की ज़रूरत है?

+0

मुझे लगता है कि यदि आप एसएनआई (यानी क्लाइंटहेल्लो में सर्वर नाम भेजना) या सर्वर समर्थन के लिए क्लाइंट समर्थन के बारे में पूछ रहे हैं, तो मेरा प्रश्न स्पष्ट होना चाहिए, यानी एक बहु-साइट Mojolicious सर्वर क्लाइंट की साइट के आधार पर विभिन्न प्रमाणपत्र प्रदान करते हैं का अनुरोध किया। जबकि उत्तरार्द्ध IO :: सॉकेट :: एसएसएल के साथ कार्यान्वित किया जा सकता है, मुझे यकीन नहीं है कि क्या Mojolicious इसका उपयोग करने का एक तरीका प्रदान करता है। –

+0

क्लाइंट और सर्वर के लिए उत्तर सबसे अच्छा होगा। –

उत्तर

6

सबसे पहले, यह मोज़ोलियस (या एलडब्लूपी या जो कुछ भी) एसएनआई का समर्थन नहीं करता है। यह IO::Socket::SSL है, लेकिन वास्तव में नहीं, क्योंकि यह Net::SSLeay है, लेकिन वास्तव में नहीं क्योंकि यह openssl का आपका संस्करण है।

  • openssl 1.0 या बाद में स्थापित करें। आप शायद --prefix विकल्प का उपयोग एक नई निर्देशिका में स्थापित करने के लिए कॉन्फ़िगर करने के लिए करना चाहते हैं ताकि आप जो कुछ भी पहले से ही परेशान न हों और जिस पर अन्य चीजें निर्भर हों।
  • नए openssl के खिलाफ इसे संकलित करने के लिए Net::SSLeay अद्यतन करें। आपको संस्करण 1.50 या बाद में संस्करण की आवश्यकता है। यहां मुद्दा यह है कि बाद में Net::SSLeay खुशी से पुराने openssl के साथ काम करेगा। मॉड्यूल को अपग्रेड करने से आपको नया openssl नहीं मिलता है।
  • IO::Socket::SSL से 1.56 या बाद में अद्यतन करें। सबसे पुरानी रिलीज 2012 से है, इसलिए आपको वैसे भी अपडेट करना चाहिए।
  • Mojolicious 2.83 (2012 में जारी, इतना पुराना) ग्राहकों के लिए एसएनआई समर्थन जोड़ा गया, और Mojolicious 6.40 (एक महीने पहले) ने इसे सभी वेब सर्वरों के लिए जोड़ा।

आप प्रत्येक मॉड्यूल के लिए परिवर्तन फाइल में डाल कर इस जानकारी प्राप्त कर सकते हैं, लेकिन हम यहां हैं, तो के Net::SSLeay अनुसार क्रमबद्ध यह मॉड्यूल स्थापित करने के रूप में सरल नहीं है के साथ मिलता है।

  • आप एक ही उपकरण के साथ पर्ल, openssl, और Net::SSLeay संकलित करने के लिए इतना है कि वे बाइनरी संगत हैं की जरूरत है:

    कुछ बातें आप के लिए ध्यान देना होगा।

OPENSSL_PREFIX चर का प्रयोग करें cpan बताने के लिए (और सामान इसे चलाता) जहां सही openssl खोजने के लिए।

$ export OPENSSL_PREFIX=/usr/local/ssl 
$ cpan Net::SSLeay IO::Socket::SSL 

आप पहले से ही नवीनतम Net::SSLeay है, लेकिन openssl के एक पुराने संस्करण के खिलाफ संकलित हैं, तो आप यह पुन: संयोजित करने के लिए मॉड्यूल स्थापित मजबूर कर सकते हैं, भले ही cpan लगता है कि वह अप-टू-डेट:

$ cpan -f Net::SSLeay IO::Socket::SSL 

$ /usr/local/ssl/bin/openssl version 
OpenSSL 1.0.1r 28 Jan 2016 
$ perl -MIO::Socket::SSL -le 'print IO::Socket::SSL->VERSION' 
2.024 
$ perl -MIO::Socket::SSL -le 'print IO::Socket::SSL->can_client_sni' 
1 
+0

आईओ :: सॉकेट :: एसएसएल अकेले ऐसा नहीं कर सकता है। इसे एसएसएल हैंडशेक में जो होस्टनाम जोड़ना चाहिए उसे जानना आवश्यक है। यदि नाम पीरएड्रर के रूप में दिया जाता है तो इसका उपयोग किया जाएगा, लेकिन यदि केवल आईपी पता दिया गया है या मौजूदा टीसीपी सॉकेट को अपग्रेड किया गया है तो नाम आमतौर पर 'SSL_hostname' के साथ स्पष्ट रूप से दिया जाना चाहिए। और यही वह है जो मोजो :: IOLoop :: क्लाइंट वास्तव में कर रहा है। –

+0

मैं अभी तक जवाब के साथ नीचे नहीं हूँ। हालांकि, मैं इस बारे में चिंतित नहीं हूं कि यह वास्तव में कैसे होता है, बस इसके लिए मुझे स्थापित करने और सेटअप करने की आवश्यकता है। –

-1
सवाल का

नहीं एक सीधा जवाब है, लेकिन एक शायद बेहतर तो: IO::Socket::SSL इस जांच करने के लिए तरीकों (1.84 में) जोड़ा है lution।

~ 400 डोमेन की साझा होस्टिंग के व्यवस्थापक के रूप में मेरे अनुभव से, अपाचे में एसएसएल को कॉन्फ़िगर करना अधिक सुविधाजनक है, और mod_perl2 के तहत Mojolicious चल रहा है।

एप्लिकेशन में बहुत अधिक (नेटवर्क) कॉन्फ़िगरेशन डालना हमेशा लंबे समय तक दर्द होता है। कई मामलों में बहुआयामी अनुप्रयोग भी असुविधाजनक हो सकते हैं।

अपाचे में कॉन्फ़िगरेशन मानक स्क्रिप्ट्स द्वारा प्रबंधन की अनुमति देता है, उदा। letsencrypt से SSL-certs का नवीनीकरण।

बेशक अतिरिक्त काम के अन्य सेटअप के लिए मजबूत कारण और विशेष आवश्यकताएं हो सकती हैं।

+0

मैं अन्य समाधान या कामकाज की तलाश नहीं कर रहा हूं। डाउनवॉटिंग के लिए –

+1

Thx। –

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