امن کردن ریکوئست‌های وب‌سایت

پروتکل HTTPS
پروتکل HTTPS

اهمیت امن کردن درخواست‌ها

زمانی که کاربران شما از سایتتون استفاده می‌کنن، خیلی مهمه که ارتباطشون با سرور امن باشه. از جمله دلایل این مسئله میشه به این اشاره کرد که کاربراتون اطلاعات حساسی مثل مشخصات بانکی و غیره رو سمت سرور شما میفرستن. این اطلاعات باید با حداقل رمزنگاری ارسال بشه. برای اینکار، باید ریکوئست‌ها، دور یه لایه‌ی امنیتی پیچیده بشن تا اطلاعات رمزنگاری بشه و سمت سرور دریافت بشه. اینجاست که اهمیت پروتکل HTTPS مشخص میشه. این پروتکل، که کنار آدرس سایت قرار میگیره، زمانی خودش رو نشون میده که تماس از طریق لایه‌های SSL بسته‌بندی میشه.

لازم به ذکر که SSL صرفا جز شروط لازم برای امنیت سایت به حساب میاد و نه شرط کافی! امنیت سایت‌ها با موضوعات پیچیده‌تری برقرار میشه که نیاز به توضیحات بیشتری هست.

توضیح عمومی

SSL پروتکلیه که مستقیما روی TCP فعالیت میکنه. TCP مجموعه‌ای از پروتکل‌هایی هستن که برای ارتباط بین اینترنتی استفاده میشن. TCP کمک میکنه تا ارتباطات به ترتیب و کنترل شده (رفع ارور یا صرفا مدیریت ارور) دریافت و ارسال بشن. SSL روی UDP هم کار میکنه. UDP پروتکلی مشابه TCP هست با یکسری تفاوت‌ها که مثلا ارورها توش کنترل نمیشن. (UDP برای استریم دیتا خیلی خوبه!).

به خاطر اینکه SSL مستقیم رو TCP کار میکنه، بسته‌ها یا دیتاهایی که روی HTTP هم ارسال میشن، میتونن امن بشن. با این حال، HTTPS گزینه‌ی بهتری برای اینکار هست که الان توضیح میدم.

زمانی که از SSL (و همینطور نسخه جدیدترش TLS) درست استفاده میکنید، تمام چیزی که هکرها میتونن ببینن، اینه که به چه IP و پورتی متصل شدید (در بهترین حالت چقدر دیتا ارسال کردید) و چه کدگذاری و فشرده‌سازی برای بسته‌ها انجام شده. هکرها میتونن حتی ارتباط رو قطع کنن، با این حال هم سرور و هم کلاینت متوجه میشن که ارتباط توسط شخص سوم قطع شده.

در حالت کلی، هکر میتونه متوجه بشه که اسم هاستی که بهش متصل شدید چیه، ولی از بقیه آدرس خبری نداره و صرفا اسم رو میدونه. اینجاست که HTTPS خودش رو نشون میده!

وقتی از HTTPS استفاده میکنید، باید یه درخواست اولیه به سرور DNS ارسال بشه تا اون اطلاعات هاست رو به شما بده و بعد باقی اطلاعات ارسال بشه.

نرم‌افزار Certbot و نصب گواهینامه

سرت‌بات (Certbot) نرم‌افزاریه که به سادگی به شما اجازه میده سرورتون رو امن کنید. این نرم‌افزار توسط EFF و افراد دیگه‌ای ساخته شده و میشه خیلی بهش مطمئن بود.

یکی از مزایای سرت‌بات اینه که وب‌سرور شما رو (Apache, NginX و ...) رو اتوماتیک کانفیگ میکنه و خیلی سریع شما رو برای استفاده از SSL/TLS و HTTPS آماده میکنه. برای آپاچی، آپشن‌هایی رو بهتون میده مثل دستکاری اتوماتیک سوئیت‌های کدگذاری یا مثلا ریدایرکت‌های اتوماتیک از HTTP به HTTPS یا حتی، بروزرسانی ریکوئست‌های نا امن!

سایت سرت‌بات به شما این امکان رو میده که بتونید نحوه نصب متناسب با سرورتون رو پیاد کنید، اما روشش خیلی سادست و خصوصا موقع نصب میتونه یکمی دردسر درست کنه. مثلا، ریپازیتوری‌های لینوکسیش همیشه آپدیت نیستن و گاهی تو بروزرسانی‌های گواهینامه‌هاتون شما رو با مشکل مواجه میکنن. برای همین، اینجا بهتون روش دیگه‌ای برای نصب مطمئنتر رو آموزش میدم.

مقدمات نصب

سرت‌بات برای نصب، به پایتون ۲.۶، ۲.۷ یا ۳.۳ به بالا نیاز داره. در حالت عادی هم نیاز به دسترسی روت برای نوشتن داخل etc/letsencrypt، /var/log/letsencrypt و /var/lib/letsencrypt داره تا بتونه پورت‌های ۸۰ و ۴۴۳ رو به هم متصل و ضمنا بتونه کانفیگ‌های وب‌سرور رو دستکاری کنه.

نصب نرم‌افزار به حداقل ۵۱۲مگابایت رم نیاز داره تا بتونه دیپندنسی‌های بیشتری رو بسازه.

شروع نصب

certbot-auto بهترین روش برای نصب نرم‌افزار هست. چون، محیط مجازی رو برای پایتون فراهم میکنه و دیپندنسی‌ها رو به صورت اتوماتیک میسازه، از همه مهمتر اتوماتیک چک میکنه که آیا از آخرین نسخه نرم‌افزار استفاده میشه یا نه و اون را بروز نگه میداره. مراحل نصب:

$ wget https://dl.eff.org/certbot-auto
$ chmod a+x ./certbot-auto
$ ./certbot-auto

پروسه دانلود از پروتکل HTTPS استفاده میکنه برای همین نیازی به نگرانی نصب نیست.

عی کردم متن اصلی رو تا حد امکان خلاصه کنم که اصل مطلب باقی بمونه. با این حال متن کامل رو میتونید توی سایت خودم پیدا کنید.

با آرزوی موفقیت