SSL، که امروز نسخهٔ جدیدش TLS نام دارد، پروتکلی است که ارتباط بین مرورگر و سرور را رمزنگاری میکند و هویت سایت را با یک گواهی دیجیتال تأیید میکند. HTTPS همان HTTP روی این لایهٔ امن است. گواهی را یک مرجع صدور معتبر امضا میکند و مرورگر آن را بررسی میکند. برای بیشتر سایتها گواهی رایگان Let's Encrypt کافی است و با Certbot خودکار تمدید میشود.
SSL و TLS دقیقاً چه هستند؟
وقتی آدرس سایتی را در مرورگر باز میکنید، دادهها از مسیرهای زیادی عبور میکنند: مودم خانه، شبکهٔ اپراتور، دیتاسنترهای میانی و در نهایت سرور سایت. اگر این دادهها رمزنگاری نشده باشند، هر کسی که در این مسیر قرار دارد میتواند آنها را بخواند یا حتی تغییر دهد؛ از رمز عبور و اطلاعات فرم گرفته تا محتوای صفحه.
SSL مخفف Secure Sockets Layer نام پروتکلی بود که برای حل همین مشکل ساخته شد. نسخههای قدیمی SSL مدتهاست به دلیل ضعفهای امنیتی کنار گذاشته شدهاند و جانشین آن TLS یا Transport Layer Security است. با این حال، نام SSL آنقدر جا افتاده که هنوز همه از «گواهی SSL» صحبت میکنند، در حالی که در عمل TLS استفاده میشود. در این مقاله هم این دو را به یک معنا به کار میبریم.
TLS دو کار اصلی انجام میدهد: رمزنگاری که باعث میشود فقط مرورگر و سرور بتوانند دادهها را بخوانند، و احراز هویت که تضمین میکند واقعاً با سرور سایت مورد نظر صحبت میکنید و نه با یک واسطهٔ جعلی.
HTTPS چیست و چه فرقی با HTTP دارد؟
HTTP پروتکلی است که مرورگر و سرور با آن صفحهها را رد و بدل میکنند. HTTPS همان HTTP است که داخل یک تونل TLS اجرا میشود. محتوای درخواستها و پاسخها یکسان است؛ تفاوت در این است که در HTTPS همهچیز رمزنگاریشده منتقل میشود. HTTP بهصورت پیشفرض روی پورت ۸۰ و HTTPS روی پورت ۴۴۳ کار میکند؛ برای آشنایی با مفهوم پورت، مقالهٔ پورت شبکه را ببینید.
امروز HTTPS دیگر یک گزینهٔ اختیاری نیست. مرورگرها سایتهای HTTP را «ناامن» علامت میزنند، بسیاری از قابلیتهای جدید مرورگر مثل دسترسی به موقعیت مکانی و سرویسورکرها فقط روی HTTPS کار میکنند و موتورهای جستوجو هم HTTPS را یک سیگنال مثبت میدانند. حتی برای سایتی که فرم یا ورود کاربر ندارد، HTTPS جلوی تزریق تبلیغ یا محتوای ناخواسته توسط واسطهها را میگیرد.
- دادهها بهصورت متن خوانا منتقل میشوند
- هر واسطهای میتواند بخواند یا تغییر دهد
- هویت سرور تأیید نمیشود
- پورت پیشفرض ۸۰
- همهٔ دادهها رمزنگاریشدهاند
- تغییر محتوا در مسیر تشخیص داده میشود
- هویت سرور با گواهی تأیید میشود
- پورت پیشفرض ۴۴۳
گواهی SSL چیست و چطور کار میکند؟
گواهی SSL یک فایل دیجیتال است که سه چیز اصلی را به هم پیوند میدهد: نام دامنه، یک کلید عمومی و امضای یک مرجع صدور گواهی یا CA. کلید عمومی در گواهی منتشر میشود، اما کلید خصوصی متناظرش فقط روی سرور شما نگهداری میشود و هرگز نباید جای دیگری برود.
مرورگرها و سیستمعاملها فهرستی از مرجعهای صدور معتبر را از پیش در خود دارند. وقتی سرور گواهیاش را ارائه میکند، مرورگر بررسی میکند که:
- گواهی برای همین دامنهای صادر شده که کاربر باز کرده است.
- تاریخ اعتبار گواهی منقضی نشده است.
- امضای گواهی به یک مرجع معتبر در فهرست مرورگر میرسد؛ معمولاً از طریق یک یا چند گواهی میانی که به آن «زنجیرهٔ گواهی» میگویند.
اگر هر کدام از این بررسیها شکست بخورد، مرورگر صفحهٔ هشدار نشان میدهد و اتصال را ادامه نمیدهد مگر اینکه کاربر خودش ریسک را بپذیرد.
دستدادن TLS در چند قدم
پیش از ارسال اولین بایت از صفحه، مرورگر و سرور یک گفتوگوی کوتاه به نام «دستدادن» یا Handshake انجام میدهند. در نسخههای جدید TLS این گفتوگو بسیار سریع است:
- سلام مرورگر
نسخههای TLS و الگوریتمهای پشتیبانیشده را اعلام میکند
- پاسخ سرور
الگوریتم را انتخاب و گواهی را ارسال میکند
- بررسی گواهی
مرورگر دامنه، تاریخ و امضای CA را چک میکند
- توافق روی کلید
دو طرف کلید جلسهٔ مشترک را میسازند
- ارتباط رمزنگاریشده
درخواست و پاسخ HTTP با کلید جلسه منتقل میشوند
نتیجهٔ دستدادن، یک کلید جلسه است که فقط مرورگر و سرور از آن خبر دارند و بقیهٔ ارتباط با آن رمزنگاری میشود. نکتهٔ جالب این است که حتی اگر کسی همهٔ این گفتوگو را شنود کند، نمیتواند کلید جلسه را به دست آورد. به همین دلیل TLS حتی روی شبکههای ناامن مثل وایفای عمومی هم از دادهها محافظت میکند.
انواع گواهی SSL
گواهیها از دو جنبه دستهبندی میشوند: میزان بررسی هویت و تعداد دامنههایی که پوشش میدهند.
از نظر سطح اعتبارسنجی:
- DV یا Domain Validation: فقط مالکیت یا کنترل دامنه بررسی میشود. سریع و معمولاً رایگان است و برای بیشتر سایتها، وبلاگها و فروشگاهها کاملاً کافی است.
- OV یا Organization Validation: علاوه بر دامنه، وجود حقوقی سازمان هم بررسی میشود و نام سازمان در جزئیات گواهی قرار میگیرد.
- EV یا Extended Validation: بررسی دقیقتر سازمان. در گذشته مرورگرها نام شرکت را کنار نوار آدرس سبز نشان میدادند، اما این نمایش ویژه حذف شده است.
از نظر رمزنگاری، هر سه نوع دقیقاً یک سطح امنیت دارند؛ تفاوت فقط در میزان بررسی هویت صاحب گواهی است.
از نظر پوشش دامنه:
- تکدامنه: فقط یک نام مثل
example.com. - چنددامنه یا SAN: چند نام مختلف در یک گواهی، مثل
example.comوwww.example.comوshop.example.com. - Wildcard: همهٔ زیردامنههای یک سطح، مثل
*.example.com. برای گرفتن این نوع از Let's Encrypt باید از تأیید از طریق رکورد DNS استفاده کنید.
$ openssl s_client -connect example.com:443 </dev/null | openssl x509 -noout -issuer -datesissuer=C = US, O = Let's Encrypt, CN = R11notBefore=Oct 1 08:00:00 2026 GMTnotAfter=Dec 30 08:00:00 2026 GMT$
گواهی رایگان Let's Encrypt
Let's Encrypt یک مرجع صدور گواهی غیرانتفاعی است که گواهی DV را رایگان و بهصورت خودکار صادر میکند. اعتبار گواهیهای آن کوتاه است و باید مرتب تمدید شوند، اما ابزار Certbot این کار را خودکار انجام میدهد و در عمل نیازی به دخالت شما نیست. امروز بخش بزرگی از سایتهای جهان از همین گواهیها استفاده میکنند.
برای گرفتن گواهی، Let's Encrypt بررسی میکند که شما دامنه را کنترل میکنید؛ معمولاً با درخواست یک فایل موقت از طریق HTTP روی پورت ۸۰ یا با بررسی یک رکورد TXT در DNS. بنابراین پیش از گرفتن گواهی، رکورد A دامنه باید درست به سرور شما اشاره کند؛ اگر با رکوردها آشنا نیستید، راهنمای رکوردهای DNS را بخوانید. مراحل کامل نصب گواهی روی Nginx در آموزش Nginx و Let's Encrypt آمده است.
SSL در کنار CDN
اگر سایت شما پشت یک CDN باشد، دو اتصال رمزنگاریشده جداگانه وجود دارد: یکی بین کاربر و CDN، و دیگری بین CDN و سرور شما. CDN معمولاً گواهی سمت کاربر را خودش مدیریت میکند، اما اتصال CDN به سرور به تنظیمات شما بستگی دارد. انتخاب اشتباه حالت SSL در پنل CDN یکی از رایجترین دلایل خطای «ریدایرکت بیش از حد» یا خطاهای 5xx است. توضیح کامل حالتها در مقالهٔ حالتهای SSL در CDN آمده است.
خطاهای رایج گواهی
- گواهی منقضی شده: تمدید خودکار کار نکرده است؛ وضعیت Certbot و تایمر آن را بررسی کنید.
- عدم تطابق نام: گواهی برای
example.comصادر شده اما کاربرwww.example.comرا باز کرده است؛ هر دو نام را در گواهی قرار دهید. - زنجیرهٔ ناقص: سرور فقط گواهی اصلی را ارسال میکند و گواهی میانی را نه؛ در Nginx از فایل
fullchain.pemاستفاده کنید نهcert.pem. - محتوای مختلط: صفحه با HTTPS باز شده اما تصویر یا اسکریپتی را با HTTP بارگذاری میکند و مرورگر آن را مسدود یا هشدار میدهد.
- ساعت نادرست دستگاه: اگر ساعت سیستم کاربر یا سرور اشتباه باشد، گواهی معتبر هم منقضی یا هنوز نامعتبر دیده میشود.
با یک بار تنظیم درست، HTTPS روی سرور مجازی شما بدون دردسر و بهصورت خودکار کار میکند.
سؤالات متداول
آیا گواهی رایگان Let's Encrypt امنیت کمتری از گواهی پولی دارد؟
خیر. از نظر رمزنگاری هیچ تفاوتی وجود ندارد. گواهیهای پولی OV و EV فقط بررسی هویت سازمان را اضافه میکنند و گاهی خدمات پشتیبانی یا ضمانت دارند؛ برای بیشتر سایتها گواهی DV رایگان کافی است.
آیا HTTPS سایت را کند میکند؟
در عمل تقریباً نه. نسخههای جدید TLS دستدادن بسیار سریعی دارند و پردازندههای امروزی رمزنگاری را بهراحتی انجام میدهند. علاوه بر این، HTTP/2 و HTTP/3 که سرعت بارگذاری را بهتر میکنند در مرورگرها فقط روی HTTPS فعالاند.
کلید خصوصی گواهی را کجا نگه دارم؟
فقط روی سروری که گواهی روی آن نصب است، با دسترسی محدود به کاربر root. آن را در ایمیل، مخزن کد یا پیامرسان ارسال نکنید. اگر کلید لو رفت، گواهی را باطل و یک گواهی جدید با کلید جدید صادر کنید.
قفل کنار آدرس یعنی سایت قابل اعتماد است؟
قفل فقط یعنی اتصال رمزنگاریشده است و گواهی برای همان دامنه معتبر است. این به معنای درستکار بودن صاحب سایت نیست؛ سایتهای فیشینگ هم میتوانند گواهی معتبر داشته باشند، پس همیشه نام دامنه را دقیق بررسی کنید.
از ۱٬۲۰۰ تومان در ساعت · پرداخت ریالی



