2015-05-15 6 views
8

मैं यह बहुत ही दुर्भाग्यपूर्ण स्थिति में हूँ:क्या टीएलएसवी 1.1 + सुरक्षित साइट पर कर्ल और wget के बिना डेटा पोस्ट/प्राप्त करना संभव है?

  • मेरी वेबसाइट जो समर्थन नहीं करता TLSv1.1/1.2
  • मैं पुराना सॉफ़्टवेयर (सुरक्षा पैच लागू होते हैं) OpenSSL 0.9.8o 01 जून 2010 से उपयोग कर रहा है भी भुगतान गेटवे जो PCI DSS अनुरूप इसलिए एसएसएल और जल्दी टीएलएस वहाँ अक्षम किया गया है

मेरी वेबसाइट भुगतान गेटवे के साथ डेटा विनिमय करने के लिए प्रयोग किया जाता है, लेकिन के रूप में TLSv1.0 गिरा दिया जाता है मैं अब php के cURL पुस्तकालय का उपयोग कर सकते भी file_get_contents() है (या खोल के माध्यम से wget/lynx/curl)

क्या कोई वर्कअराउंड है, कोई भी विकल्प अंतर्निहित पुस्तकालयों का उपयोग किए बिना TLSv1.1 + सुरक्षित सर्वर को कैसे कनेक्ट करें?

मैं जानता हूँ कि कुछ वर्गों phpseclib जो SSH ग्राहक है की तरह PHP में मौजूद है, लोग उपयोग नहीं कर सकते हैं, जो SSH2 module

ऐसा ही कुछ PHP के लिए मौजूद है है के लिए महान? क्या मैं अपने प्रवेश द्वार से कनेक्ट कर सकता हूं?

अब तक मेरे सबसे अच्छे विचार (अद्यतन सॉफ्टवेयर के साथ) अन्य सर्वर के माध्यम से गेटवे के लिए

+0

क्या आप अंतर्निर्मित पुस्तकालयों का उपयोग करने के साथ अटक गए हैं या आप अतिरिक्त जगह उपयोगकर्ताओं को स्थापित कर सकते हैं? – Marek

+0

@Marek मैं पुरानी openssl lib – Peter

+0

की वजह से अंतर्निहित PHP पुस्तकालयों, लिंक्स, wget, curl का उपयोग नहीं कर सकता, मुझे पता है कि, मैं पूछ रहा था कि क्या आप अतिरिक्त पुस्तकालयों और प्रोग्राम को उपयोगकर्ता स्पेस में स्थापित कर सकते हैं, यानी '$ HOME/bin' – Marek

उत्तर

0

मुझे एक और समाधान मिला। https://serverfault.com/a/692894/122489

सभी प्रश्नों के उत्तर के लिए धन्यवाद: TLSv1.2 के लिए 443 और एक अन्य अपनी वेबसाइट के लिए केवल TLSv1.0 समर्थन

अधिक जानकारी यहाँ के साथ -

सुरक्षित सर्वर पर मैं दो VirtualHosts निर्धारित किया है।

2

मैं किसी अन्य सर्वर प्रॉक्सी के अपने प्रारंभिक विचार पसंद आया छोड़कर आप प्रवेश द्वार द्वारा लगाए गए सुरक्षा प्रतिबंधों को धोखा कर रहे हैं, और जब काम कर कनेक्ट हो रहा है भुगतान जानकारी के साथ, शायद यह एक विचार नहीं है।

हालांकि, यदि आप अपने स्वयं के सर्वर पर एक वाग्रेंट इंस्टेंस चला सकते हैं जिसने लाइब्रेरी अपडेट की हैं, तो आप स्थानीयहोस्ट पर वाग्रेंट इंस्टेंस के असुरक्षित अनुरोध को प्रॉक्सी कर सकते हैं और यह बॉक्स को नहीं छोड़ता है, फिर वाग्रेंट इंस्टेंस से अद्यतन पुस्तकालयों ने आपके प्रवेश द्वार पर सुरक्षित संचार किया है।

+0

या शायद एक सादा अपाचे का उपयोग करें/nginx उसी मशीन पर किसी अन्य बंदरगाह पर? – Hafenkranich

4

एक बार मैं वेबसाइट से मेरी गैर TLS क्लाइंट, बोली के लिए बुलाया उपयोगिता stunnel प्रयोग किया है:

stunnel कार्यक्रमों 'कोड में बिना किसी परिवर्तन के मौजूदा क्लाइंट और सर्वर के लिए TLS एन्क्रिप्शन कार्यक्षमता जोड़ने के लिए बनाया गया एक प्रॉक्सी है । इसकी वास्तुकला को सुरक्षा, पोर्टेबिलिटी और स्केलेबिलिटी (लोड-बैलेंसिंग समेत) के लिए अनुकूलित किया गया है, जो इसे बड़े तैनाती के लिए उपयुक्त बनाता है।

+0

मैंने एक और दृष्टिकोण का उपयोग किया (मेरे द्वारा किए गए उत्तर देखें) लेकिन मुझे लगता है कि स्टनल भी काम करेगा। इसलिए बकाया आपको जाता है, धन्यवाद – Peter

1

मैं स्टनल का सुझाव देने जा रहा था। लेकिन dafyc अच्छी तरह से नोट किया।

