Skip to content

Latest commit

 

History

History
163 lines (94 loc) · 12.1 KB

create-tls-certificate.md

File metadata and controls

163 lines (94 loc) · 12.1 KB

ساخت TLS Certificate

برای اینکه کاربران ما نسبت به ایمنی داده‌های‌شان در برابر دیواره GFW‌ مطمئن باشند، ما می‌بایست داده‌های شان را با پروتکل‌های TLS و یا XTLS رمزنگاری کنیم. برای این رمزنگاری ما نیاز خواهیم داشت که بر روی سرور لینوکسی خود کلیدهای رمزنگاری یا certificate داشته باشیم. در این مستند شرح خواهیم داد که این کلیدها چگونه ساخته خواهند شد.

برای ساخت کلید رمزنگاری دو روش Self-Signed و Let's Encrypt را شرح خواهیم داد. پیشنهاد ما این هست که از روش Let's Encrypt برای تهیه certificate‌ استفاده کنید تا احتمال مسدود شدن سرور شما کمتر شود.

ساخت کلید رمزنگاری معتبر با استفاده از Let's Encrypt

گرفتن کلید رمزنگاری معتبر از Let's Encrypt نیاز به خرید domain واقعی دارد. مزیت استفاده از certificate معتبر این می‌باشد که ترافیک داده به سرور شما رمزنگاری شده و از منظر دیوار فیلترینگ شبیه ترافیک عادی وب خواهد بود. همچنین از آنجایی که زنجیره certificate تولید شده توسط ‍‍‍‍Let's Encrypt معتبر است، این اطمینان را خواهیم داشت که احتمال شنود (Man in the middle attack) توسط سیستم فیلترینگ به حداقل خواهد رسید.

گام صفر

برای ساخت certificate با Let's Encrypt نیاز به تهیه یک domain دارید. دامنه و یا domain به زبان ساده می‌شود آدرسی که در مرورگر وارد می‌کنید تا به یک وب‌سایت مراجعه نمایید. مثلا google.com یک دامنه است.

image

پولی: خرید دامنه فرایند بسیار ساده‌ای دارد. شرکت‌هایی مثل GoDaddy، Namecheap و یا CloudFlare به شما کمک می‌کنند یک دامنه شخصی تهیه کنید. در خرید دامنه توجه کنید که استفاده از پسوند‌های معروف‌تر مثل com یا net و یا org احتمال فیلتر شدن دامنه را کاهش می‌دهد. معمولا قیمت خرید دامنه سالانه چیزی در حدود ۱۰ دلار هزینه خواهد داشت.

رایگان: البته شما می‌توانید دامنه را به صورت رایگان از freenom هم تهیه کنید اما دامنه‌های تهیه شده از freenom دارای پسوند‌های خاص و کم‌کاربردی مثل tk هستند که احتمال فیلتر شدن سرور شما را افزایش می دهد.

بعد از خرید دامنه باید با اعمال تغییرات DNS و افزودن رکورد A نگاشتی بین نام دامنه و آدرس IP خودتان برقرار کنید. اگر از CloudFlare استفاده می‌کنید، استفاده از proxy را غیر فعال کنید. عکس زیر نحوه اعمال تنظیمات DNS را در پنل CloudFlare نشان می‌دهد. دقت کنید که رکورد A انتخاب شده، آدرس IP سرور مشخص شده و استفاده از proxy غیرفعال شده. نحوه اعمال تنظیمات در باقی شرکت ها هم کم و بیش شبیه همین می باشد.

image

اگر همه چی خوب پیش رفته باشد، در گام آخر باید بتوانیم به جای استفاده از 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 را وارد کنید تا اطلاعات شما محفوظ بماند.

image

⭐ اگر با خطای زیر مواجه شدید، احتمالا به این خاطر هست که پورت 80‍ را باز نکرده‌اید. برای باز کردن پورت می‌توانید به مقاله ما در مورد باز کردن پورت رجوع کنید تا پورت 80 را باز کنید.

image

گام ششم

اگر همه چیز خوب پیش رفته باشد، باید پیغامی شبیه زیر دریافت کنید. همانطور که در عکس می‌بینید، آدرس فایل‌هایی certificate به شما نشان داده شده‌اند. هم آدرس fullchain.pem و هم آدرس privkey.pem را کپی کنید و دم دست داشته باشید. ما به آدرس این فایل‌ها نیاز خواهیم داشت تا بتوانیم Trojan و یا VLESS+XTLS را بسازیم.

image

گام هفتم

از این لحظه به بعد، برای باز کردن پورتال در مرورگر به جای استفاده از http://ip:port باید از دامنه برای باز کردن پورتال استفاده کنید. مثلا اگه دامنه شما iran-free-xray.com باشد و از پورت 34567‌ استفاده می‌کنید، باید از این به بعد از آدرس http://iran-free-xray.com:34567 استفاده کنید.

image

اگر به ایراد دسترسی به فایل‌های certificate برخوردید (موارد خیلی نادر) یه سر به این مقاله بزنید تا مشکل دسترسی رو حل کنید. ایرادهای دسترسی به سرتیفیکیت معمولا با این پیغام ظاهر میشه (که البته ممکنه دلایل دیگه هم داشته باشه:

Fail to detect internet connection io read/write on closed pipe

تمام. از آدرس دامنه استفاده کنید تا به پورتال بروید و ادامه را از مقاله ساخت کانفیگ دنبال کنید.

نکته آخر

دقت کنید certificate هایی که توسط Let's Encrypt تولید کرده‌اید، فقط به مدت ۹۰ روز معتبر هستند. پیش از منقضی شدن certificate ها لازم خواهید داشت تا مجددا گام پنجم را انجام دهید تا certificate های جدید صادر شود. به جز صدور certificate های جدید، نیازی به انجام هیچ‌گونه تغییر دیگری در تنظیمات نخواهیم داشت.

ساخت کلید رمزنگاری به روش Self-Signed

این روش، پیشنهاد گروه تیم امید نیست. استفاده از 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 که نام دامنه را از شما می‌پرسد.

image

در تصویر فوق مشاهده می‌کنید که ما از دامنه فرضی 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 به دامنه و آدرس فایل‌هایی که در مراحل قبل یادداشت کردید، نیاز خواهیم داشت. ادامه را از مقاله ساخت کانفیگ دنبال کنید