VPN সার্টিফিকেট ইনভেন্টরি: CA লেজার কী প্রমাণ করতে পারে
সার্ভারের একটি ফোল্ডার, একটি CA লেজার, একটি প্রত্যাহার তালিকা ও একটি সেশন টেবিল ভিন্ন প্রশ্নের উত্তর দেয়। VPN পরিচয়ের ইনভেন্টরি করার সময় সেগুলো আলাদা রাখুন।
আপনার গেটওয়ে এমন একটি ক্লায়েন্ট সার্টিফিকেট গ্রহণ করে যা এটি কখনো দেখেনি, কারণ এটি যে দিয়ে কনফিগার করা হয়েছে তা একটি বিশ্বস্ত ইস্যুয়ার, এবং সার্টিফিকেটটি হ্যান্ডশেকের সময় আসে। প্রোটোকল এভাবেই কাজ করার কথা, এবং এ কারণেই সার্ভারে ডিরেক্টরি লিস্টিং একটি দুর্বল ইনভেন্টরি। ইস্যুয়ার জানে সে কী তৈরি করেছে, সার্ভার জানে কী সংযুক্ত হয়েছে, আর প্রত্যাহারের অবস্থা জানে কী প্রত্যাহার করা হয়েছে। এই তিনটি রেকর্ড মিশিয়ে যে ইনভেন্টরি তৈরি হয়, তা শেষে এমন কিছু দাবি করে যা তাদের কেউই বলেনি।
গেটওয়ে ফাইলের তালিকায় নয়, ইস্যুয়ারে আস্থা রাখে
ভ্যালিডেশন উপস্থাপিত সার্টিফিকেটকে একটি ট্রাস্ট অ্যাঙ্করের সঙ্গে তুলনা করে, তাই একই ইস্যুয়ারের গতকাল তৈরি একটি পরিচয় সার্ভারের ডিস্কে কখনো না থেকেও সংযুক্ত হয়। এজন্য কিছু কপি করতে হয় না, আর কাউকে হাতে অনুমোদনও করতে হয় না। তাই সার্ভারের নিজের রেকর্ড আসার ঘটনা বর্ণনা করে, সম্ভাব্য আগমনকারী পরিচয়ের জনসংখ্যা নয়।
উল্টো ফাঁকটিও সমান অস্বস্তিকর। একটি ফোল্ডারে মেয়াদোত্তীর্ণ সার্টিফিকেট, প্রত্যাহৃত সার্টিফিকেট, এবং এমন ডিভাইসের জন্য ইস্যু করা পরিচয় থাকতে পারে যা কখনো মোতায়েন হয়নি। ফাইল গোনা বলে কতগুলো ফাইল আছে, যা এমন প্রশ্ন যেটি কেউ করেনি। বরং অর্থবহ রেকর্ড থেকে শুরু করুন।
চারটি প্রশ্ন, চারটি ভিন্ন রেকর্ড
প্রতিটি রেকর্ড ধরন একটি প্রশ্নের ভালো উত্তর দেয় আর বাকিগুলোর খারাপ, তাই সেগুলো একত্র করা প্রতিবেদন সম্পূর্ণ দেখায় অথচ নির্দিষ্টভাবে ভুল। নিচের টেবিলটি সেগুলোকে যে সিস্টেম তৈরি করে তার ভিত্তিতে নয়, বরং যে প্রশ্নের সমাধান করে তার ভিত্তিতে সাজায়।
| Question you are answering | Where the answer lives | How quickly it changes | What it will never show |
|---|---|---|---|
| Was this identity ever created? | The issuer's issuance database | Only when something is issued | Whether the device still exists |
| Is a copy sitting on this host? | The paths you actually inspected | Whenever anyone copies files | Certificates that were never copied here |
| Has the issuer withdrawn it? | Published revocation state | When the issuer next publishes | Withdrawals that are not published yet |
| Is it connected right now? | The live session table | Continuously | Anything about past or future sessions |
সর্বজনীন সার্টিফিকেটের সংরক্ষণ কোনো গোপন বিষয় নয়, কারণ এতে কোনো প্রাইভেট কী থাকে না, তবে এটি শেয়ার করারও নয়। সাবজেক্ট ও ডিভাইসের নাম পরিচালনগত বিবরণ প্রকাশ করে, আর প্রতিবেদনটি তার প্রয়োজনীয় পাঠকের কাছেই থাকা উচিত। প্রাইভেট কী সম্পূর্ণভাবে ইনভেন্টরির বাইরে থাকে, কারণ ইনভেন্টরির প্রয়োজন মেটাডেটা, ক্রেডেনশিয়াল নয়।
ইস্যুয়ার ও সিরিয়ালই একমাত্র স্থিতিশীল কী
সাবজেক্ট পুনর্ব্যবহৃত হয় এবং ফাইলের নাম আবার ব্যবহৃত হয়, তাই গত বছর যে নাম একটি ডিভাইস চিহ্নিত করত, তা এখন অন্য একটি চিহ্নিত করতে পারে। কোনোটিই কী নয়, এবং যেকোনোটির ওপর গড়া প্রতিবেদন শেষে দুটি পরিচয়কে এক লাইনে মিলিয়ে ফেলবে।
ইস্যুয়ার ও সিরিয়ালের জোড়া একটি সার্টিফিকেটকে অনন্যভাবে চিহ্নিত করে, এবং দুটি ক্ষেত্রই সার্টিফিকেটের ভেতর থেকেই আসে। সেগুলো সাবজেক্ট, বৈধতার তারিখ, যে উৎস থেকে কপিটি এসেছে, এবং দায়িত্বপ্রাপ্ত ব্যক্তি বা ডিভাইসের সঙ্গে লিখে রাখুন। প্রত্যাহার ও মোতায়েন অবস্থা আলাদা ক্ষেত্র হিসেবে যোগ করুন, নিজস্ব পর্যবেক্ষণ সময়সহ, কারণ বৈধতার সময়সীমার ভেতরে থাকা সার্টিফিকেট স্বয়ংক্রিয়ভাবে অনুমোদিত নয়। এই দুই তথ্য ভিন্ন সিস্টেমে থাকে, আর সেগুলো মিলিয়ে দিলে সেই ঘটনাটি ঢেকে যায় যেখানে কোনো পরিচয় প্রত্যাহৃত হয়েছে অথচ তার ফাইল এখনো হালনাগাদ দেখায়।
একবারে একটি সার্টিফিকেট পড়ুন
একটি ফোল্ডারজুড়ে বিস্তৃত ওয়াইল্ডকার্ড কোনো ব্যাচ ইন্টারফেস নয়, এবং এটি লুকিয়ে রাখে কোন ফাইল কোন আউটপুট দিয়েছে। প্রতিটি সার্টিফিকেটের মেটাডেটা আলাদাভাবে পড়ুন, আর প্রত্যাহারের দিকটি তার নিজস্ব আর্টিফ্যাক্ট থেকে পড়ুন। OpenSSL x509 রেফারেন্স সেই অপশনগুলো যে ক্ষেত্র ছাপে তা তালিকাভুক্ত করে।
openssl x509 -in <cert>.pem -noout -issuer -serial -subject -dates -fingerprint -sha256
openssl crl -in <issuer>.crl -noout -text | head -n 40
পরিচালিত Easy-RSA PKI-র জন্য টুলটি যে কার্যপ্রবাহ সমর্থন করে তার মাধ্যমে ইস্যুয়েন্স ডেটাবেসে কুয়েরি করুন, ডিরেক্টরি লেআউট ধরে নেওয়ার বদলে, এবং ইনভেন্টরি তৈরি হওয়ার সময় মূল ফাইলগুলো কেবল-পঠনযোগ্য রাখুন। লেজারের বিন্যাস যথেষ্ট নিয়মিত, যাতে ডেটাবেস হাতে না খুলেই বৈধ এন্ট্রি গোনা ও প্রত্যাহৃতগুলো তালিকাভুক্ত করা যায়।
grep -c '^V' pki/index.txt
grep '^R' pki/index.txt | cut -f4,5
পরের ইস্যুও টিকে থাকা ইনভেন্টরি
একটি ফোল্ডারের এককালীন ডাম্প পরের সার্টিফিকেট ইস্যু হওয়ার মুহূর্তেই পুরোনো হয়ে যায়, তাই প্রতিবেদনটি ইস্যুয়েন্স কার্যপ্রবাহ থেকে তৈরি করুন এবং স্বাভাবিক পরিচালনার অংশ হিসেবে হালনাগাদ হতে দিন। এতে প্রতিবেদনটি পুনরুৎপাদনযোগ্যও হয়, যা তখন জরুরি যখন দুইজন মানুষের মধ্যে কী ইস্যু হয়েছে তা নিয়ে মতভেদ থাকে।
ফলাফলটি স্প্রেডশিট অনুশীলন হিসেবে নয়, নবায়ন ও অবসর সিদ্ধান্তের জন্য ব্যবহার করুন। স্থানীয় কপি মুছে ফেললে ইতিমধ্যে থাকা দূরবর্তী কপিগুলো অকার্যকর হয় না। কনফিগার করা প্রত্যাহার ও অনুমোদন কার্যপ্রবাহের মাধ্যমে পরিচয়টি প্রত্যাহার করুন, তারপর তারিখসহ প্রত্যাহারটি লিপিবদ্ধ করুন। যে পরিচয় সার্ভার থেকে উধাও হয়েছে কিন্তু ইস্যুয়ারের কাছে এখনো বিশ্বস্ত, তা অবসর হয়নি, এবং এই পার্থক্যই নির্ভুল ইনভেন্টরিকে নিছক আশ্বস্তকারী ইনভেন্টরি থেকে আলাদা করে।