صرف نظر و مشاهده محتوا

خوش آمدید!

این تالار گفتگو در خصوص محصولات و خدمات تسهیل گستر و نرم افزار سازمان یار ( قدرت گرفته از Odoo ERP ) ایجاد شده است.

سوال بپرسید و به بحث و گفتگو بپردازید، مطالب و ایده های خود را به اشتراک بگذارید، پروفایل حرفه ای خود را ایجاد کنید، به دغدغه های مطرح شده در کیفی ترین شکل ممکن پاسخ دهید و شبکه ارتباطی خود را گسترش دهید.

این سؤال پرچم‌دار شده است

برای سایت SSL نصب کرده‌ام و آدرس سایت با https:// باز می‌شود، اما مرورگر هنوز در بعضی مواقع اخطار امنیتی می‌دهد یا علامت قفل کنار آدرس سایت نمایش داده نمی‌شود.

در بعضی صفحات این موارد را می‌بینم:

  • پیام Not Secure
  • هشدار «اتصال شما خصوصی نیست»
  • نمایش ندادن قفل امن در مرورگر
  • باز شدن سایت با https اما لود نشدن بعضی فایل‌ها
  • اخطار فقط در نسخه www یا فقط بدون www
  • اخطار فقط در بعضی صفحات یا دستگاه‌ها

گواهی SSL را از هاست یا شرکت ارائه‌دهنده تهیه کرده‌ام و ظاهراً نصب هم شده است.

سؤال من این است که چرا با وجود نصب SSL همچنان مرورگر هشدار می‌دهد؟ آیا مشکل از خود گواهی است، تنظیمات سرور، دامنه، یا لینک‌های داخل سایت؟ چگونه می‌توانم علت دقیق را پیدا و به‌صورت اصولی رفع کنم؟

تصویر پروفایل
صرف نظر
مؤلف

نصب شدن 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 وجود دارد:

  1. ارتباط کاربر با CDN
  2. ارتباط 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ها و فایل‌های استاتیک نیز باید از دامنه معتبر استفاده کنند.

چگونه علت دقیق را پیدا کنیم؟

برای عیب‌یابی سریع، این ترتیب را دنبال کنید:

  1. سایت را با http و https باز کنید.
  2. نسخه‌های www و بدون www را جداگانه تست کنید.
  3. تاریخ انقضای Certificate را بررسی کنید.
  4. نام دامنه‌های درج‌شده در گواهی را کنترل کنید.
  5. Console مرورگر را برای خطاهای Mixed Content بررسی کنید.
  6. چند صفحه داخلی، مخصوصاً مقاله، محصول و دسته‌بندی را باز کنید.
  7. سایت را با موبایل و یک اینترنت دیگر هم تست کنید.
  8. در صورت استفاده از CDN، تنظیمات SSL آن را با سرور اصلی تطبیق دهید.
جمع‌بندی

وقتی SSL نصب شده ولی مرورگر اخطار می‌دهد، معمولاً مشکل یکی از این موارد است:

  • گواهی برای دامنه یا ساب‌دامین درست صادر نشده است.
  • گواهی منقضی شده یا زنجیره آن ناقص است.
  • صفحه HTTPS هنوز منابع HTTP بارگذاری می‌کند.
  • ریدایرکت HTTP به HTTPS ناقص یا اشتباه است.
  • CDN یا پراکسی با سرور اصلی ناسازگار تنظیم شده است.
  • سایت با IP یا یک دامنه خارج از محدوده گواهی باز می‌شود.

مهم‌ترین نکته این است که فقط فعال بودن HTTPS را معیار قرار ندهید. باید تمام نسخه‌های دامنه، صفحات داخلی و منابع صفحه از نظر اعتبار گواهی و بارگذاری امن بررسی شوند.

تصویر پروفایل
صرف نظر

پاسخ شما

سعی کنید یک پاسخ اساسی ارائه کنید. اگر می‌خواهید در مورد سؤال یا پاسخ نظر دهید، کافیست از ابزار نظردهی استفاده کنید. به خاطر داشته باشید که همیشه می‌توانید پاسخ‌های خود را اصلاح کنید - نیازی نیست یک سؤال را دوبار پاسخ دهید. همچنین رأی دادن را فراموش نکنید - این کار کمک می‌کند بهترین سؤال و جواب‌ها را انتخاب کنیم!

پست‌های مرتبط پاسخ‌ها بازدید فعالیت
1
مرداد 26
152
1
مرداد 26
74
1
مرداد 26
114
1
شهریور 26
57
1
مرداد 26
87