تفاوت HTTPS با HTTP؟
تفاوت اصلی ساده است: HTTPS همان HTTP است که روی یک لایه رمزنگاری به نام TLS اجرا میشود. در HTTP دادهها بهصورت متن ساده و معمولا از پورت ۸۰ رد و بدل میشوند و هر کسی که در مسیر شبکه قرار بگیرد میتواند آنها را بخواند یا تغییر دهد؛ در HTTPS همان دادهها پیش از خروج از مرورگر رمزگذاری میشوند و از پورت ۴۴۳ عبور میکنند.
پس HTTPS یک پروتکل کاملا جداگانه نیست؛ ساختار درخواستها، هدرها و کدهای وضعیت همان HTTP است، فقط داخل یک تونل رمزنگاریشده قرار میگیرد.
تفاوت HTTP و HTTPS در یک نگاه
| ویژگی | HTTP | HTTPS |
|---|---|---|
| پورت پیشفرض | ۸۰ | ۴۴۳ |
| وضعیت داده در مسیر | متن ساده و قابل خواندن | رمزگذاریشده با TLS |
| احراز هویت سرور | ندارد | با گواهی و زنجیره اعتماد CA |
| دستکاری محتوا در مسیر | ممکن و نامحسوس | باعث خطای اتصال میشود |
| نمایش در مرورگر | برچسب «امن نیست» | اتصال عادی |
| HTTP/2 و HTTP/3 | در مرورگرها پشتیبانی نمیشود | در دسترس است |
TLS دقیقا از چه چیزی محافظت میکند
لایه TLS سه چیز را تضمین میکند و بهتر است هر سه را جدا از هم ببینید:
TLS محتوا را رمزنگاری میکند اما نام دامنه را پنهان نمیکند؛ اعتبار گواهی هم به کامل بودن زنجیره تا یک ریشه مورد اعتماد بستگی دارد.
- محرمانگی: محتوای درخواست و پاسخ، شامل مسیر و پارامترهای URL، هدرها، کوکیها و اطلاعات فرمها، برای شنودکننده مسیر قابل خواندن نیست.
- یکپارچگی: اگر کسی بستهها را در مسیر تغییر دهد اتصال با خطا قطع میشود؛ همین جلوی تزریق تبلیغات یا اسکریپت توسط شبکه واسط را میگیرد.
- احراز هویت سرور: مرورگر با بررسی گواهی مطمئن میشود واقعا با همان دامنه نوار آدرس صحبت میکند، نه با سروری که خود را جای آن جا زده است.
در مقابل، TLS اینها را پنهان نمیکند: آدرس IP مقصد، نام دامنه که در مرحله DNS و در فیلد SNI دستدادن اولیه رد و بدل میشود، و حجم و زمانبندی ترافیک. مهمتر اینکه HTTPS فقط از داده در مسیر محافظت میکند؛ اگر خود سرور یا اسکریپتهای سایت آلوده باشند رمزنگاری کمکی نمیکند. سایتهای فیشینگ هم گواهی معتبر میگیرند، پس قفل مرورگر یعنی «اتصال به این دامنه امن است»، نه «این سایت قابل اعتماد است».
گواهی و زنجیره اعتماد
روند کار اینطور است: روی سرور یک کلید خصوصی ساخته میشود که هرگز نباید از سرور خارج شود، سپس یک درخواست امضا (CSR) برای مرجع صدور گواهی یا همان CA فرستاده میشود و CA پس از تایید، گواهی را امضا میکند.
اعتماد از یک زنجیره میآید: گواهی دامنه شما را یک گواهی میانی امضا کرده و آن را یک گواهی ریشه که از پیش در فهرست اعتماد سیستمعامل و مرورگر وجود دارد. اگر گواهی میانی روی سرور جا بیفتد، ممکن است در مرورگر دسکتاپ مشکلی دیده نشود ولی موبایل یا ابزارهایی مثل curl خطا بدهند؛ این یکی از رایجترین اشتباهات نصب است.
رکورد CAA در مدیریت DNS دامنه هم مشخص میکند فقط کدام مراجع حق صدور گواهی برای دامنه شما را دارند و جلوی صدور ناخواسته را میگیرد.
DV، OV و EV چه فرقی دارند
این سه سطح، سطح اعتبارسنجی هستند نه سطح رمزنگاری. قدرت رمزنگاری در هر سه یکسان است و هر سه همان TLS را ارائه میدهند.
- DV (اعتبارسنجی دامنه): فقط مالکیت یا کنترل دامنه بررسی میشود، معمولا با افزودن یک رکورد DNS، قرار دادن یک فایل روی سرور یا تایید ایمیلی. سریعترین و رایجترین حالت برای سایتهای عمومی.
- OV (اعتبارسنجی سازمانی): علاوه بر دامنه، هویت حقوقی سازمان هم بررسی میشود و نام سازمان داخل گواهی ثبت میگردد.
- EV (اعتبارسنجی توسعهیافته): سختگیرانهترین فرایند بررسی هویت سازمان.
نکتهای که هنوز در متنهای قدیمی تکرار میشود: از سال ۲۰۱۹ مرورگرهای اصلی نمایش نام شرکت در نوار آدرس برای گواهی EV را حذف کردند و کاربر عادی دیگر تفاوت ظاهری بین DV و EV نمیبیند؛ برای دیدن نام سازمان باید جزئیات گواهی را باز کرد. بنابراین انتخاب EV امروز بیشتر پاسخ به الزامات داخلی یا قراردادی است تا یک مزیت دیداری. موضوع تعداد دامنه هم جداست: گواهی تکدامنه، وایلدکارت برای زیردامنهها و چنددامنهای در هر سه سطح اعتبارسنجی وجود دارند. صفحه گواهینامه SSL این انواع را کنار هم توضیح داده است.
HTTPS، سئو و هشدار مرورگرها
گوگل در سال ۲۰۱۴ رسما اعلام کرد HTTPS یک سیگنال رتبهبندی سبک است. اثر مستقیم آن بزرگ نیست، اما اثر غیرمستقیم جدی است: از نسخه ۶۸ کروم به بعد هر صفحه HTTP با برچسب «امن نیست» نمایش داده میشود و در فرمهای ورود و پرداخت این هشدار پررنگتر است. ضمن اینکه HTTP/2 و HTTP/3 هم در مرورگرها فقط روی اتصال رمزگذاریشده در دسترساند.
برای اینکه مهاجرت به HTTPS به سئو آسیب نزند: از HTTP به HTTPS فقط یک ریدایرکت دائمی ۳۰۱ بگذارید و زنجیره ریدایرکت نسازید، آدرسهای canonical و نقشه سایت را به نسخه HTTPS بهروز کنید، هر دو نسخه را در سرچ کنسول ثبت کنید و محتوای ترکیبی را از بین ببرید. محتوای ترکیبی یعنی صفحهای که خودش با HTTPS بارگذاری شده ولی هنوز تصویر، اسکریپت یا استایل را با آدرس http:// صدا میزند؛ مرورگرها این منابع را مسدود یا ارتقا میدهند و ظاهر صفحه بههم میریزد. در گام آخر میتوانید هدر HSTS را فعال کنید تا مرورگر دیگر حتی یکبار هم سراغ نسخه HTTP نرود.
برای فعال کردن HTTPS چه چیزهایی لازم است
یک وبسرور با پشتیبانی TLS مانند Apache همراه mod_ssl، Nginx یا LiteSpeed، یک گواهی معتبر و دسترسی برای نصب آن. برخلاف آنچه در راهنماهای قدیمی نوشته شده، امروز داشتن IP اختصاصی برای هر گواهی ضروری نیست؛ با قابلیت SNI چندین دامنه با گواهیهای متفاوت میتوانند روی یک IP کنار هم کار کنند و همه مرورگرهای امروزی از آن پشتیبانی میکنند.
در سرورهای دارای کنترلپنل مانند cPanel و DirectAdmin معمولا صدور، نصب و تمدید خودکار گواهی رایگان بهصورت داخلی انجام میشود. اگر گواهی تجاری خریدهاید، فایل گواهی، کلید خصوصی و گواهی میانی باید با هم نصب شوند. تمدید را هم فراموش نکنید: طول عمر مجاز گواهیها طی سالهای اخیر مرتب کوتاهتر شده و تکیه بر یادآوری دستی ریسک دارد. برای نصب یا انتقال گواهی روی سرور میتوانید کار را به تیم پشتیبانی بسپارید.
خطاهای رایج گواهی و معنای آنها
- انقضای گواهی: تمدید انجام نشده یا تمدید خودکار شکست خورده است.
- عدم تطابق نام: گواهی برای example.com صادر شده ولی کاربر با www.example.com وارد میشود یا برعکس؛ هر دو نام باید در گواهی باشند.
- مرجع صدور نامعتبر: گواهی خودامضا است یا گواهی میانی نصب نشده.
- خطا فقط روی بعضی دستگاهها: معمولا زنجیره ناقص است یا ساعت و تاریخ دستگاه کاربر اشتباه تنظیم شده.
پس از نصب، پیکربندی را از بیرون بررسی کنید: کامل بودن زنجیره، غیرفعال بودن نسخههای منسوخ TLS، درست کار کردن ریدایرکت و نبود محتوای ترکیبی. برای بررسی وضعیت فعلی سایت، چکاپ رایگان سایت نقطه شروع مناسبی است.
