Easy-RSA میگوید PKI وجود ندارد؟ دارد جای دیگری را نگاه میکند
نبودن کلید CA یا index.txt معمولاً یعنی Easy-RSA 3 پوشه دیگری را انتخاب کرده است. اول انتخابگر PKI، اولویت و اثر انگشت صادرکننده را بررسی کنید.
دستور با نبودن ca.crt یا نبودن index.txt متوقف میشود، در حالی که CA ماههاست گواهی صادر میکند. در خود مرجع چیزی تغییر نکرده است؛ دستور فقط جای دیگری را نگاه کرده است. Easy-RSA 3 پوشه PKI را از یک گزینه، یک متغیر محیطی، یک فایل vars و یک مقدار پیشفرض داخلی تعیین میکند و هر کدام از اینها میتواند به دور از مرجع استقرار اشاره کند. پیش از ساختن هر چیزی بررسی کنید کدام برنده شده است.
خطا نام یک فایل را میآورد، نه یک پوشه را
پوشه نصب و پوشه صادرکننده دو جای متفاوت هستند. پیدا کردن easyrsa روی ماشین فقط ثابت میکند که ابزار نصب شده است، نه اینکه مرجعی را که VPN شما به آن اعتماد دارد پیدا کرده باشد.
به همین دلیل نصب دوباره بسته یا اجرای دوباره گام init مولد به نظر میرسد و هیچ چیز را تغییر نمیدهد.
پیش از هر چیز انتخابگر را بررسی کنید
در Easy-RSA 3 انتخابگر EASYRSA_PKI یا گزینه متناظر --pki-dir است. یک مسیر مطلق بدهید، مثل --pki-dir=/srv/pki/office ، و پاسخ دیگر به این وابسته نیست که تصادفاً کجا ایستاده بودید. همین یک عادت یک طبقه کامل از این باگ را حذف میکند، بهویژه برای اسکریپتهایی که از cron یا از یک checkout CI اجرا میشوند.
اول نسل را تأیید کنید ، چون عادت Easy-RSA 2 با یک فایل vars بهعلاوه build-key مدلی متفاوت از مدلی است که Easy-RSA 3 انتظار دارد. easyrsa --version نسل را پیش از هر کار دیگری چاپ میکند، و ./easyrsa --help زیردستورها را فهرست میکند: یک هدف build-key یعنی 2.x، در حالی که build-client-full یعنی 3.x. بردن یک مسیر KEY_DIR قدیمی به فراخوانی 3.x چون نام پوشه آشنا به نظر میرسد دقیقاً همین خطا را تولید میکند.
اگر رشته نسخه و نحو دستور با هم توافق ندارند، متوقف شوید و مستندات نسخه نصبشده را بخوانید.
اولویت توضیح میدهد چرا یک فایل vars بازنده شد
اولویت مستندشده گزینه خط فرمان، سپس محیط، سپس فایل vars، سپس مقدار پیشفرض داخلی است. بنابراین یک مقدار درست در vars به یک متغیر محیطی بهارثرسیده میبازد، و این نسخه خاموش این شکست است. متغیرهای موردنظر و انتخاب فایل را بررسی کنید، نه اینکه کل محیط را در یک تیکت بریزید. تفاوت میان این دو معمولاً یک راز است.
زنجیره را به ترتیب طی کنید و یادداشت کنید کدام منبع مسیری را داده که دستور استفاده کرده است. وقتی این را دانستید، اصلاح یک پرچم یا یک export است، نه یک مرجع صدور گواهی جدید.
مرجع پیکربندی Easy-RSA انتخابگر و اولویت را تعریف میکند، و همین استنادی است که باید در تیکت گذاشته شود.
صادرکننده را با مواد عمومی تأیید کنید
با صادرکننده معمول مبتنی بر فایل، ca.crt را بخوانید و اثر انگشت آن را با رکورد صادرکنندهای که تأیید کردهاید تطبیق دهید. نام موضوع منطبق شاهد هویت نیست، و پوشهای به نام production هم نیست. تنها اثر انگشت است که فایل پیداشده را به مرجعی پیوند میدهد که به همتاهای شما گفته شده به آن اعتماد کنند.
یک بررسی فقطخواندنی کافی است: openssl x509 -in /srv/pki/office/ca.crt -noout -subject -issuer -serial -fingerprint -sha256.
سپس نقش پوشه را مشخص کنید. پوشه درخواستی که یک کلاینت استفاده میکند پایگاه داده صادرکننده نیست، و کلید امضایی که آفلاین نگه داشته میشود هیچ کاری در هر میزبان VPN ندارد. نبودن ca.key در آن چیدمان یک ویژگی طراحی است، نه اجازه برای اختراع یک مرجع جایگزین.
اگر وضعیت واقعاً از بین رفته است
گاهی مسیر درست است و وضعیت واقعاً آنجا نیست. یک index.txt خالی و یک شمارنده سریالی راهاندازیشده دوباره به شما PKIای میدهد که سالم به نظر میرسد و نمیتواند چیزی درباره گواهیهایی که هرگز ندیده اثبات کند: تمدیدها گواهیهای قدیمی را لغو نمیکنند و شمارههای جدید با تاریخچه تصادم میکنند. بهجای آن از نسخه پشتیبان تأییدشده CA بازیابی کنید، چون راهاندازی یک PKI خالی در جای دیگر فقط خطا را جابهجا میکند و یک مرجع دوم و بیربط باقی میگذارد.
وقتی مسیر و صادرکننده توافق کردند، شکست بعدی را بر اساس ماهیتش بررسی کنید. Permission denied، کلید امضایی که به عبارت عبورش نیاز دارد، و رکورد صدور گمشده سه نقص متفاوت هستند و فقط یکی از آنها درباره پوشهای است که همین حالا اصلاح کردید.
هرگز رمزنگاری کلید را برندارید و مجوزهای پوشه را گسترش ندهید تا یک اشتباه مسیر را بپوشانید. اشتباه ارزان اصلاح میشود؛ تعمیر نه.