گواهی خودامضا در برابر CA عمومی برای VPN: در واقع چه چیزی تغییر میکند
گواهیهای خودامضا و عمومی تونل VPN را به یک شکل رمزگذاری میکنند. تفاوت واقعی در این است که چه کسی ضامن سرور است و چه کسی باید به آن ادعا اعتماد کند.
به صفحهٔ گواهیها در یک راهاندازی VPN میرسید، یک گزینهٔ رایگان خودامضا کنار یک CA عمومی پولی میبینید، و پرسش مثل یک انتخاب امنیتی به نظر میرسد. در واقع انتخاب مخاطب است. هر دو گزینه تونل را با همان عناصر اولیه رمزگذاری میکنند، و هر دو اگر کلید خصوصی نشت کند بیارزش میشوند. آنچه آنها را جدا میکند این است که چه کسی ادعا دربارهٔ هویت سرور را مطرح میکند و چه کسی در موقعیتی است که بتواند آن ادعا را بررسی کند.
یک گواهی دو کار انجام میدهد که با هم اشتباه گرفته میشوند
یک گواهی یک کلید عمومی را به یک نام میبندد، و کلید کار رمزگذاری و امضا را انجام میدهد. امضای روی گواهی یک بیانیهٔ جداگانه است: مرجعی بررسی کرده است که نام متعلق به دارندهٔ این کلید است. یک گواهی خودامضا این بیانیه را دربارهٔ خودش صادر میکند، که اصلاً ادعای شخص ثالث نیست.
وبسایتهای عمومی به نسخهٔ شخص ثالث نیاز دارند، چون بازدیدکنندگان بدون رابطهٔ قبلی میآیند و به مخزن اعتماد مرورگر تکیه میکنند. کلاینت VPN غریبه نیست. شما به آن گواهی CA میدهید، یا گواهی سرور را داخل پروفایلی که نصب میکند پین میکنید، بنابراین بررسی دقیقاً در برابر مرجعی انجام میشود که خودتان انتخاب کردهاید. برای اینکه این بررسی معنایی داشته باشد، هیچ CA تجاری لازم نیست درگیر شود.
قدرت نشست حاصل از اندازهٔ کلید و مجموعهٔ رمز میآید، نه از امضاکننده. به همین دلیل نامیدن یک گواهی خودامضا به "رمزگذاری کمتر" صرفاً اشتباه است؛ ضمانت آن گستردهتر نیست، که ویژگی متفاوتی است.
کجا یک CA عمومی حقالزحمهاش را به دست میآورد
روشنترین مورد صفحهٔ مدیریت است. اگر همکاران، پیمانکاران یا هر کس دیگری بدون پروفایل آماده باید رابط وب سرور VPN را بدون هشدار مرورگر باز کند، یک گواهی مورد اعتماد عمومی آن اصطکاک را از میان برمیدارد. مرورگر از قبل به امضاکننده اعتماد دارد، پس چیزی برای وارد کردن و چیزی برای توضیح دادن وجود ندارد.
آن راحتی هزینههایی دارد که ارزش دارد پیش از خرید نام ببرید. تمدید باید خودکار شود وگرنه سایت طبق یک زمانبندی میشکند، گواهیهای عمومی نام میزبان را در گزارشهای شفافیت گواهی افشا میکنند، و محدودیتهای نرخ صدور اسکریپتی را که بیش از حد مشتاقانه دوباره تلاش میکند تنبیه میکنند. هیچیک از اینها دلیلی برای پرهیز از CA عمومی نیست، اما کاری عملیاتی است که یک CA خصوصی آن را جای دیگری میبرد.
چیزی که یک گواهی عمومی انجام نمیدهد احراز هویت کاربران شماست. هویت کلاینت تصمیم جداگانهای است که با گواهیهای کلاینت، گذرواژهها یا عامل دوم گرفته میشود، و CA که سرور را امضا میکند هیچ چیزی دربارهٔ اینکه چه کسی مجاز است به آن متصل شود نمیگوید.
کجا یک CA خصوصی برای VPN مناسب است
برای یک VPN خصوصی با مجموعهٔ شناختهشدهای از کلاینتها، اجرای CA خودتان انتخاب متعارف است. CA را یک بار ایجاد میکنید، گواهی سرور را با نامی که کلاینتها استفاده خواهند کرد امضا میکنید، و گواهی CA را داخل هر پروفایل توزیع میکنید. سپس هر کلاینت سرور را در برابر مرجع شما بررسی میکند، و هیچ طرف بیرونی نام میزبان را نمیآموزد.
هزینهها واقعی اما محدودند. مرورگرها وقتی کسی صفحهٔ مدیریت را مستقیم باز میکند هشدار میدهند، چون مرورگر دلیلی برای اعتماد به CA شما ندارد. توزیع پروفایل بخشی از فرایند ورود میشود، و چرخش CA یعنی دست زدن به هر کلاینت. اینها قیمتهای قابلقبولی برای سرویسی با ده یا پنجاه کاربر شناختهشدهاند و برای یک نقطهٔ پایانی عمومی با هزاران کاربر دردناک.
یک شرط کل چیدمان را معتبر میکند: بررسی باید اتفاق بیفتد. کلاینتی که برای نادیده گرفتن خطاهای گواهی پیکربندی شده هر سروری را که هر گواهیای ارائه دهد میپذیرد، پس تضمین هویت از بین میرود در حالی که رمزگذاری باقی میماند. همان تنظیم، ضعف واقعی در بیشتر داستانهای "خودامضا ناامن است" است.
کلید خصوصی CA تعیین میکند بعداً چه کاری میتوانید بکنید
غافلگیری معمولاً ماهها بعد میرسد، وقتی میخواهید دستگاهی اضافه کنید. صدور گواهی کلاینت به کلید خصوصی CA نیاز دارد، و تولید فهرست ابطال هم. اگر سروری را به ارث بردهاید که فایلهای گواهی و کلید را دارد اما کلید CA را ندارد، نمیتوانید چیزی تازه امضا کنید. گزینههای شما بازسازی PKI و دادن گواهی CA جدید به هر کلاینت است، یا رفتن به احراز هویت با گذرواژه، که مدل امنیتی دیگری است و از دست رفته را بازنمیگرداند.
دو تلهٔ کوچکتر در همان قلمرو زندگی میکنند. اسکریپتهای easy-rsa فرض میکنند در پوشهای ایستادهاید که آنها را نگه میدارد، پس خطای فایل گمشده معمولاً یعنی مکان اشتباه نه نصب آسیبدیده. و طراحی فقط مبتنی بر گواهی کاملاً مشروع است: میتوانید گواهیهای کلاینت را بدون کلید از پیش به اشتراک گذاشتهشده الزامی کنید، به شرط اینکه هر کلاینت یکی داشته باشد و سرور زنجیره را بررسی کند.
برای هر دستگاه یک گواهی صادر کنید نه یک گواهی کلاینت مشترک برای کل تیم. آنگاه یک لپتاپ گمشده برای شما یک ابطال هزینه دارد نه صدور دوباره برای همه.
بررسی کنید چه چیزی به ارث بردهاید
پیش از برنامهریزی هر تغییری، گواهیای را که از قبل دارید بخوانید:
$ openssl x509 -in server.crt -noout -subject -issuer -dates
subject=CN = vpn.example.net
issuer=CN = vpn.example.net
notAfter=Nov 3 09:00:00 2027 GMT
$ openssl verify -CAfile ca.crt server.crt
server.crt: OK
اگر صادرکننده با موضوع برابر باشد، گواهی خودامضاست، که یک انتخاب طراحی است نه نقص. تاریخها به شما میگویند تمدید کِی به مشکل کسی تبدیل میشود، و بررسی موفق در برابر CA که قصد دارید توزیع کنید تأیید میکند زنجیره پیش از آنکه یک کلاینت امتحانش کند کار میکند.
سپس بر اساس مخاطب و توزیع انتخاب کنید: CA عمومی وقتی مرورگرهای ناشناس باید به صفحهٔ مدیریت اعتماد کنند، CA خصوصی وقتی هر کلاینت پروفایلی را دریافت میکند که شما کنترلش میکنید. هیچکدام از دو پاسخ بیشتر از دیگری رمزگذاری نشده است.