فایل DH یا کلید tls-auth؟ تفکیک دو فایل OpenVPN
یکی از فایلها پارامترهای عمومی گروه را نگه میدارد و دیگری مادهٔ سرّی مشترک است. سه شرط تعیین میکند هرکدام به کدام دستور تعلق دارد.
دو فایل، دو دستور و عادت نامگذاری هر دو به نام چیزی که پیکربندی میکنند. اینگونه dh.pem سر از خط tls-auth درمیآورد و کلاینت با پیامی دربارهٔ قالب غیرمنتظرهٔ کلید شکست میخورد. تصمیمی که پیش روی شماست این نیست که کدام فایل قویتر است. این است که استقرار واقعاً به کدام نقش نیاز دارد، و سه شرط آن را روشن میکند: پشتهٔ TLS شما کدام تبادل کلید را مذاکره خواهد کرد، آیا اصلاً احراز هویت کانال کنترل را میخواهید، و آیا ماده باید سرّی بماند.
به آنها به ترتیب پاسخ دهید و پرسش فایل خودش پاسخ میگیرد. اگر از آنها بگذرید، نام دستورها بهنظر قابلتبدیل میآیند، و این دقیقاً همان حالتی است که اشتباه از آن برمیخیزد.
برچسب را پیش از نام فایل بخوانید
خط اول فایل از نامش آگاهیبخشتر است، چون نام یک قرارداد انسانی است و برچسب را ابزار تولید میکند. پارامترهای Diffie-Hellman برچسب PEM BEGIN DH PARAMETERS را حمل میکنند. کلید ایستای 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 کارآمد است، و همان چیزی است که سه شرط تمام مدت به آن اشاره میکردند.