curl ত্রুটি 77: VPN ইনস্টলের সময় সার্টিফিকেট যাচাইয়ের অবস্থান
ত্রুটি 77 হলো স্থানীয় CA ইনপুটের ব্যর্থতা, সার্ভারের খারাপ সার্টিফিকেট নয়। curl যে ট্রাস্ট ফাইল পড়ে সেটি খুঁজে ঠিক করুন এবং চালানোর আগে স্ক্রিপ্টটি দেখে নিন।
টিউটোরিয়াল থেকে ইনস্টলারের এক লাইনের কমান্ডটি পেস্ট করে Enter চাপতেই পাচ্ছেন curl: (77)। বার্তায় সার্টিফিকেট যাচাইয়ের অবস্থানের কথা আছে, তাই সহজেই ধরে নিতে ইচ্ছে করে যে VPN প্রদানকারীর সার্টিফিকেট নষ্ট এবং যাচাই বাদ দেওয়ার কোনো ফ্ল্যাগ খোঁজা শুরু হয়। এই ব্যাখ্যা ভুল, আর এটি অনুযায়ী কাজ করলে স্থানীয় ফাইলের সমস্যা নিরাপত্তার সিদ্ধান্তে পরিণত হয়। শুরু থেকে ধাপে ধাপে ফিরে দেখুন।
ধাপ 1: সংখ্যাটি কী বোঝায় তা পড়ুন
ত্রুটি 77 স্থানীয় CA ইনপুট সম্পর্কিত: যে সার্টিফিকেট উপাদান বিশ্বাস করতে বলা হয়েছিল, curl তা পড়তে বা লোড করতে পারেনি। ত্রুটি 60 হলো প্রান্তের সার্ভার সম্পর্কিত, যেখানে সার্ভারের চেইন যাচাই হয় না। টিউটোরিয়ালে এ দুটি পাশাপাশি থাকে, অথচ অর্থ সম্পূর্ণ বিপরীত।
আপনার আউটপুটে 77 দেখালে সার্ভার কখনোই সমস্যা ছিল না। ক্লায়েন্ট যে ফাইলটি যাচাইয়ের জন্য ব্যবহার করতে চেয়েছিল তা খুলতে পারেনি, আর এটি আপনার মেশিনে পাথ, অনুমতি বা প্যাকেজিংয়ের সমস্যা।
ধাপ 2: আপনি যে কমান্ডটি কপি করেছেন তা পড়ুন
কপি করা কমান্ড অক্ষর লুকিয়ে রাখে। ছোট হাতের -l হলো --list-only, যা প্রোটোকল তালিকা দেখাতে ব্যবহৃত হয়। বড় হাতের -L হলো --location, যা HTTP রিডাইরেক্ট অনুসরণ করে। এগুলো একই জিনিসের ভিন্ন বানান নয়, আর যে টিউটোরিয়াল একটি লিখে অন্যটির বর্ণনা দেয়, সে মানুষকে এমন রিডাইরেক্ট পথে পাঠায় যা কখনোই উদ্দেশ্য ছিল না।
রিডাইরেক্ট অনুসরণ করলে ট্রাস্ট-স্টোরের পাথ ঠিক হয় না, আর শেষ হোস্টটি আপনার উদ্দিষ্ট প্রকাশক কি না তাও প্রমাণ হয় না। কমান্ডটি যদি ফোরাম পোস্ট থেকে আসে, তবে পেস্ট করা লেখায় ভরসা না করে প্রকল্পের নিজস্ব নির্দেশনা থেকে আবার টাইপ করুন।
ধাপ 3: ওই বিল্ড কোন CA ইনপুট ব্যবহার করে তা খুঁজুন
বাইনারিটি শনাক্ত করে শুরু করুন, কারণ উত্তরটি নির্ভর করে এটি কীভাবে কম্পাইল হয়েছে তার ওপর:
curl --versionসংস্করণ ও TLS ব্যাকএন্ড লিখে রাখুন। নেটিভ ট্রাস্ট স্টোর ব্যবহার করা বিল্ড TLS লাইব্রেরির মাধ্যমে সিস্টেম স্টোর পড়ে, আর বান্ডলের দিকে নির্দেশ করা বিল্ড একটি ফাইল পড়ে। স্পষ্টভাবে দেওয়া --cacert, একটি CURL_CA_BUNDLE সেটিং বা shell র্যাপার যেকোনোটি অগ্রাহ্য করতে পারে, তাই প্যাকেজ ইনস্টল হয়তো সত্যিই ব্যর্থ হওয়া ফাইলটিকেই স্পর্শ করে না।
ফাইলভিত্তিক স্টোরের জন্য ক্রমান্বয়ে তিনটি জিনিস দেখুন: পাথটি আছে কি, যে অ্যাকাউন্ট ডাকছে সে এটি পড়তে পারে কি, এবং এতে আপনি যে CA উপাদান আশা করছেন তা আছে কি। ভুল অনুমতির বান্ডল অনুপস্থিত বান্ডলের মতোই ব্যর্থ হয়, আর দুটোই সার্ভার নিয়ে কোনো নেটওয়ার্ক আলাপের আগেই ব্যর্থ হয়।
ধাপ 4: যাচাই নয়, ইনপুট ঠিক করুন
সমর্থিত ট্রাস্ট কনফিগারেশন যার মালিক সে-এর মাধ্যমেই ফিরিয়ে আনুন: ডিস্ট্রিবিউশন প্যাকেজ, আপনার কনফিগারেশন ম্যানেজমেন্ট, বা নথিভুক্ত এনভায়রনমেন্ট ভেরিয়েবল। লক্ষ্য হলো ওই বাইনারির জন্য পড়ার উপযোগী ও সঠিক CA ইনপুট।
URL-কে HTTP-তে বদলাবেন না, --insecure যোগ করবেন না, আর অস্পষ্ট কোনো ডাউনলোড থেকে কপি করা সার্টিফিকেটে ভরসা করবেন না। এসব পরিবর্তনের প্রতিটি curl যা পড়তে পারেনি তা ঠিক করার বদলে আপনি কী মেনে নিতে রাজি তা বদলে দেয়, আর পরিবর্তনটি সাধারণত ঘটনার চেয়ে বেশিদিন টিকে থাকে।
সংখ্যাগুলোর জন্য তথ্যসূত্র হলো curl ত্রুটির তালিকা, আর এটি একবার মন দিয়ে পড়ার জন্য যথেষ্ট ছোট।
ধাপ 5: ডাউনলোড করুন, দেখুন, তারপর চালান
ইনস্টলারটিকে একই কমান্ডে shell-এ পাইপ করার বদলে একটি ফাইলে নামিয়ে নিন। এই একটি পরিবর্তনই আপনি যাচাই করতে পারেন এমন এক স্থানান্তরকে আপনার বিশেষাধিকারে চলা কোড থেকে আলাদা করে দেয়।
curl -fL -o vpn-installer.sh https://example.invalid/install.sh
file vpn-installer.sh
head -n 40 vpn-installer.shপ্রতিক্রিয়াটি আপনার প্রত্যাশিত স্ক্রিপ্ট কি না, কোনো HTML ত্রুটি পাতা, রিডাইরেক্ট বিজ্ঞপ্তি বা খালি ফাইল নয় তা দেখুন। প্রকাশক যদি চেকসাম বা স্বাক্ষর দেয়, তবে একই ফোরাম থ্রেডে উদ্ধৃত কোনো মান নয়, বরং তাদের নথিভুক্ত রিলিজ প্রক্রিয়ার মাধ্যমে তা যাচাই করুন।
HTTPS কী করেছে আর কী করেনি তা মনে রাখুন। এটি আপনার সংযুক্ত হোস্ট পর্যন্ত পরিবহনকে প্রমাণিত করেছে; স্ক্রিপ্টের বিষয়বস্তু সে দেখেনি, আর প্রকাশক বিশ্বাসযোগ্য কি না তাও বলে না।
ধাপ 6: ইনস্টলের ধাপগুলো আলাদা রাখুন
ফাইল ডাউনলোড, ক্লায়েন্ট ইনস্টল, টানেল কনফিগার এবং রুট যাচাই — এই চারটি কাজের চারটি আলাদা ব্যর্থতার ধরন। একবারে একটি করে করলে ক্রমের পরের কোনো ত্রুটির চারটি সম্ভাব্য কারণের বদলে একটি স্পষ্ট কারণ থাকে।
ইনস্টল সফল হয়ে টানেল উঠলে টিকিট বন্ধ করার আগে রুট ও একটি বাস্তব গন্তব্য যাচাই করুন। curl ত্রুটি তখনই ঠিক হয় যখন সাধারণ curl -I https://example.invalid আবার কাজ করে, ইনস্টলার অভিযোগ বন্ধ করলেই নয়।