چگونه اثر انگشت گواهی VPN را از یک کانال جداگانه بررسی کنیم
اثر انگشت تنها زمانی هویت را اثبات میکند که مقدار مورد انتظار از کانالی برسد که مهاجم بر آن کنترل ندارد. بررسی را به این ترتیب انجام دهید.
اثر انگشت تنها به اندازه کانالی معتبر است که به شما گفته چه انتظاری داشته باشید. اگر مقداری که با آن مقایسه میکنید از همان اتصالی آمده باشد که در حال آزمودن آن هستید، مقایسه چیزی بیش از این اثبات نمیکند که هر کس آن اتصال را کنترل میکند سازگار است. بررسی باید به ترتیب ثابتی اجرا شود و مرحله ناموفق باید شما را متوقف کند، نه اینکه به مرحله بعدی سوق دهد. این همان ترتیبی است که وقتی یک کلاینت VPN گزارش میدهد گواهی تغییر کرده است به کار میبرم.
پیش از نامگذاری مقدار، شیء را نامگذاری کنید
تصمیم بگیرید که مقدار مورد انتظار به گواهی برگ سرور، به CA صادرکننده یا به کلید عمومی درون برگ تعلق دارد. اینها سه بررسی متفاوت هستند و هر یک به شکلی متفاوت شکست میخورند. اثر انگشت CA که مطابقت دارد سرور را سنجاق نمیکند، و هش کلید عمومی آگاهانه از انتشار دوبارهای که همان کلید را نگه میدارد جان سالم به در میبرد.
الگوریتم را هم بنویسید. SHA-256 امروز انتظار عادی است، اما ابزارهای قدیمیتر اگر چیز دیگری نمیخواستید SHA-1 چاپ میکردند، و یک مقدار هگز 40 کاراکتری نشانه آن است که در آستانه مقایسه دو چیز متفاوت هستید.
مقدار مورد انتظار را از کانال دوم بگیرید
کانال دوم باید کانالی باشد که طرفی که از او مراقبت میکنید نتواند در آن بنویسد. سامانه تأمینی که از قبل در آن احراز هویت میکنید، سابقه چاپی در گاوصندوق، پایگاه داده پیکربندی یا سند امضاشدهای که فرایندی دیگر تحویل میدهد، همه واجد شرایطاند. پیام چت از یک همکار، صفحه پشتیبانی که از طریق نتیجه جستجو رسیده باشد، و هر چیزی که در ترمینالی که از قبل در آن اشکالزدایی میکنید چسبانده شود، واجد شرایط نیستند.
مقدار کامل و الگوریتم را بخواهید، هرگز پیشوند را. دونقطه و بزرگی یا کوچکی حروف اهمیتی ندارد، اما بریدن، بررسی 256 بیتی را به بازی حدس تبدیل میکند.
اگر هیچکس نتواند مقدار مورد انتظار را از منبعی مستقل ارائه کند، نتیجه صادقانه این است که این گواهی امروز قابل بررسی نیست. گفتن این بهتر از سنجاق کردن چیزی است که کلاینت همین حالا نشان داده، که هشدار را به عادت تبدیل میکند.
مقدار را در سمت خودتان استخراج کنید
برای یک فایل گواهی، فرمان openssl x509 -in server.crt -noout -fingerprint -sha256 است. خلاصه صریح اهمیت دارد: بدون آن، خروجی به نسخه OpenSSL شما بستگی دارد. نتیجه یک رشته هگز جداشده با دونقطه است، پس دونقطهها را حذف کنید و هر دو طرف را پیش از مقایسه به حروف کوچک ببرید.
برای نقطه پایانی که مستقیماً TLS صحبت میکند، متصل شوید و گواهی را از طریق لوله بیرون بکشید: openssl s_client -connect vpn.example.com:443 -servername vpn.example.com < /dev/null | openssl x509 -noout -fingerprint -sha256. این برای پنل مدیریت وب یا شنونده TLS کار میکند، نه برای OpenVPN که کانال کنترلش درون تونل قرار دارد. برای OpenVPN، گواهی را از پروفایل روی دیسک بخوانید، به جای اینکه بخواهید آن را از سوکت بگیرید.
مقایسه باید مکانیکی باشد. هر دو مقدار را با tr -d ':' و یکسانسازی حروف کوچک نرمال کنید، سپس کل رشته را مقایسه کنید. مقایسه چشمی همان راهی است که یک پیشوند مطابق، اختلاف در آخرین بایت را پنهان میکند. اگر رشتهها متفاوتاند، پیش از جستجوی توضیح، تفاوت را واقعی بدانید.
شرایط توقف
اگر شیء متفاوت است توقف کنید، زیرا اثر انگشت CA نمیتواند یک گواهی برگ را تبرئه کند و برگ نمیتواند CA را تبرئه کند. اگر الگوریتم متفاوت است توقف کنید، زیرا مقایسه مقدار SHA-1 با مقدار SHA-256 چیزی به شما نمیگوید. اگر اثر انگشت مطابقت دارد اما گواهی منقضی، باطلشده یا برای نامی دیگر صادر شده است توقف کنید؛ هش مطابق بررسی اعتبار نیست و زنجیره شکسته را ترمیم نمیکند. همچنین اگر شماره سریال با شماره سریال در سابقهای که با آن بررسی میکنید مطابقت ندارد توقف کنید، زیرا این ارزانترین راه برای دیدن یک گواهی جایگزینشده است.
اگر مقدار جدید از همان کانالی آمده که در حال آزمودنش بودید، توقف کنید. چرخش میتواند اثر انگشت را بهطور مشروع تغییر دهد، اما مقدار جانشین هنوز باید از فرایند مورد اعتماد بیاید، نه از کادر هشداری که پرسش را برانگیخت.
اگر اصلاح پیشنهادی خاموش کردن بررسی نام میزبان یا زنجیره است، توقف کنید. اثر انگشت قیدی به بررسیهای عادی میافزاید؛ آنها را جایگزین نمیکند مگر اینکه استقرار آگاهانه مدل فقط-سنجاق را برگزیده باشد، و آن انتخاب هزینههای عملیاتی خودش را دارد.
پس از مقایسه
ثبت کنید چه چیزی را مقایسه کردید، مقدار مورد انتظار از کجا آمد و چه زمانی. اگر گواهی دوباره صادر شده است، انتظار ذخیرهشده را از همان کانال مورد اعتماد بهروزرسانی کنید و شماره سریال جدید را یادداشت کنید، زیرا شماره سریال همان چیزی است که چرخش بعدی را قابل حسابرسی میکند.
سپس درباره محدودیتها شفاف باشید. اثر انگشت تأیید میکند که گواهیای که در دست دارید همانی است که کسی به شما گفته انتظارش را داشته باشید. درباره اینکه میزبان بهنفوذنرسیده است چیزی نمیگوید، و درباره اینکه سرویس ثبت میکند یا محدود میکند که این گواهی به چه چیزی دسترسی داشته باشد نیز چیزی نمیگوید.