কীভাবে একটি VPN সার্টিফিকেটের ফিঙ্গারপ্রিন্ট আলাদা চ্যানেলে যাচাই করবেন
ফিঙ্গারপ্রিন্ট পরিচয় প্রমাণ করে কেবল তখনই, যখন প্রত্যাশিত মান আক্রমণকারীর নিয়ন্ত্রণে নেই এমন চ্যানেল দিয়ে আসে। পরীক্ষাটি এই ক্রমে চালান।
ফিঙ্গারপ্রিন্ট ঠিক ততটাই বিশ্বাসযোগ্য, যতটা বিশ্বাসযোগ্য সেই চ্যানেল যা আপনাকে বলেছে কী প্রত্যাশা করবেন। আপনি যে মানের সঙ্গে তুলনা করছেন তা যদি আপনার পরীক্ষাধীন সংযোগ দিয়েই এসে থাকে, তবে সেই তুলনা প্রমাণ করে না যে ওই সংযোগ নিয়ন্ত্রণকারী ব্যক্তিটি সামঞ্জস্যপূর্ণ — এর বেশি কিছু নয়। পরীক্ষাটি একটি নির্দিষ্ট ক্রমে চলতে হবে, এবং ব্যর্থ ধাপ আপনাকে পরের ধাপে ঠেলে দেওয়ার বদলে থামিয়ে দেবে। VPN ক্লায়েন্ট যখন জানায় যে একটি সার্টিফিকেট বদলেছে, তখন আমি এই ক্রমটি ব্যবহার করি।
মানের নাম দেওয়ার আগে বস্তুর নাম দিন
প্রত্যাশিত মানটি সার্ভারের লিফ সার্টিফিকেটের, ইস্যুকারী CA-এর, না কি লিফের ভেতরের পাবলিক কি-এর — তা ঠিক করুন। এগুলো তিনটি ভিন্ন পরীক্ষা, এবং এরা ভিন্নভাবে ব্যর্থ হয়। মিলে যাওয়া CA ফিঙ্গারপ্রিন্ট সার্ভারকে পিন করে না, এবং পাবলিক কি-এর হ্যাশ ইচ্ছাকৃতভাবে একই কি ধরে রাখা পুনঃপ্রকাশের পরেও টিকে থাকে।
অ্যালগরিদমও লিখে রাখুন। SHA-256 এখন স্বাভাবিক প্রত্যাশা, তবে পুরনো টুল অন্য কিছু না চাইলে SHA-1 ছাপত, এবং 40 অক্ষরের হেক্স মান হলো আপনি দুটি ভিন্ন জিনিস তুলনা করতে যাচ্ছেন এর একটি সংকেত।
প্রত্যাশিত মান দ্বিতীয় চ্যানেল দিয়ে আনুন
দ্বিতীয় চ্যানেলটি এমন হতে হবে যেখানে আপনি যে পক্ষের বিরুদ্ধে সতর্ক থাকছেন সে লিখতে পারবে না। এমন একটি প্রভিশনিং সিস্টেম যেখানে আপনি ইতিমধ্যে প্রমাণীকরণ করেছেন, সিন্দুকে রাখা মুদ্রিত রেকর্ড, কনফিগারেশন ডেটাবেস, বা অন্য প্রসেসের সরবরাহ করা স্বাক্ষরিত নথি — সবই উপযুক্ত। সহকর্মীর চ্যাট বার্তা, সার্চ ফলাফল দিয়ে পৌঁছানো সহায়তা পৃষ্ঠা, এবং আপনি ইতিমধ্যে যে টার্মিনালে ডিবাগ করছেন সেখানে পেস্ট করা যেকোনো কিছু উপযুক্ত নয়।
সম্পূর্ণ মান ও অ্যালগরিদম চান, কখনোই প্রিফিক্স নয়। কোলন ও হাতের অক্ষরের বড়-ছোট কোনো ব্যাপার নয়, কিন্তু ছেঁটে দেওয়া 256-বিটের পরীক্ষাকে অনুমানের খেলায় পরিণত করে।
স্বাধীন উৎস থেকে কেউ প্রত্যাশিত মান দিতে না পারলে সৎ ফলাফল হলো এই সার্টিফিকেট আজ যাচাই করা যাবে না। এটা বলা ভালো, ক্লায়েন্ট এই মাত্র যা দেখিয়েছে তা পিন করার চেয়ে, কারণ তাতে একটি সতর্কবার্তা অভ্যাসে পরিণত হয়।
নিজের দিকে মানটি বের করুন
সার্টিফিকেট ফাইলের জন্য কমান্ডটি হলো openssl x509 -in server.crt -noout -fingerprint -sha256। স্পষ্ট ডাইজেস্ট জরুরি: এটি ছাড়া আউটপুট আপনার OpenSSL সংস্করণের ওপর নির্ভর করে। ফলাফল একটি কোলন-বিভক্ত হেক্স স্ট্রিং, তাই তুলনার আগে কোলনগুলো সরিয়ে দুই পক্ষকেই ছোট হাতের অক্ষরে আনুন।
সরাসরি TLS কথা বলে এমন এন্ডপয়েন্টের জন্য সংযোগ করুন এবং সার্টিফিকেটটি পাইপ করে বের করুন: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256। এটি ওয়েব অ্যাডমিন প্যানেল বা TLS লিসেনারের জন্য কাজ করে, OpenVPN-এর জন্য নয়, যার নিয়ন্ত্রণ চ্যানেল টানেলের ভেতরে থাকে। OpenVPN-এর ক্ষেত্রে সকেট থেকে ধরার চেষ্টা না করে ডিস্কে থাকা প্রোফাইল থেকে সার্টিফিকেট পড়ুন।
তুলনাটি যান্ত্রিক হওয়া উচিত। tr -d ':' ও কেস ফোল্ড দিয়ে দুই মানকেই স্বাভাবিক করুন, তারপর পুরো স্ট্রিং তুলনা করুন। চোখে তুলনা করাই হলো সেই পথ যেখানে মিলে যাওয়া প্রিফিক্স শেষ বাইটের অমিল লুকিয়ে রাখে। স্ট্রিং দুটি আলাদা হলে ব্যাখ্যা খোঁজার আগে পার্থক্যটিকে সত্যি হিসেবে ধরুন।
থামার শর্ত
বস্তু আলাদা হলে থামুন, কারণ CA ফিঙ্গারপ্রিন্ট লিফ সার্টিফিকেটকে নির্দোষ প্রমাণ করতে পারে না আর লিফ CA-কে পারে না। অ্যালগরিদম আলাদা হলে থামুন, কারণ SHA-1 মানের সঙ্গে SHA-256 মান তুলনা আপনাকে কিছুই বলে না। ফিঙ্গারপ্রিন্ট মিললেও সার্টিফিকেটের মেয়াদ শেষ, প্রত্যাহৃত বা ভিন্ন নামের জন্য ইস্যু করা হলে থামুন; মিলে যাওয়া হ্যাশ বৈধতার পরীক্ষা নয় এবং ভাঙা চেইন মেরামত করে না। যে রেকর্ডের সঙ্গে আপনি মিলছেন তার সিরিয়াল নম্বরের সঙ্গে সিরিয়াল নম্বর না মিললেও থামুন, কারণ প্রতিস্থাপিত সার্টিফিকেট ধরার সবচেয়ে সস্তা উপায় এটি।
নতুন মানটি যদি আপনার পরীক্ষাধীন চ্যানেল দিয়েই আসে, থামুন। রোটেশন বৈধভাবেই একটি ফিঙ্গারপ্রিন্ট বদলাতে পারে, কিন্তু প্রতিস্থাপন মানটি তবুও বিশ্বস্ত প্রসেস থেকেই আসতে হবে, প্রশ্নটি যে সতর্কবার্তা ডায়ালগ তৈরি করেছে তা থেকে নয়।
প্রস্তাবিত সমাধান যদি হয় হোস্টনেম বা চেইন যাচাই বন্ধ করা, তবে থামুন। ফিঙ্গারপ্রিন্ট স্বাভাবিক পরীক্ষাগুলোতে একটি শর্ত যোগ করে; এটি তাদের প্রতিস্থাপন করে না, যদি না ডিপ্লয়মেন্ট সচেতনভাবে শুধু-পিন মডেল বেছে নেয়, এবং সেই পছন্দের নিজস্ব পরিচালন ব্যয় আছে।
তুলনার পরে
কী তুলনা করেছেন, প্রত্যাশিত মান কোথা থেকে এসেছে এবং কখন — তা লিখে রাখুন। সার্টিফিকেট পুনঃপ্রকাশিত হলে একই বিশ্বস্ত চ্যানেল দিয়ে সংরক্ষিত প্রত্যাশা হালনাগাদ করুন এবং নতুন সিরিয়াল নম্বর টুকে রাখুন, কারণ সিরিয়াল নম্বরই পরের রোটেশনকে নিরীক্ষাযোগ্য করে।
তারপর সীমাবদ্ধতাগুলো নিয়ে স্পষ্ট থাকুন। ফিঙ্গারপ্রিন্ট নিশ্চিত করে যে আপনার হাতে থাকা সার্টিফিকেটটিই কেউ আপনাকে যে প্রত্যাশা করতে বলেছিল তা। এটি হোস্ট অক্ষত কি না সে সম্পর্কে কিছুই বলে না, এবং সেবাটি এই সার্টিফিকেট কোথায় পৌঁছাতে পারে তা লগ করে বা সীমিত করে কি না সে সম্পর্কেও কিছুই বলে না।