क्या एसएसएलआई के साथ रिवर्स प्रॉक्सी एसएनआई का उपयोग कर सकता है?


18

मुझे एक बाहरी आईपी पते का उपयोग करके https पर कई अनुप्रयोगों की सेवा करने की आवश्यकता है।

Ssl प्रमाणपत्र को रिवर्स प्रॉक्सी पर प्रबंधित नहीं किया जाना चाहिए। वे एप्लिकेशन सर्वर पर स्थापित हैं।

क्या SNI का उपयोग करने के लिए एक रिवर्स प्रॉक्सी कॉन्फ़िगर किया जा सकता है और समापन बिंदु पर समाप्ति के लिए ssl पास कर सकता है?

क्या यह संभव है कि Nginx या Apache जैसी किसी चीज़ का उपयोग करना। कॉन्फ़िगरेशन कैसा दिखता है?

जवाबों:


14

यह हाप्रोसी के साथ संभव है। आप एक टीसीपी प्रॉक्सी को सेटअप कर सकते हैं और एसएनआई को निकाल सकते हैं और एसएनआई के आधार पर रूटिंग कर सकते हैं। यहाँ एक उदाहरण है:

backend be.app1
    mode tcp
    no option checkcache
    no option httpclose
    tcp-request inspect-delay 5s
    tcp-request content accept if { req.ssl_hello_type 1 }
    tcp-request content reject
    use-server server1 if { req.ssl_sni -m beg app1. }
    server server1 server1:8443 check id 1 weight 0

एसएसएल हेलो प्राप्त करने तक अनुरोध को विलंबित करना आवश्यक है, अन्यथा एसएनआई हेडर प्राप्त करने से पहले हाइपर प्रॉक्सी एक कनेक्शन बनाने की कोशिश करेगा।

मैं वजन 0 के साथ सर्वर का उपयोग कर रहा हूं, क्योंकि मेरे वर्तमान कॉन्फ़िगरेशन में, मेरे पास प्रत्येक एसएनआई के लिए केवल एक सर्वर चल रहा है और मैं नहीं चाहता कि वे यादृच्छिक अनुरोध प्राप्त करें। आप शायद इससे खेलने के बेहतर तरीके खोज सकते हैं।

आशा है कि ये आपकी मदद करेगा।


क्या आप मुझे इसके किसी भी दस्तावेज या कॉन्फ़िगरेशन स्निपेट की ओर इंगित कर सकते हैं ताकि मैं उत्तर स्वीकार कर सकूं?
user319862

3
@ user319862 मुझे यह अच्छा ट्यूटोरियल मिला जो लगता है कि चर्चा की जा रही है।
माइकल हैम्पटन

1
वास्तव में? कोई इस जवाब को क्यों ठुकराएगा?
फ्लोरिन असावोई

इसके साथ समस्या यह है कि क्लाइंट का आईपी पता आगे नहीं मिलता है, इसलिए सर्वर केवल प्रॉक्सी से आने वाले ट्रैफ़िक को देखता है।
काइल

@ काइल जरूर। यह टीसीपी प्रॉक्सी है। इसके बारे में केवल एक चीज आप कर सकते हैं यदि आप कॉन्फ़िगर करते हैं और सर्वर के लिए एक राउटर के रूप में हाइपोक्सी सेट करते हैं और ट्रॉपी का उपयोग करते हैं।
फ्लोरिन असावोई

5

आप स्निप्रोसी का उपयोग कर सकते हैं: https://github.com/dlundquist/sniproxy

एक उदाहरण विन्यास:

listener 0.0.0.0:443 {
    protocol tls
    table TableHTTPS
    fallback 127.0.0.1:8443
}

listener 0.0.0.0:80 {
    protocol http
    table TableHTTP
    fallback 127.0.0.1:8080
}

table TableHTTPS {
    domain1.com backend1:443
    domain2.org backend2:443
}

table TableHTTP {
    domain1.com backend1:80
    domain2.org backend2:80
}

उस परियोजना के बारे में पोस्ट करने के लिए धन्यवाद। मुझे इसकी जानकारी नहीं थी
user319862

@ नमस्कार जब एक पारदर्शी प्रॉक्सी के रूप में एसएनआई चलाते हैं तो यह एसएसएल त्रुटियों को मिटा देता है। इसे कैसे जोड़ेंगे ?
होल्डनफाइटर

1

यह निश्चित रूप से संभव है, अब भी 2019 में आगामी टीएलएस 1.3 के साथ! कई वेब सर्वर या विशेष रिवर्स परदे के पीछे यह कार्यक्षमता प्रदान करते हैं:

  • नंगेक्स gin 1.11.5 (डेबियन x बस्टर या स्ट्रेच-बैकपोर्ट)
  • हैप्रॉक्सी y 1.5 (डेबियन ie जेसी)
  • स्निप्रोसी (डेबियन) बस्टर)
  • आदि।

यह Nginx के लिए एक उदाहरण कॉन्फ़िगरेशन है, जो सेटअप के लिए एक बहुत लोकप्रिय विकल्प है जिसके लिए रिवर्स प्रॉक्सी की आवश्यकता होती है:

stream {
  map $ssl_preread_server_name $selected_upstream {
    example.org upstream_1;
    example.net upstream_2;
    example.com upstream_3;
    default upstream_4;
  }
  upstream upstream_1 { server 10.0.0.1:443; }
  upstream upstream_2 { server 10.0.0.2:443; }
  upstream upstream_3 { server 10.0.0.3:443; }
  upstream upstream_4 { server 10.0.0.4:443; }
  server {
    listen 10.0.0.5:443;
    proxy_pass $selected_upstream;
    ssl_preread on;
  }
}

प्रासंगिक Nginx मॉड्यूल हैं stream_coreऔर stream_ssl_preread। नियमावली:

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.