उन पीसीआई प्रतिबंध लोगों को धीमा करने के लिए लागू नहीं किए गए हैं (केवल .. lol)। वे सुरक्षा के लिए मौजूद हैं।

आप स्टनल के साथ अपनी समस्या का समाधान करेंगे। लेकिन वेबसाइट सर्वर को अपडेट क्यों न करें?

आपने एसएसएल आउटडेट को ठहराया है, लेकिन एक सर्वर के रूप में, कई अन्य बग उपलब्ध होंगे।

यदि वे कुछ अन्य कमजोरियों का पता लगाते हैं और रूट पहुंच प्राप्त करते हैं, तो उन्हें पाइप में क्या खोजना शुरू करने के लिए पासवर्ड भूल जाएगा।

तो यह पीसीआई चाहता है कि विश्वसनीयता की आश्वस्त करने के लिए पर्याप्त अच्छा नहीं लगता है।

+0

बात यह है कि - कार्ड प्रोसेसिंग सर्वर सुरक्षित है, मेरा ग्राहक (स्टोर) नहीं है (0 होना चाहिए) – Peter

+0

दरअसल। अगर वे उनसे कार्ड चुरा लेना शुरू करते हैं, तो कार्ड कंपनी आपको जवाब की तलाश कर सकती है। इस तरह के पुराने सर्वर को एक सूची में समूहीकृत रखें। काउंटर उपाय के रूप में आप उन्हें अवरुद्ध कर सकते हैं और दिखा सकते हैं कि आप उन्हें ऑडिटिंग पर मदद कर रहे हैं। – LeoPucciBr

3

क्या कोई कामकाज है, कोई भी विकल्प अंतर्निहित पुस्तकालयों का उपयोग किए बिना TLSv1.1 + सुरक्षित सर्वर को कैसे कनेक्ट करें?

मैं पाँच काम arounds के बारे में सोच सकते हैं:

1) यह OpenSSL (या कर्ल) स्थापित एक से अधिक संस्करण को शामिल करना संभव है (लेकिन मुश्किल) है। आप कहीं और से मौजूदा बाइनरी उपयोग लाइब्रेरी बनाने के लिए LD_PRELOAD_LIBRARY का भी उपयोग कर सकते हैं। मुझे लगता है कि यह करने के लिए यह एक गन्दा तरीका है।

2) यह डॉकर के साथ वास्तव में आसान होगा। दुर्भाग्यवश, इसे एक आधुनिक कर्नेल की आवश्यकता है, इसलिए आप इसे अपने सर्वर पर इंस्टॉल नहीं कर सकते हैं। लेकिन आप एक और आधुनिक ओएस इंस्टॉल कर सकते हैं, फिर अपने सर्वर को पुराने ओएस के साथ डॉकर कंटेनर में इंस्टॉल करें। लेकिन यह आपकी वेबसाइट को एक नए ओएस पर ले जाने के रूप में उतना ही काम हो सकता है।

3) डॉकर के बजाय, बस chroot का उपयोग करें। एक नए बॉक्स पर, सभी निर्भरताओं को खोजने के लिए "ldd" का उपयोग करें। उन्हें एक क्रोट में कॉपी करें (प्लस कर्ल)। उस सर्वर को अपने सर्वर पर कॉपी करें और "chrooot dir curl" चलाएं। द्विआधारी नई पुस्तकालयों और काम को देखेंगे। इसमें किसी ऐसे व्यक्ति के लिए सेटअप करने में कुछ मिनट लगेंगे जो जानता है कि वे क्या कर रहे हैं।

4) एक नए OpenSSL में संकलित किया है कि कर्ल की एक स्थिर से जुड़े संस्करण का उपयोग करें।

5) एक प्रोग्राम है जो OpenSSL का उपयोग नहीं करता प्रयोग करें। उदाहरण के लिए कुछ जाते हैं (लैंग) प्रोग्राम अपने स्वयं के एन्क्रिप्शन का उपयोग करते हैं, और स्थिर बाइनरी में संकलित करते हैं। उदाहरण के लिए: https://github.com/astaxie/bat

पहला 2 आपके सेटअप में थोड़ा अव्यवहारिक हो सकता है, लेकिन अंतिम 3 में से कोई भी काम करेगा।

1

मैंने पहले ही एक उत्तर पोस्ट किया है, लेकिन मैंने टिप्पणियों में पढ़ा है कि आप सर्वर पर किसी भी उपकरण को इंस्टॉल नहीं कर सकते हैं। आप PHP Streams नामक PHP मूल कार्यों का उपयोग कर सकते हैं। यह पुराने ट्विटर एपीआई के लिए कोड नमूना है:

$url = 'https://api.twitter.com/1/statuses/public_timeline.json'; 
    $contextOptions = array(
     'ssl' => array(
      'verify_peer' => true, 
      'cafile'  => '/etc/ssl/certs/ca-certificates.crt', 
      'verify_depth' => 5, 
      'CN_match'  => 'api.twitter.com', 
      'disable_compression' => true, 
      'SNI_enabled'   => true, 
      'ciphers'    => 'ALL!EXPORT!EXPORT40!EXPORT56!aNULL!LOW!RC4' 
    ) 
); 
    $sslContext = stream_context_create($contextOptions); 
    $result = file_get_contents($url, NULL, $sslContext); 
+0

ने पहले स्थान पर कोशिश की। php पुरानी openssl का भी उपयोग करता है – Peter

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