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 سے بچانا اس ٹریفک کی جانچ سے بچتا ہے، جو پالیسی کی خلاف ورزی کر سکتا ہے اور ٹول کو قابل اعتماد نہیں بناتا۔
ہر ٹول کے لیے نتیجہ لکھیں
مختصر نوٹ جو بائنری، اس کی پڑھی جانے والی اعتماد فائل، کھیل میں موجود ماحولی متغیر اور منظور شدہ استثنا کی فہرست دیتا ہے، اگلے شخص کی پوری تشخیص بچا دیتا ہے۔ نوٹ لیپ ٹاپ کے بجائے ہر ٹول کے حساب سے رکھیں، کیونکہ بدلی ہوئی چیز لیپ ٹاپ ہونا شاذ و نادر ہے۔
اور ٹکٹ میں دو جملے الگ رکھیں: ہم نے ایک مخصوص کارپوریٹ جڑ نصب کی، اور ہم نے تصدیق بند کی۔ ان میں سے صرف ایک معاون اقدام ہے۔