Go বিল্ড, Composer ইনস্টল এবং Python ক্লায়েন্ট—সবই বাড়িতে কাজ করে আর সবই কোম্পানির VPN-এর ভিতরে ব্যর্থ হয়। এই ধরনটি আপনাকে অ্যাপ্লিকেশন সম্পর্কে নয়, পথ সম্পর্কে বলছে। টানেলের ওপরের কিছু আপনার প্রসেস যে সার্টিফিকেট চেইন দেখে তা বদলে দিয়েছে, অথবা চেইন আসার আগেই হ্যান্ডশেক রিসেট করেছে। দুটি ত্রুটি টার্মিনালে একই রকম দেখায় এবং সম্পূর্ণ ভিন্ন প্রতিক্রিয়া দাবি করে।

তিনটি বার্তা, তিনটি প্রক্রিয়া

x509 certificate signed by unknown authority ত্রুটির অর্থ হলো একটি চেইন তৈরি হয়েছে এবং তার রুট সেই প্রসেস যে ট্রাস্ট স্টোর ব্যবহার করে সেখানে নেই। self-signed certificate in certificate chain ত্রুটি সাধারণত বোঝায় একটি ইনস্পেকশন প্রক্সি নিজের সার্টিফিকেট দিয়ে উত্তর দিয়েছে, যা এমন একটি চেইন যা আপনার রানটাইম চেনে না। হ্যান্ডশেক চলাকালীন SSL EOF বোঝায় কোনো ব্যবহারযোগ্য সার্টিফিকেট পাঠানোর আগেই সংযোগটি বন্ধ হয়েছে, এবং এটি ClientHello প্রত্যাখ্যানকারী একটি মধ্যবর্তী ডিভাইস, আসলে কোনো ট্রাস্ট সমস্যাই নয়।

একটি insecure ফ্ল্যাগ যোগ করলে তিনটি বার্তাই অদৃশ্য হয়ে যায় অথচ ইন্টারসেপশন জায়গাতেই থাকে, আর যে যাচাই একজন প্রকৃত আক্রমণকারীকে ধরত সেই যাচাইটিও মুছে যায়।

প্রসেসটি আসলে যে বান্ডেল পড়ে তা খুঁজুন

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 এড়িয়ে যাওয়ায় ওই ট্রাফিকের ইনস্পেকশন এড়ানো হয়, যা নীতি লঙ্ঘন করতে পারে এবং টুলটিকে বিশ্বাসযোগ্য করে না।

প্রতিটি টুলের জন্য ফলাফল লিখে রাখুন

বাইনারি, এটি যে ট্রাস্ট ফাইল পড়ে, যে এনভায়রনমেন্ট ভেরিয়েবল কাজে লাগছে এবং অনুমোদিত ব্যতিক্রম—এগুলো তালিকাভুক্ত একটি ছোট নোট পরের ব্যক্তির পুরো ডায়াগনসিস বাঁচিয়ে দেয়। নোটটি ল্যাপটপ অনুযায়ী নয়, টুল অনুযায়ী রাখুন, কারণ ল্যাপটপই খুব কম সময়ে বদলানো জিনিস।

আর টিকিটে দুটি বাক্য আলাদা রাখুন: আমরা একটি নির্দিষ্ট কর্পোরেট রুট ইনস্টল করেছি, এবং আমরা যাচাই বন্ধ করেছি। এর মধ্যে কেবল একটি সমর্থন কার্যক্রম।

সম্পর্কিত নিবন্ধ