দুটি প্রোফাইলই ca.crt নামের একটি ফাইল বহন করে, একটি টানেল ওঠে আর অন্যটি চেইন ত্রুটি দিয়ে ব্যর্থ হয়। দুটি ফাইল পাশাপাশি খুলে দেখা খুব কমই এটি মীমাংসা করে, আর যাচাইকরণ বন্ধ করা এটি ভুল দিকে মীমাংসা করে। ত্রুটিটি আসলে যে প্রশ্নটি করছে তা আরও সংকীর্ণ: প্রতিটি প্রসেস কোন সার্টিফিকেটকে নিজের ট্রাস্ট অ্যাঙ্কর হিসেবে লোড করে, এবং দুটি কি একই বস্তু? আগে এটির উত্তর দিন, তাহলে বাকি নির্ণয়ের একটি দিক থাকবে। ফাইলনাম একটি প্যাকেজিং লেবেল, আর প্রোফাইলে লেখা পাথও কর্তৃত্বপূর্ণ নয়, তাই সবকিছু নির্ভর করে প্রসেসটি আসলে কী পড়ে তার উপর।

ক্লায়েন্ট আসলে যে সার্টিফিকেট লোড করে তা খুঁজুন

OpenVPN কর্তৃপক্ষকে দুটি রূপে গ্রহণ করে, এবং রূপটিই ঠিক করে কোন বাইটগুলি গুরুত্বপূর্ণ। একটি প্রোফাইল ca দিয়ে বাহ্যিক ফাইলের দিকে ইশারা করতে পারে, অথবা সার্টিফিকেটটি প্রোফাইলের ভেতরেই <ca> ব্লকে এমবেড করতে পারে। দুটিই থাকলে এমবেড করা ব্লক জিতে যায় এবং প্রোফাইলের পাশে থাকা ফাইলটি কখনও খোলা হয় না।

ব্যর্থ প্রোফাইলটি পড়ুন এবং কিছু তুলনা করার আগে দেখুন এটি কোন রূপ ব্যবহার করে। পাশের ডিরেক্টরি থেকে বা অন্য প্রোফাইল যে প্যাকেজ থেকে এসেছে সেখান থেকে নেওয়া একটি অনুলিপি এই প্রসেস কী বিশ্বাস করে সে সম্পর্কে কিছুই বলে না। একই কথা কনফিগারেশনের পাথের ক্ষেত্রেও: এটি ক্লায়েন্ট যেখানে শুরু হয়েছে তার সাপেক্ষে সমাধান হয়, যা সর্বদা আপনার দেখা ডিরেক্টরি নয়। প্রোফাইল পড়ুন, ফোল্ডার নয়।

সার্টিফিকেট চেনা হয় তাদের বিষয়বস্তু দ্বারা: পাবলিক কী, সাবজেক্ট ও ইস্যুয়ার, বৈধতার সময়কাল এবং তার সমস্ত কিছুর উপর স্বাক্ষর। অভিন্ন বাইটের দুটি ফাইল যাই নামেই ডাকা হোক একই সার্টিফিকেট, আর একই নামের দুটি ফাইল সম্পর্কহীন কর্তৃপক্ষ হতে পারে। নাম একটি প্যাকেজিং লেবেল, পরিচয় নয়।

openssl দিয়ে দুটি অনুলিপির ফিঙ্গারপ্রিন্ট নিন

ফিঙ্গারপ্রিন্ট হলো সার্টিফিকেটের DER এনকোডিংয়ের উপর একটি হ্যাশ, যে রূপটি স্বাক্ষর ঢেকে রাখে, তাই লাইন শেষ এবং হেডার পাঠ্য এতে প্রভাব ফেলতে পারে না। প্রতিটি ফাইলের জন্য এটি গণনা করুন এবং আপনি দুটি কোলন-বিচ্ছিন্ন হেক্স স্ট্রিং পাবেন যা হয় মেলে, নয় মেলে না। তুলনার প্রশ্নটির উত্তর দিতে সার্টিফিকেটে আর কিছু পড়তে হয় না।

openssl x509 -in /etc/openvpn/office/ca.crt -noout -fingerprint -sha256
openssl x509 -in ~/profiles/lab-ca.pem -noout -fingerprint -sha256

openssl কে প্রোফাইলের দিকেই নির্দেশ করা লোভনীয়, কিন্তু এটি ফাইলে প্রথম যে সার্টিফিকেট ব্লক আসে তা পড়ে, এবং একটি প্রোফাইল সাধারণত <ca> এর আগে <cert> বহন করে। কর্তৃপক্ষের ব্লকটি বের করুন, তারপর বের করা ফাইলটির ফিঙ্গারপ্রিন্ট নিন, কারণ এটিই সেই অনুলিপি যা ক্লায়েন্ট আসলে ব্যবহার করবে।

