نصب شدن SSL لزوماً به این معنا نیست که سایت از نگاه مرورگر کاملاً امن و درست پیکربندی شده است. برای اینکه مرورگر قفل امن را نمایش دهد، چند شرط باید همزمان برقرار باشند:
- گواهی معتبر باشد.
- گواهی برای همان دامنهای صادر شده باشد که کاربر باز کرده است.
- گواهی منقضی نشده باشد.
- زنجیره گواهی یا Certificate Chain کامل نصب شده باشد.
- تمام منابع صفحه از طریق HTTPS بارگذاری شوند.
- ریدایرکت HTTP به HTTPS درست انجام شود.
- ساعت دستگاه کاربر درست باشد.
بنابراین ابتدا باید متن دقیق هشدار مرورگر را بررسی کنید؛ چون هر پیام معمولاً به یک دسته مشکل مشخص اشاره میکند.
1. گواهی SSL برای دامنه درست صادر نشده است
رایجترین مشکل این است که گواهی فقط برای یک نسخه از دامنه صادر شده، اما کاربران نسخه دیگری را باز میکنند.
برای مثال ممکن است SSL فقط برای این دامنه فعال باشد:
example.com
اما کاربر وارد این آدرس شود:
www.example.com
در این حالت، اگر گواهی شامل www نباشد، مرورگر اخطار میدهد.
همین موضوع درباره سابدامینها هم وجود دارد:
blog.example.com
shop.example.com
panel.example.com
گواهی دامنه اصلی معمولاً بهصورت خودکار برای همه سابدامینها معتبر نیست، مگر اینکه از نوع Wildcard باشد یا آن سابدامینها بهطور جداگانه در گواهی ثبت شده باشند.
راهحل
بررسی کنید گواهی فعلی شامل کدام نامهاست:
- example.com
- www.example.com
- سابدامینهای موردنیاز
سپس یک نسخه اصلی برای دامنه انتخاب کنید، مثلاً:
https://example.com
و همه نسخههای دیگر را با ریدایرکت 301 به آن هدایت کنید.
2. گواهی SSL منقضی شده است
هر گواهی SSL تاریخ شروع و پایان دارد. اگر تمدید گواهی انجام نشده باشد، مرورگر اتصال را ناامن تشخیص میدهد.
این هشدار معمولاً با پیامهایی شبیه موارد زیر دیده میشود:
Your connection is not private
NET::ERR_CERT_DATE_INVALID
گاهی گواهی در پنل هاست تمدید شده، اما نسخه جدید درست روی وبسرور نصب نشده است. همچنین ممکن است سایت پشت CDN یا پراکسی باشد و هنوز گواهی قدیمی را به کاربر تحویل دهد.
راهحل
تاریخ انقضای گواهی را بررسی کنید. در مرورگر معمولاً با کلیک روی علامت کنار نوار آدرس میتوان جزئیات Certificate را دید.
اگر گواهی منقضی شده است:
- آن را تمدید کنید.
- مطمئن شوید نسخه جدید روی دامنه اصلی فعال شده است.
- کش CDN یا پراکسی را پاک کنید.
- پس از نصب، همه نسخههای دامنه را دوباره تست کنید.
3. مشکل Mixed Content یا محتوای ترکیبی
یکی از مهمترین دلایل نبودن قفل امن، استفاده از فایلهای HTTP در صفحه HTTPS است.
مثلاً صفحه با HTTPS باز میشود:
https://example.com/page
اما یک تصویر، فایل جاوااسکریپت، فونت، ویدئو یا فایل CSS از HTTP لود میشود:
http://example.com/image.jpg
یا از یک دامنه خارجی بدون HTTPS فراخوانی میشود:
http://external-domain.com/script.js
مرورگر در این شرایط ممکن است بعضی منابع را مسدود کند یا سایت را کاملاً امن نشان ندهد.
نمونه رایج در وردپرس
در محتوای قدیمی مقالهها ممکن است تصویرها همچنان با آدرس HTTP ثبت شده باشند:
نمایش کد
<img src="http://example.com/uploads/image.jpg">
یا قالب و افزونهها فایلهای خود را با HTTP فراخوانی کنند.
راهحل
باید همه منابع سایت از HTTPS لود شوند:
- تصاویر
- فایلهای CSS
- JavaScript
- فونتها
- iframeها
- ویدئوها
- فایلهای تبلیغاتی
- اسکریپتهای چت آنلاین و آمارگیر
برای پیدا کردن Mixed Content، صفحه مشکلدار را باز کنید و ابزار Developer Tools مرورگر را بررسی کنید. در مرورگر Chrome معمولاً با کلید F12 و رفتن به بخش Console، خطاهای مربوط به محتوای ناامن دیده میشوند.
در وردپرس نیز باید آدرس سایت در تنظیمات به این شکل باشد:
https://example.com
همچنین لازم است لینکهای قدیمی HTTP در محتوا و دیتابیس اصلاح شوند.
4. زنجیره گواهی SSL ناقص نصب شده است
گواهی SSL فقط یک فایل نیست. مرورگر برای اعتبارسنجی آن باید بتواند زنجیره اعتماد را تا صادرکننده معتبر دنبال کند.
اگر فایلهای واسط یا Intermediate Certificate بهدرستی نصب نشده باشند، بعضی مرورگرها یا دستگاهها گواهی را معتبر تشخیص نمیدهند.
این حالت گاهی باعث میشود سایت روی یک سیستم بدون مشکل باز شود، اما روی موبایل، مرورگر قدیمی یا سیستمعامل خاص اخطار بدهد.
راهحل
در زمان نصب گواهی، فقط فایل Certificate را نصب نکنید. فایلهای زیر نیز باید درست پیکربندی شوند:
- Certificate
- Private Key
- CA Bundle یا Intermediate Certificate
اگر SSL را از پنل هاست فعال کردهاید، معمولاً این کار خودکار انجام میشود. اما در نصب دستی روی Nginx، Apache یا Load Balancer باید زنجیره کامل گواهی را در تنظیمات سرور وارد کنید.
5. سایت هنوز با HTTP باز میشود یا ریدایرکت ناقص است
ممکن است SSL نصب باشد، اما کاربران هنوز از نسخه HTTP وارد سایت شوند:
http://example.com
اگر ریدایرکت HTTP به HTTPS تنظیم نشده باشد، سایت ممکن است با نسخه ناامن باز شود یا بین نسخههای مختلف دامنه پراکنده شود.
راهحل
همه حالتهای زیر باید به نسخه اصلی هدایت شوند:
http://example.com
http://www.example.com
https://www.example.com
برای نمونه، اگر نسخه اصلی شما این است:
https://example.com
تمام آدرسهای دیگر باید با ریدایرکت دائمی 301 به آن منتقل شوند.
در وبسرور Apache، یک نمونه رایج از تنظیم ریدایرکت میتواند چنین باشد:
RewriteEngine On
RewriteCond %{HTTPS} !=on [OR]
RewriteCond %{HTTP_HOST} ^www\.example\.com$ [NC]
RewriteRule ^ https://example.com%{REQUEST_URI} [L,R=301]
پیش از اعمال تنظیمات، باید آن را با ساختار فعلی سایت، CDN و تنظیمات وبسرور هماهنگ کنید. تنظیم اشتباه ریدایرکت میتواند Loop ایجاد کند.
6. گواهی Self-Signed یا نامعتبر استفاده شده است
برخی سایتها، بهویژه پنلهای داخلی یا سرورهای آزمایشی، از گواهی Self-Signed استفاده میکنند. این گواهی ممکن است ارتباط را رمزنگاری کند، اما چون توسط یک مرجع معتبر صدور گواهی امضا نشده، مرورگر به آن اعتماد نمیکند.
در این حالت معمولاً هشدار جدیتری نمایش داده میشود و کاربر باید بهصورت دستی گزینه ادامه را انتخاب کند.
راهحل
برای سایت عمومی باید از گواهی معتبر استفاده کنید؛ برای مثال:
- Let’s Encrypt
- DigiCert
- Sectigo
- GlobalSign
گواهی Self-Signed فقط برای محیط توسعه، تست داخلی یا سامانههای محدود و کنترلشده مناسب است.
7. تاریخ و ساعت دستگاه کاربر اشتباه است
گاهی مشکل از سایت نیست. اگر ساعت، تاریخ یا منطقه زمانی دستگاه کاربر اشتباه باشد، مرورگر ممکن است تصور کند گواهی هنوز معتبر نشده یا تاریخ آن گذشته است.
این مسئله بیشتر روی سیستمهای قدیمی، دستگاههایی که مدتها به اینترنت متصل نبودهاند یا تنظیمات تاریخ دستی دارند دیده میشود.
راهحل
سایت را با چند دستگاه و اینترنت متفاوت تست کنید. اگر هشدار فقط روی یک دستگاه دیده میشود، تاریخ و ساعت همان دستگاه را بررسی کنید.
8. CDN، Cloudflare یا پراکسی بهدرستی تنظیم نشده است
اگر سایت پشت CDN یا سرویسهایی مانند Cloudflare باشد، دو ارتباط SSL وجود دارد:
- ارتباط کاربر با CDN
- ارتباط CDN با سرور اصلی
ممکن است گواهی روی سرور اصلی معتبر باشد اما تنظیم SSL در CDN مشکل داشته باشد، یا برعکس.
برای مثال، استفاده از حالتهای نادرست رمزنگاری میتواند باعث Loop ریدایرکت یا نمایش هشدار امنیتی شود.
راهحل
در تنظیمات CDN باید موارد زیر بررسی شوند:
- گواهی Edge معتبر باشد.
- دامنه اصلی و www در گواهی قرار گرفته باشند.
- ارتباط CDN با Origin Server از HTTPS معتبر استفاده کند.
- حالت رمزنگاری با تنظیمات سرور هماهنگ باشد.
- ریدایرکت HTTPS در چند لایه بهصورت متناقض تعریف نشده باشد.
9. برخی صفحات یا منابع با آدرس IP باز میشوند
گواهی SSL معمولاً برای یک دامنه صادر میشود، نه برای IP سرور.
اگر کاربر سایت را اینگونه باز کند:
https://192.0.2.10
اما گواهی برای example.com صادر شده باشد، مرورگر هشدار میدهد؛ چون نام گواهی با آدرس بازشده همخوانی ندارد.
راهحل
همیشه سایت را با دامنه اصلی باز کنید و از لینک دادن به IP سرور خودداری کنید. لینکهای داخلی، تنظیمات CMS، APIها و فایلهای استاتیک نیز باید از دامنه معتبر استفاده کنند.
چگونه علت دقیق را پیدا کنیم؟
برای عیبیابی سریع، این ترتیب را دنبال کنید:
- سایت را با http و https باز کنید.
- نسخههای www و بدون www را جداگانه تست کنید.
- تاریخ انقضای Certificate را بررسی کنید.
- نام دامنههای درجشده در گواهی را کنترل کنید.
- Console مرورگر را برای خطاهای Mixed Content بررسی کنید.
- چند صفحه داخلی، مخصوصاً مقاله، محصول و دستهبندی را باز کنید.
- سایت را با موبایل و یک اینترنت دیگر هم تست کنید.
- در صورت استفاده از CDN، تنظیمات SSL آن را با سرور اصلی تطبیق دهید.
جمعبندی
وقتی SSL نصب شده ولی مرورگر اخطار میدهد، معمولاً مشکل یکی از این موارد است:
- گواهی برای دامنه یا سابدامین درست صادر نشده است.
- گواهی منقضی شده یا زنجیره آن ناقص است.
- صفحه HTTPS هنوز منابع HTTP بارگذاری میکند.
- ریدایرکت HTTP به HTTPS ناقص یا اشتباه است.
- CDN یا پراکسی با سرور اصلی ناسازگار تنظیم شده است.
- سایت با IP یا یک دامنه خارج از محدوده گواهی باز میشود.
مهمترین نکته این است که فقط فعال بودن HTTPS را معیار قرار ندهید. باید تمام نسخههای دامنه، صفحات داخلی و منابع صفحه از نظر اعتبار گواهی و بارگذاری امن بررسی شوند.