দুটি ফাইল, দুটি নির্দেশিকা, আর যে জিনিসটি তারা কনফিগার করে তার নামেই দুটোকেই নাম দেওয়ার অভ্যাস। এভাবেই dh.pem tls-auth লাইনে গিয়ে বসে আর ক্লায়েন্ট অপ্রত্যাশিত কী ফরম্যাটের বার্তা নিয়ে ব্যর্থ হয়। আপনার সামনের সিদ্ধান্ত কোন ফাইলটি বেশি শক্তিশালী তা নয়। সিদ্ধান্ত হলো ডিপ্লয়মেন্টের আসলে কোন ভূমিকাটি দরকার, এবং তিনটি শর্ত এটাই ঠিক করে: আপনার TLS স্ট্যাক কোন কী এক্সচেঞ্জ নিয়ে দরকষাকষি করবে, আপনি আদৌ কন্ট্রোল-চ্যানেল প্রমাণীকরণ চান কি না, এবং উপাদানটিকে গোপন থাকতে হবে কি না।

ক্রমানুসারে এগুলোর উত্তর দিন, ফাইলের প্রশ্ন নিজেই উত্তর পেয়ে যাবে। এগুলো এড়িয়ে গেলে নির্দেশিকার নামগুলো পরস্পর বিনিময়যোগ্য মনে হতে শুরু করে, আর ভুলটি ঠিক সেই অবস্থা থেকেই আসে।

ফাইলের নামের আগে লেবেল পড়ুন

ফাইলের প্রথম লাইন তার নামের চেয়ে বেশি তথ্য দেয়, কারণ নাম মানুষের প্রথা আর লেবেল তৈরি করে টুলটি। Diffie-Hellman প্যারামিটার বহন করে BEGIN DH PARAMETERS এর একটি PEM লেবেল। OpenVPN স্ট্যাটিক কী সম্পূর্ণ ভিন্ন গঠন, তার নিজস্ব হেডার ও হেক্স পেলোড আছে।

নাম বদলালে কিছুই রূপান্তরিত হয় না। ta.key নামের প্যারামিটার ফাইল এখনও প্যারামিটার, আর dh.pem নামের স্ট্যাটিক কী এখনও স্ট্যাটিক কী; পার্সার বিষয়বস্তু পড়ে এবং অমিলটি প্রত্যাখ্যান করে। প্রোফাইল সম্পাদনার আগে যাচাই করুন:

head -n 1 dh.pem
head -n 1 ta.key

কোন ফাইল দরকার তা ঠিক করে তিনটি শর্ত

প্রথম শর্ত হলো এক্সচেঞ্জ। সসীম-ক্ষেত্রের Diffie-Hellman হ্যান্ডশেকের একটি গ্রুপ দরকার, আর dh নির্দেশিকাতেই সার্ভার তার প্যারামিটারের নাম দেয়। উপবৃত্তাকার-বক্র হ্যান্ডশেকের সেই ফাইল আদৌ দরকার নেই, কারণ বক্রটাই প্যারামিটার সেট। আপনার সার্ভার যদি কেবল ECDHE স্যুট নিয়ে দরকষাকষি করে, তবে DH ফাইল অতিরিক্ত শক্তি নয়, বরং মৃত ভার।

দ্বিতীয় শর্ত হলো কন্ট্রোল-চ্যানেল প্রমাণীকরণ, যা নিজস্ব উপাদানসহ আলাদা বৈশিষ্ট্য। tls-auth ফাইল হলো উভয় পক্ষের কাছে থাকা একটি যৌথ স্ট্যাটিক কী, যা কন্ট্রোল-চ্যানেল প্যাকেটে স্বাক্ষর করতে ব্যবহৃত হয় যাতে অপ্রমাণিত পক্ষ হ্যান্ডশেকই সম্পূর্ণ করতে না পারে। সসীম-ক্ষেত্রের DH ব্যবহার করুন বা না করুন, এটি থাকে, এবং গ্রুপ প্যারামিটারের সঙ্গে এর সম্পর্ক নেই।

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

প্রতিটি ভূমিকার জন্য সঠিক উপাদান তৈরি করুন

নির্দেশিকা যে ফরম্যাট আশা করে তা উৎপাদন করে এমন টুল ব্যবহার করুন, তাদের মধ্যে রূপান্তর নয়। OpenVPN 2.6-এ যৌথ কীটির জন্য জেনারেটরের টাইপযুক্ত রূপটি উদ্দেশ্যটি স্পষ্টভাবে বলে দেয়।

openvpn --genkey tls-auth ta.key

সেই কমান্ড নতুন গোপন উপাদান তৈরি করে; এটি বিদ্যমান কী মেরামত বা পরিদর্শন করে না, আর আবার চালালে আপনি ভিন্ন একটি কী পাবেন যা অন্য পক্ষগুলোর কাছে নেই। ফলাফল ফাইলটি যেসব পক্ষের দরকার তাদের কাছে এমন একটি চ্যানেলে কপি করুন যা আপনি যেকোনো যৌথ গোপন তথ্যের জন্য ব্যবহার করতেন, এবং দিকের প্রথাটি সামঞ্জস্যপূর্ণ রাখুন: tls-auth এর সঙ্গে এক পক্ষ key-direction 0 আর অন্য পক্ষ key-direction 1 ব্যবহার করে।

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

dh none কী করে আর কী করে না

dh none সংকীর্ণ অর্থের একটি প্রকৃত নির্দেশিকা: কোনো সসীম-ক্ষেত্র প্যারামিটার ফাইল লোড হবে না, কারণ হ্যান্ডশেক উপবৃত্তাকার-বক্র Diffie-Hellman ব্যবহার করে। এটি কিছু দুর্বল করার অর্থে “DH ধাপটি এড়িয়ে যাও” এর সংক্ষিপ্ত রূপ নয়, এবং এটি OpenVPN-কে অন্য কোনো ফাইল বিকল্প হিসেবে গ্রহণ করতে বলে না।

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

ভুল ফাইল আগেই ডিপ্লয় করা হলে

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

তারপর সেই দুটি ঘটনা আলাদা করুন যা মানুষ সাধারণত মিলিয়ে ফেলে। DH প্যারামিটার ফাইল প্রকাশ করা প্রায় নিরীহ, কারণ প্যারামিটার ডিজাইনেই প্রকাশ্য ছিল। tls-auth কী প্রকাশ করা ভিন্ন ঘটনা: কীটি তার অধিকারী প্রতিটি পক্ষের জন্য কন্ট্রোল-চ্যানেল প্যাকেট প্রমাণীকরণ করে, তাই প্রতিস্থাপন একটি হোস্টে নয়, পুরো ডিপ্লয়মেন্ট জুড়ে সমন্বিত করতে হবে।

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

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