sed -n '/^<ca>$/,/^<\/ca>$/p' office.ovpn | sed '1d;$d' > /tmp/office-ca.pem
openssl x509 -in /tmp/office-ca.pem -noout -fingerprint -sha256

অভিন্ন ফিঙ্গারপ্রিন্ট মানে ট্রাস্ট উপাদান একই এবং চেইন ত্রুটির অন্য কোনো কারণ আছে, যা ভিন্ন তদন্ত। ভিন্ন ফিঙ্গারপ্রিন্ট মানে ভিন্ন সার্টিফিকেট, আর সেখানেই পরের বিভাগ শুরু হয়।

আক্রমণ ধরে নেওয়ার আগে অসঙ্গতিটি পড়ুন

ভিন্ন ফিঙ্গারপ্রিন্ট মানে ভিন্ন সার্টিফিকেট এবং আর কিছু নয়। পুনঃপ্রদান, ঘূর্ণন, নতুন নামকৃত কর্তৃপক্ষ বা পুরনো বান্ডেল সবই সম্পূর্ণ বৈধ ইতিহাসযুক্ত ভিন্ন ফাইল তৈরি করে। কোনটি ডিপ্লয়মেন্টে থাকে সেটি অপারেটর বা ডিপ্লয়মেন্ট রেকর্ডের জন্য প্রশ্ন, ফাইলের পরিবর্তনের সময়ের জন্য নয়। আর্কাইভ টাইমস্ট্যাম্প অনুলিপি করে, তাই নতুনতর ফাইল স্বয়ংক্রিয়ভাবে সঠিক অ্যাঙ্কর নয়।

নিজেকে স্বাক্ষর করা একটি রুট স্বাভাবিক, তাই একটি খুঁজে পাওয়া সমস্যার প্রমাণ নয়। যাচাইকারীর কাজ হলো সার্ভার সার্টিফিকেট থেকে তাকে দেওয়া অ্যাঙ্কর পর্যন্ত একটি পথ তৈরি করা, এবং চেইন ত্রুটি সাধারণত বোঝায় সেই পথটি সম্পূর্ণ করা যায়নি।

ব্যর্থ প্রোফাইলের অ্যাঙ্করটি এমন একটি কর্তৃপক্ষ কি না দেখুন যা থেকে ডিপ্লয়মেন্ট এখনও ইস্যু করে। যদি ফিঙ্গারপ্রিন্ট ডিপ্লয়মেন্ট রেকর্ডে কিছুর সঙ্গে না মেলে, প্রোফাইলটি কেবল পুরনো, এবং ক্লায়েন্ট-সাইডের কোনো টিউনিং তা ঠিক করবে না।

যাচাইকরণ না বন্ধ করেই ট্রাস্ট মেরামত করুন

স্বল্পমেয়াদি সমাধান হলো যাচাইকরণ বন্ধ করা বা চেইনের প্রতিটি সার্টিফিকেট অ্যাঙ্কর হিসেবে যোগ করা। দুটিই বার্তাটি অদৃশ্য করে দেয়, আর দুটিই বদলে দেয় ক্লায়েন্ট এরপর কোন সার্ভার গ্রহণ করবে। যাচাইকরণ আবার চালু করুন, উদ্দিষ্ট অ্যাঙ্কর ইনস্টল করুন এবং আবার পরীক্ষা করুন।

যদি চেইন এখন তৈরি হয় কিন্তু ভিন্ন ত্রুটি দেখা যায়, এটি অগ্রগতি: নাম যাচাই, বৈধতার তারিখ এবং প্রত্যাহার আলাদা বার্তাসহ আলাদা পরীক্ষা। ফিঙ্গারপ্রিন্ট জোড়া এবং মূল ত্রুটির পাঠ্য একসাথে টিকিটে রাখুন, যাতে পরের ব্যক্তি দেখতে পান কোন অ্যাঙ্কর লোড হয়েছিল এবং কোনটি প্রত্যাশিত ছিল। এক জোড়া ফিঙ্গারপ্রিন্ট হ্যান্ডওভার নোটে পেস্ট করার মতো যথেষ্ট ছোট, এবং পরের ঘটনাটি তখন এক বিকেলের বদলে পাঁচ মিনিট নেয়।

প্রোফাইলটি যে প্রমাণিত চ্যানেল দিয়ে এসেছে সেই একই চ্যানেল দিয়ে সঠিক কর্তৃপক্ষ সংগ্রহ করুন। সাবজেক্ট পরিচিত দেখায় বলে সার্ভার থেকে একটি সার্টিফিকেট টেনে নেওয়া ভিন্ন একটি কাজ, এবং এটি চুপচাপ বাড়িয়ে দেয় ক্লায়েন্ট কী বিশ্বাস করবে।

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