TLS त्रुटियाँ केवल कॉर्पोरेट VPN पर: सही ट्रस्ट स्टोर ठीक करें
वही टूल, वही लैपटॉप, केवल VPN ही TLS तोड़ता है। संदेश पढ़ें, वह CA बंडल खोजें जो बाइनरी पढ़ती है, और जाँच बंद करने के बजाय एक रूट जोड़ें।
Go बिल्ड, Composer इंस्टॉल और Python क्लाइंट—सभी घर पर काम करते हैं और सभी कंपनी के VPN के भीतर विफल होते हैं। यह पैटर्न आपको एप्लिकेशन के बारे में नहीं, रास्ते के बारे में बताता है। टनल पर किसी चीज़ ने वह प्रमाणपत्र शृंखला बदल दी जो आपकी प्रक्रिया देखती है, या कोई शृंखला आने से पहले ही हैंडशेक रीसेट कर दिया। दोनों खराबियाँ टर्मिनल में एक जैसी दिखती हैं और पूरी तरह अलग प्रतिक्रियाएँ माँगती हैं।
तीन संदेश, तीन तंत्र
x509 certificate signed by unknown authority त्रुटि का अर्थ है कि एक शृंखला बनी और उसका रूट उस ट्रस्ट स्टोर में नहीं है जिसका वह प्रक्रिया उपयोग करती है। self-signed certificate in certificate chain त्रुटि का अर्थ आमतौर पर यह है कि किसी निरीक्षण प्रॉक्सी ने अपने प्रमाणपत्र से उत्तर दिया, जो ऐसी शृंखला है जिसे आपका रनटाइम नहीं पहचानता। हैंडशेक के दौरान SSL EOF का अर्थ है कि कोई भी उपयोगी प्रमाणपत्र भेजे जाने से पहले कनेक्शन बंद हो गया, और यह ClientHello को अस्वीकार करने वाला एक मध्यवर्ती उपकरण है, कोई ट्रस्ट समस्या नहीं।
असुरक्षित फ्लैग जोड़ने से तीनों संदेश गायब हो जाते हैं जबकि इंटरसेप्शन अपनी जगह बना रहता है, और यह उस जाँच को हटा देता है जो किसी वास्तविक हमलावर को पकड़ती।
वह बंडल खोजें जिसे प्रक्रिया वास्तव में पढ़ती है
Windows स्टोर में इंस्टॉल किया गया कॉर्पोरेट रूट उन ब्राउज़रों और .NET एप्लिकेशनों को ठीक करता है जो सिस्टम स्टोर से परामर्श लेते हैं। कंटेनर के भीतर चलने वाले बिल्ड के लिए यह कुछ नहीं करता, क्योंकि उसका अपना CA बंडल होता है, और न ही certifi उपयोग करने वाली Python प्रक्रिया या अपनी सह-आपूर्ति सूची उपयोग करने वाली Node प्रक्रिया के लिए कुछ करता है। Go उस परिवेश के सिस्टम पूल को पढ़ता है जिसमें बाइनरी चलती है, यानी कंटेनर, लैपटॉप नहीं। इसलिए एक ही मशीन एक साथ काम करने वाला ब्राउज़र और विफल होने वाला बिल्ड टूल देती है।
मानने के बजाय टूल से पूछें। python3 -c "import ssl; print(ssl.get_default_verify_paths())" उन फ़ाइलों को प्रिंट करता है जिनसे Python परामर्श लेगा, और node -e "console.log(process.env.NODE_EXTRA_CA_CERTS)" दिखाता है कि कोई ओवरराइड पहले से सेट है या नहीं। कंटेनर के लिए, वही जाँच इमेज के भीतर चलाएँ, क्योंकि बिल्ड वास्तव में वही परिवेश उपयोग करता है।
जहाँ बिल्ड चलता है वहीं एक रूट इंस्टॉल करें
निरीक्षण रूट IT से PEM फ़ाइल के रूप में लें और भरोसा करने से पहले अलग चैनल से उसका फ़िंगरप्रिंट सत्यापित करें। Debian-आधारित इमेज पर, इसे /usr/local/share/ca-certificates/ में कॉपी करें और update-ca-certificates चलाएँ; RHEL परिवार की इमेज फ़ाइल को /etc/pki/ca-trust/source/anchors/ में रखने के बाद update-ca-trust उपयोग करती हैं। कंटेनर बिल्ड में, विफल होने वाले कमांड से पहले ये चरण जोड़ें ताकि परत निर्भरता इंस्टॉल के ऊपर कैश हो जाए।
स्थानीय devcontainer के लिए, PEM माउंट करें और शुरुआत में वही अपडेट कमांड चलाएँ, बजाय इसे ऐसी व्यक्तिगत इमेज में पका देने के जिसे कोई और दोहरा न सके। अपना बंडल साथ लाने वाले टूल को अपना प्रलेखित ओवरराइड चाहिए: pip में प्रमाणपत्र सेटिंग है, npm में cafile सेटिंग है, और बाकी अधिकांश मानक परिवेश चर स्वीकार करते हैं।
यह किसी भी प्रमाणपत्र को स्वीकार करने जैसा नहीं है। आप निरीक्षण करने वाले पक्ष से प्राप्त एक विशिष्ट रूट को एक परिवेश में जोड़ रहे हैं, और बाकी हर शृंखला के लिए सत्यापन चालू रहता है। दर्ज करें कि कौन-सी फ़ाइल जोड़ी गई और कब समाप्त होगी, क्योंकि निरीक्षण रूट किसी भी अन्य CA की तरह नवीनीकृत होता है।
जब हैंडशेक प्रमाणपत्र से पहले मर जाए
यदि कुछ भी प्रस्तुत नहीं होता, तो ट्रस्ट स्टोर में कोई भी बदलाव मदद नहीं करेगा। उसी अनुरोध की तुलना टनल चालू और बंद के साथ करें, फिर openssl s_client -connect host:443 -servername host -showcerts से सीधे शृंखला देखें। जो कनेक्शन VPN के बाहर पूरा होता है और भीतर रीसेट हो जाता है, वह मध्यवर्ती उपकरण का नीति निर्णय है, और उपाय उस होस्ट के लिए अपवाद है, दूसरा प्रमाणपत्र नहीं। पैकेज रजिस्ट्री या API एंडपॉइंट को बिना बदलाव के जाने देने का अनुरोध करें।
टनल को बाँटकर टूल को VPN से बचाना उस ट्रैफ़िक के लिए निरीक्षण टाल देता है, जो नीति का उल्लंघन कर सकता है और टूल को भरोसेमंद नहीं बनाता।
हर टूल के लिए परिणाम लिखें
बाइनरी, वह ट्रस्ट फ़ाइल जिसे वह पढ़ता है, खेल में मौजूद परिवेश चर और स्वीकृत अपवाद को सूचीबद्ध करने वाला छोटा नोट अगले व्यक्ति का पूरा निदान बचा देता है। नोट लैपटॉप के बजाय हर टूल के हिसाब से रखें, क्योंकि लैपटॉप शायद ही वह चीज़ होता है जो बदली हो।
और टिकट में दो वाक्य अलग रखें: हमने एक विशिष्ट कॉर्पोरेट रूट इंस्टॉल किया, और हमने सत्यापन बंद कर दिया। इनमें से केवल एक सहायता कार्रवाई है।