برای اینکه کاربران ما نسبت به ایمنی دادههایشان در برابر دیواره GFW مطمئن باشند، ما میبایست دادههای شان را با پروتکلهای TLS و یا XTLS رمزنگاری کنیم. برای این رمزنگاری ما نیاز خواهیم داشت که بر روی سرور لینوکسی خود کلیدهای رمزنگاری یا certificate داشته باشیم. در این مستند شرح خواهیم داد که این کلیدها چگونه ساخته خواهند شد.
برای ساخت کلید رمزنگاری دو روش Self-Signed
و Let's Encrypt
را شرح خواهیم داد. پیشنهاد ما این هست که از روش Let's Encrypt
برای تهیه certificate استفاده کنید تا احتمال مسدود شدن سرور شما کمتر شود.
گرفتن کلید رمزنگاری معتبر از Let's Encrypt نیاز به خرید domain واقعی دارد. مزیت استفاده از certificate معتبر این میباشد که ترافیک داده به سرور شما رمزنگاری شده و از منظر دیوار فیلترینگ شبیه ترافیک عادی وب خواهد بود. همچنین از آنجایی که زنجیره certificate تولید شده توسط Let's Encrypt
معتبر است، این اطمینان را خواهیم داشت که احتمال شنود (Man in the middle attack) توسط سیستم فیلترینگ به حداقل خواهد رسید.
برای ساخت certificate با Let's Encrypt
نیاز به تهیه یک domain
دارید. دامنه و یا domain
به زبان ساده میشود آدرسی که در مرورگر وارد میکنید تا به یک وبسایت مراجعه نمایید. مثلا google.com یک دامنه است.
پولی: خرید دامنه فرایند بسیار سادهای دارد. شرکتهایی مثل GoDaddy، Namecheap و یا CloudFlare به شما کمک میکنند یک دامنه شخصی تهیه کنید. در خرید دامنه توجه کنید که استفاده از پسوندهای معروفتر مثل com یا net و یا org احتمال فیلتر شدن دامنه را کاهش میدهد. معمولا قیمت خرید دامنه سالانه چیزی در حدود ۱۰ دلار هزینه خواهد داشت.
رایگان: البته شما میتوانید دامنه را به صورت رایگان از freenom هم تهیه کنید اما دامنههای تهیه شده از freenom دارای پسوندهای خاص و کمکاربردی مثل tk هستند که احتمال فیلتر شدن سرور شما را افزایش می دهد.
بعد از خرید دامنه باید با اعمال تغییرات DNS و افزودن رکورد A نگاشتی بین نام دامنه و آدرس IP خودتان برقرار کنید. اگر از CloudFlare استفاده میکنید، استفاده از proxy را غیر فعال کنید. عکس زیر نحوه اعمال تنظیمات DNS را در پنل CloudFlare نشان میدهد. دقت کنید که رکورد A انتخاب شده، آدرس IP سرور مشخص شده و استفاده از proxy غیرفعال شده. نحوه اعمال تنظیمات در باقی شرکت ها هم کم و بیش شبیه همین می باشد.
اگر همه چی خوب پیش رفته باشد، در گام آخر باید بتوانیم به جای استفاده از IP، با استفاده از نام domain به پنل X-UI برویم.
پیش از طی مراحل بعدی، اطمینان حاصل کنید که پورت 80 بر روی سرور لینوکسی شما باز میباشد. برای باز کردن پورت میتوانید به مقاله ما در مورد باز کردن پورت رجوع کنید تا پورت 80 را باز کنید. اپلیکیشن certbot نیاز دارد تا اطلاعات کلید را از روی پورت 80 دریافت کند.
ابتدا با دستور زیر، سطح اختیارات را بالا میبریم.
sudo -i
با دستور زیر، بانک اطلاعاتی اپلیکیشنهای لینوکس را به روز میکنیم.
apt update -y && apt upgrade -y
حالا certbot را نصب میکنیم تا بتوانیم به لطف پروژه Let's Encrypt کلیدهای معتبر TLS بسازیم.
apt-get install certbot
بعد از نصب، دستور زیر را اجرا کنید تا کلیدهای رمزنگاری بر روی سیستم شما ساخته شود. در دستور پایین، از دامنه فرضی iran-free-xray.com استفاده کردهایم. شما باید این مقادیر را تغییر دهید و نام دامنهای که انتخاب میکنید باید مطابق با دامنهای باشد که خریداری کردهاید.
certbot certonly --standalone -d iran-free-xray.com --register-unsafely-without-email --non-interactive --agree-tos
در حین صدور certificate، سوال زیر در مورد اشتراک گذاری اطلاعات پرسیده میشود. می توانید N
را وارد کنید تا اطلاعات شما محفوظ بماند.
⭐
اگر با خطای زیر مواجه شدید، احتمالا به این خاطر هست که پورت 80
را باز نکردهاید. برای باز کردن پورت میتوانید به مقاله ما در مورد باز کردن پورت رجوع کنید تا پورت 80
را باز کنید.
اگر همه چیز خوب پیش رفته باشد، باید پیغامی شبیه زیر دریافت کنید. همانطور که در عکس میبینید، آدرس فایلهایی certificate به شما نشان داده شدهاند. هم آدرس fullchain.pem
و هم آدرس privkey.pem
را کپی کنید و دم دست داشته باشید. ما به آدرس این فایلها نیاز خواهیم داشت تا بتوانیم Trojan
و یا VLESS+XTLS
را بسازیم.
از این لحظه به بعد، برای باز کردن پورتال در مرورگر به جای استفاده از http://ip:port
باید از دامنه برای باز کردن پورتال استفاده کنید. مثلا اگه دامنه شما iran-free-xray.com باشد و از پورت 34567 استفاده میکنید، باید از این به بعد از آدرس http://iran-free-xray.com:34567
استفاده کنید.
اگر به ایراد دسترسی به فایلهای certificate برخوردید (موارد خیلی نادر) یه سر به این مقاله بزنید تا مشکل دسترسی رو حل کنید. ایرادهای دسترسی به سرتیفیکیت معمولا با این پیغام ظاهر میشه (که البته ممکنه دلایل دیگه هم داشته باشه:
Fail to detect internet connection io read/write on closed pipe
تمام. از آدرس دامنه استفاده کنید تا به پورتال بروید و ادامه را از مقاله ساخت کانفیگ دنبال کنید.
دقت کنید certificate هایی که توسط Let's Encrypt تولید کردهاید، فقط به مدت ۹۰ روز معتبر هستند. پیش از منقضی شدن certificate ها لازم خواهید داشت تا مجددا گام پنجم را انجام دهید تا certificate های جدید صادر شود. به جز صدور certificate های جدید، نیازی به انجام هیچگونه تغییر دیگری در تنظیمات نخواهیم داشت.
این روش، پیشنهاد گروه تیم امید نیست. استفاده از certificate های self-signed
سادهتر بوده اما غیرایمن است و احتمال مسدود شدن server
شما را هم افزایش خواهد داد.
با دستور زیر، سطح اختیارات را بالا میبریم.
sudo -i
با دستور زیر، بانک اطلاعاتی اپلیکیشنهای لینوکس را به روز میکنیم.
apt update && apt upgrade -y
با دستور زیر، openssl را نصب میکنیم.
apt-get install openssl
با دستور زیر، کلیدهای رمزنگاری را بر روی سیستم تعریف میکنیم. دستور زیر دو فایل به نام privkey.pem
و fullchain.pem
بر روی سرور شما ایجاد میکند.
openssl req -x509 -newkey rsa:4096 -keyout privkey.pem -out fullchain.pem -sha256 -days 365 -nodes
دستور قبلی، سوالهایی را از شما میپرسد. نیازی به پاسخ دادن هیچ کدام از سوالها نیست مگر برای سوال Common Name که نام دامنه را از شما میپرسد.
در تصویر فوق مشاهده میکنید که ما از دامنه فرضی iranxray.hope.com استفاده کرده ایم. شما میتوانید هر نام دلخواهی را استفاده کنید. این دامنه را یادداشت کنید، چون در حین ساخت VLESS و Trojan به آن نیاز خواهیم داشت.
با دستور زیر، به X-UI دسترسی خواهیم داد که فایلهای ساخته شده برای رمزنگاری استفاده کند.
chmod ugo+rwx fullchain.pem
chmod ugo+rwx privkey.pem
حال دو فایل بر روی سیستم شما ساخته شده. برای گرفتن آدرس کامل فایل certificate دستور زیر را وارد کنید. نتیجه را یادداشت نمایید چون باید این آدرس را باید در X-UI وارد نمایید.
echo "$(pwd)/fullchain.pem"
و برای گرفتن آدرس کامل کلید خصوصی دستور زیر را وارد کنید. نتیجه را یادداشت نمایید چون باید این آدرس را باید در X-UI وارد نمایید
echo "$(pwd)/privkey.pem"
تمام. برای راهاندازی پروتکلهای VLESS و Trojan به دامنه و آدرس فایلهایی که در مراحل قبل یادداشت کردید، نیاز خواهیم داشت. ادامه را از مقاله ساخت کانفیگ دنبال کنید