اتصال از طریق نام دامنه
سرور بهصورت پیشفرض از یک گواهی خودامضا با نامی ساختگی استفاده میکند و کلیدهای دسترسی آن به آدرس IP سرور اشاره دارند. با اختصاص یک نام دامنه اختصاصی با گواهی معتبر، اتصال به سرور درست مانند باز کردن یک وبسایت معمولی به نظر میرسد.
مزایای استفاده از دامنه
کلیدهایی که بعد از این تغییر ساخته میشوند، حاوی دامنه خواهند بود. اپلیکیشنها هنگام اتصال، دامنه را بررسی کرده و گواهی سرور را مانند مرورگر تایید میکنند؛ بنابراین اگر آدرس IP سرور تغییر کند، فقط کافیست دامنه را به IP جدید متصل کنید تا کلیدها بدون مشکل کار کنند.
کلیدها همچنان شامل آدرسهای IP سرور نیز هستند، تا اگر اپلیکیشنی نتوانست دامنه را بررسی کند، مانند قبل متصل شود.
پیشنیازها
- یک دامنه یا سابدامنه در اختیار شما، مانند
vpn.example.com. از یک نام مشخص استفاده کنید، نه دامنه wildcard. - یک رکورد DNS که به IP اتصال سرور اشاره کند: رکورد A، و اگر سرور آدرس IPv6 دارد رکورد AAAA. رکورد را مستقیماً به سرور متصل کنید، نه از طریق پروکسی CDN.
- روی سرور مدیریتشده، پورت TCP
80باید در تمام مدت استفاده از دامنه باز باشد: بررسی و تمدید خودکار گواهی هر چند ماه یکبار از طریق این پورت انجام میشود.
روی سرور مدیریتشده
- در VpnHood! MANAGER، بخش Server Farms و سپس فارم مورد نظر را باز کنید. در بخش SSL / TLS Certificates، گزینه Add را انتخاب کرده، دامنه را در Domain Name وارد کنید و Create را بزنید. MANAGER یک گواهی خودامضا برای آن ایجاد کرده و باز میکند.
- بخش Signing را ویرایش کرده و AutoSign را انتخاب کنید. MANAGER از Let's Encrypt درخواست گواهی میکند که دامنه را از طریق پورت TCP
80سرور بررسی میکند. پس از تکمیل، وضعیت Signature به CA Signed تغییر میکند و MANAGER گواهی را پیش از انقضا بهطور خودکار تمدید خواهد کرد. - سپس Visibility را ویرایش کرده و PublicInToken را انتخاب کنید. اکنون تمام کلیدهای فارم شامل دامنه خواهند بود و گواهی قبلی فارم به Public تغییر مییابد.
کلیدهایی که از این پس از MANAGER کپی میکنید دارای دامنه هستند. اپلیکیشنهایی که کلید قدیمی دارند به دلیل فعال بودن پیشفرض Push token to clients، هنگام اتصال کلید جدید را دریافت میکنند. تا آن زمان گواهی قبلی فارم را حذف نکنید: کلیدهای قدیمی فقط تا زمان حضور آن کار میکنند.
اگر بررسی با خطا مواجه شود، علت آن در Signing نمایش داده میشود و پس از چند تلاش ناموفق به حالت Manual بازمیگردد. رکورد DNS را اصلاح کنید یا پورت را باز بگذارید، سپس دوباره AutoSign را انتخاب کنید.
برای بررسی، فارم را باز کنید: در بخش Access Points، دامنه در ابتدای لیست نمایش داده میشود.
صفحه اختصاصی هر سرور نیز دارای فهرست SSL / TLS Certificates است. گواهی موجود در آن بخش فقط متعلق به همان سرور است، بنابراین دامنهای را که میخواهید در کلیدها قرار گیرد به فارم اضافه کنید.
روی سرور مستقل
یک سرور مستقل نمیتواند بهتنهایی گواهی دریافت کند. از یک مرجع صدور گواهی، یک گواهی برای دامنه در قالب فایل PFX به همراه کلید خصوصی آن تهیه کنید و آن را با همان نام جایگزین /opt/VpnHoodServer/storage/access/certificates/default.pfx نمایید.
سپس رمز عبور فایل را در SslCertificatesPassword قرار دهید و IsValidHostName را روی true تنظیم کنید؛ هر دو مورد زیر FileAccessManager در /opt/VpnHoodServer/storage/appsettings.json قرار دارند. در نصب جدید چنین فایلی وجود ندارد: آن را ایجاد کنید، و از آن پس سرور به جای تنظیمات اولیه نصب، از این فایل استفاده میکند.
کل فایل، با رمز عبور گواهی شما به جای مقدار نمونه
{
"FileAccessManager": {
"SslCertificatesPassword": "your-pfx-password",
"IsValidHostName": true
},
"ServerConfig": {
"LogAnonymizer": true,
"AddListenerIpsToNetwork": "*"
},
"LogLevel": "Information"
}
سرور دامنه را مستقیماً از خود گواهی استخراج میکند، بنابراین تنظیمی برای آن وجود ندارد.
سرور را با sudo systemctl restart VpnHoodServer، یا در Docker با sudo docker restart VpnHoodServer مجدداً راهاندازی کنید. با وارد کردن رمز عبور اشتباه، سرور اجرا نمیشود و در لاگ آن عبارت The server could not start. نمایش داده خواهد شد.
کلیدهایی که پیش از این تغییر ساخته شدهاند از کار میافتند، زیرا انتظار گواهی قبلی را دارند. هر کدام از آنها را مجدداً چاپ (Print) کنید و کلید جدید را در اختیار کاربران خود قرار دهید: تنظیمات و میزان مصرف آن بدون تغییر باقی میماند. شناسه (ID) هر کلید، همان نام فایل آن در /opt/VpnHoodServer/storage/access بدون پسوند .token2 است.
فهرست کردن کلیدها و سپس چاپ مجدد یکی از آنها بر اساس ID
sudo ls /opt/VpnHoodServer/storage/access
sudo /opt/VpnHoodServer/vhserver print 2b9d4a6e-1c3f-4e8a-9b7d-5f0e8c2a1d34
در Docker، همین مراحل را مانند vhserver gen از طریق sudo docker exec VpnHoodServer /app/vhsupervisor اجرا کنید.
کلیدهای جدید حاوی دامنه هستند و دیگر به خود گواهی وابسته نیستند؛ بنابراین با تمدید گواهی همچنان کار خواهند کرد: کافی است فایل جدید را جایگزین کرده و سرور را ریاستارت کنید.