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

ত্রুটিটি CA স্পর্শ করার আগেই ঘটে

পুরোনো Easy-RSA 2 ব্যাচ ফাইল রেজিস্ট্রি জিজ্ঞাসা করে OpenSSL বা OpenVPN ইনস্টলেশন খুঁজে বের করে, তারপর যা পায় তার ভিত্তিতে ভেরিয়েবল সেট করে। জিজ্ঞাসা কিছু ফেরত না দিলে কোনো সার্টিফিকেট অপারেশন চালানোর আগেই স্ক্রিপ্ট থেমে যায়।

তাই রেজিস্ট্রি কী সম্পর্কে বার্তা স্ক্রিপ্টের পরিবেশের প্রমাণ, CA ডিরেক্টরির নয়।

দুটি রেজিস্ট্রি ভিউ, একটি ব্যাচ ফাইল

32-বিট প্রক্রিয়া ও 64-বিট প্রক্রিয়া ভিন্ন রেজিস্ট্রি ভিউ দেখতে পারে, এবং একটি ধরে নেওয়া ব্যাচ ফাইল অন্যটিতে থাকা এন্ট্রিটি মিস করতে পারে। এই শুধু-পড়ার তুলনাগুলো কিছু পুরোনো স্ক্রিপ্টের ব্যবহৃত লিগ্যাসি কী-এর পার্থক্য দেখায়:

reg query "HKLM\SOFTWARE\OpenVPN" /reg:32
reg query "HKLM\SOFTWARE\OpenVPN" /reg:64

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

দুটি ভিউর কোনোটিতেই এন্ট্রি না থাকলে ইনস্টলার এটি কখনো তৈরি করেনি, এবং হাতে মান বানিয়ে টুল কাজ করানো যাবে না।

শর্তহীনভাবে /reg:64 যোগ করবেন না

লোভনীয় সমাধান হলো প্রতিটি জিজ্ঞাসায় 64-বিট সিলেক্টর যোগ করে এগিয়ে যাওয়া। কিছু ইনস্টলেশনে তা সঠিক, আবার অন্যগুলোতে এটি স্ক্রিপ্টকে এমন ভিউতে পাঠায় যেখানে সত্যিই কিছু নেই।

প্রত্যাশিত মান কোন ভিউতে আছে তা দেখার পরেই অনুসন্ধান বদলান।

আবিষ্কার PKI মেরামত নয়

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

যেকোনো পরীক্ষার আগে CA ডিরেক্টরির ব্যাকআপ নিন, এমনকি যেটি শুধু-পড়া বলে আপনি নিশ্চিত হলেও।

Easy-RSA 3-এ যাওয়া একটি মাইগ্রেশন

রক্ষণাবেক্ষণ করা সেটআপের উচিত বর্তমান প্যাকেজের নিজস্ব লঞ্চার ও কনফিগারেশন মডেল ব্যবহার করা, এবং Easy-RSA 3 আর Easy-RSA 2-এর মতো একই ব্যাচ-ফাইল কর্মপ্রবাহ নয়। নতুন PKI-এর জন্য এর কুইকস্টার্ট বিদ্যমান অথরিটির মাইগ্রেশন নির্দেশনা নয়। সংস্করণ বদলানোর আগে CA উপাদান এবং ইস্যু ও প্রত্যাহার রেকর্ড সংরক্ষণ করুন, এবং ওই সংস্করণের আপগ্রেড নির্দেশনা অনুসরণ করুন। টুল-আবিষ্কার ত্রুটি সরাতে কর্তৃত্বপূর্ণ ডিরেক্টরির ভিতরে প্রতিস্থাপন CA আরম্ভ করা তালিকার সবচেয়ে খারাপ বিকল্প।

সংস্করণ পরিবর্তন একটি প্রকল্প; রেজিস্ট্রি ত্রুটি এক বিকেলের কাজ।

যে তুলনাটি সত্যিই এটি সমাধান করে

চারটি জিনিস লিখে সরাসরি তুলনা করুন:

  • কোন স্ক্রিপ্ট চলেছিল, এবং কোন লাইন ব্যর্থ হয়েছিল।
  • ওই লাইন কোন রেজিস্ট্রি ভিউ জিজ্ঞাসা করেছিল।
  • স্ক্রিপ্ট কোন এক্সিকিউটেবল পথ প্রত্যাশা করেছিল।
  • মেশিনে কোন ইনস্টলেশন সত্যিই আছে।

যখন এই চারটি মেলে, ত্রুটি চলে যায়, এবং অবশিষ্ট যেকোনো সার্টিফিকেট সমস্যা CA-কে দোষারোপ না করে তার নিজস্ব প্রমাণে পড়া যায়।

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