একটি সার্টিফিকেটের পাবলিক ফিল্ড পড়তে কখনোই তার সঙ্গে মেলানো প্রাইভেট কী দেখানো লাগে না, আর তা করার টুল প্রতিটি VPN টার্মিনেট করা সিস্টেমের সঙ্গেই আসে। ঝুঁকি এক ধাপ আগে: যে ফাইলটি আপনাকে দেওয়া হয়েছে সেটি আদৌ সার্টিফিকেট নাও হতে পারে। একটি PEM সার্টিফিকেট, একটি DER ব্লব, একটি PKCS#12 বান্ডল আর একটি OpenVPN প্রোফাইল একই নামে এসে সম্পূর্ণ ভিন্ন উপাদান ধারণ করতে পারে, তাই কমান্ড বাছার আগে কনটেইনারটি চিহ্নিত করুন।

তিনটি তথ্য ঠিক করে কোন কমান্ড নিরাপদ: ফাইলটিতে কী আছে, তা থেকে আপনার কী পড়া দরকার, এবং আউটপুট কে দেখবে। এর যেকোনো একটিতে ভুল করলে যাচাই নিজেই ঘটনায় পরিণত হয়।

তিনটি ফাইলের মধ্যে আপনাকে কোনটি দেওয়া হয়েছে

একটি PEM সার্টিফিকেট হলো দৃশ্যমান BEGIN ও END চিহ্নসহ টেক্সট, একটি DER ফাইল হলো বাইনারি যার ইনপুট-ফরম্যাট ফ্ল্যাগ দরকার, আর বান্ডল হলো এমন কনটেইনার যা সার্টিফিকেটের পাশে একটি কী রাখতে পারে। file server.crt এক সেকেন্ডে টেক্সট ও বাইনারি আলাদা করে, আর প্রথম লাইনে চোখ বোলালেই খালি সার্টিফিকেট আর ভেতরে সার্টিফিকেট রাখা প্রোফাইল আলাদা হয়। এখানে অনুমান করাই যাচাইকে ঘটনায় পরিণত করে।

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

একটি PEM সার্টিফিকেটের পাবলিক ফিল্ড পড়া

যে সার্টিফিকেট যাচাই করার অনুমতি আপনার আছে, তার জন্য -noout সহ x509 সাবকমান্ড শুধু আপনার বাছা ফিল্ডগুলোই ছাপায়, আর কিছু নয়। বডি চেপে দেওয়াই আউটপুটকে মেটাডেটায় সীমিত রাখে, আর সেটাই টিকিটে পেস্ট করা নিরাপদ করে তোলে। নিচের সিলেক্টরগুলো পাবলিক, আর বাকিগুলো openssl x509 ডকুমেন্টেশন-এ তালিকাভুক্ত।

openssl x509 -in server.crt -noout -subject -issuer -dates -fingerprint -sha256

লোকালি তৈরি একটি পরীক্ষামূলক সার্টিফিকেটে ওই কমান্ডটি একটি সাবজেক্ট ও ইস্যুয়ার লাইন, notBefore ও notAfter জোড়া, এবং একটি SHA-256 ফিঙ্গারপ্রিন্ট ছাপায়। ওই ফিল্ডগুলো অবজেক্টটি চিহ্নিত করে; সেগুলো বৈধ ট্রাস্ট পাথ প্রতিষ্ঠা করে না, যা নিজস্ব কমান্ড ও নিজস্ব উত্তরসহ আলাদা একটি যাচাই কাজ। একটি চেইন ফাইলও কেবল প্রথম সার্টিফিকেটই ছাপাতে পারে, যদি না আপনি নিজে ফাইলটি পুনরাবৃত্তি করেন। এভাবে দুটি ফাইল তুলনা করতে একটিই কমান্ড লাগে এবং সহকর্মী পক্ষটি আসলে কোনটি উপস্থাপন করে তা ঠিক হয়ে যায়।

যে বান্ডলগুলো সার্টিফিকেটের পাশে কী রাখে

একটি .p12 বা .pfx ফাইল প্রাইভেট কী বহন করতে পারে, আর আউটপুটের ওই অংশ না চাপলে পার্সিং কমান্ডটি তা ছাপিয়ে দেয়। -nokeys দিয়ে একই কমান্ড কোনো কী উপাদান নির্গত না করেই, একটি আবৃত কী-ব্যাগসহ, কনটেইনারের গঠন জানায়; ওই ফ্ল্যাগ বাদ দিলে আপনার টার্মিনালে ও শেল ইতিহাসে একটি কী ব্লক দেখা যায়।

openssl pkcs12 -in bundle.p12 -nokeys -info -passin env:P12PASS

একটি OpenVPN প্রোফাইল একই উপাদান টেক্সট হিসেবে ধারণ করে, তাই কোথায় দেখতে হবে জানলে সীমানা দৃশ্যমান। পাবলিক উপাদান BEGIN CERTIFICATE ও END CERTIFICATE-এর মধ্যে থাকে, আর BEGIN PRIVATE KEY ও তার সঙ্গের END লাইনের মধ্যে যা কিছু আছে তা-ই কী এবং তা হোস্ট ছেড়ে যেতে পারবে না। প্রোফাইলটি পুরো কপি করলে দুটোই প্রকাশ হয়ে যায়।

রেফারেন্স মান অন্য জায়গা থেকে নেওয়া

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

যেখানে ট্রাস্ট স্টোর যাচাই করে, সেটিকেই করতে দিন, আর নিজের তুলনা বসানোর বদলে তার দেওয়া ত্রুটিটি পড়ুন। আসল পার্থক্য হলো রেফারেন্স কে সরবরাহ করেছে, কোন হ্যাশ ফাংশন ব্যবহার হয়েছে তা নয়।

ফলাফল ভাগ করা, এবং ভুলের পরে কী করবেন

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

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

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