
در دنیای وب امروز، امنیت دیگر یک انتخاب نیست، بلکه یک ضرورت قطعی است. پروتکل HTTPS و گواهینامه های SSL یا TLS ستون اصلی امنیت تبادل اطلاعات در اینترنت را تشکیل می دهند. هر سایتی که فاقد این زیرساخت باشد، در برابر شنود، دستکاری داده ها و حملات مختلف کاملا آسیب پذیر است.
با این حال، معمولا اولین نشانه ضعف امنیت در یک وبسایت نه در لاگ های سرور، بلکه در مرورگر کاربران دیده می شود. صفحه هشدار Your connection is not private و صفحه قرمز رنگ مرورگر نه تنها مانعی جدی در مسیر دسترسی مخاطب به وبسایت است، بلکه می تواند تمام اعتماد ایجاد شده نسبت به برند یا سرویس را در یک لحظه از بین ببرد.
این خطاها فقط یک هشدار ساده نیستند. بروز خطاهای SSL باعث کاهش میزان دسترسی کاربران، افت نرخ تبدیل، کاهش اعتماد عمومی و افت رتبه وبسایت در موتورهای جستجو از جمله گوگل می شود. در نتیجه، آشنایی دقیق با این خطاها و روش رفع آن ها یک مهارت اساسی برای مدیر سرور، مدیر وبسایت و تیم های توسعه محسوب می شود.
در این مقاله، تمام خطاهای رایج SSL به صورت کامل بررسی می شود. ابتدا این خطاها را معرفی می کنیم، سپس علت های فنی هر مورد را برای هاست لینوکس، هاست ویندوز، سرور مجازی و یا سرور اختصاصی تحلیل کرده و در ادامه روش های رفع آن ها را در وب سرورهای Apache و Nginx و همچنین در پلتفرم های ابری مانند Cloudflare آموزش می دهیم. هدف این محتوا ارائه یک راهنمای جامع و کاربردی است تا بتوانید در کوتاه ترین زمان خطاهای SSL سایت خود را رفع کرده و از بروز مجدد آن ها پیشگیری کنید.
SSL چیست و چرا اهمیت دارد
SSL یا Secure Sockets Layer یک پروتکل امنیتی برای رمزگذاری ارتباط میان مرورگر کاربر و سرور وبسایت است. هنگامی که این ارتباط رمزگذاری می شود، داده های حساس مانند رمز عبور، شماره کارت بانکی و اطلاعات شخصی در مسیر انتقال قابل شنود یا سرقت نخواهند بود. به این ترتیب، SSL نقش مستقیم در حفظ امنیت کاربران و جلوگیری از حملات میانجی دارد.
تفاوت SSL و TLS
در گفتگوهای روزمره معمولا از واژه SSL استفاده می شود، اما نسخه های اصلی SSL سال ها است که منسوخ شده اند. پروتکل فعالی که امروزه برای ارتباط امن استفاده می شود TLS یا Transport Layer Security است.
- SSL: نسخه قدیمی این پروتکل است و نسخه های ۱.۰ تا ۳.۰ دیگر قابل اعتماد محسوب نمی شوند.
- TLS: نسخه جدیدتر و تکامل یافته SSL است و امنیت و سرعت بالاتری دارد. استانداردهای رایج در حال حاضر TLS 1.2 و TLS 1.3 هستند.
- در اصطلاح عمومی، زمانی که گفته می شود گواهی SSL، منظور همان گواهی امنیتی مبتنی بر TLS است.
چرا خطاهای SSL رخ می دهند

بخشی از روند ارتباط امن، Handshake یا دست دادن میان مرورگر و سرور است. در این مرحله، طرفین باید درباره نسخه پروتکل، الگوریتم رمزنگاری و اعتبار گواهی به توافق برسند. هر گونه ناهماهنگی در این مرحله باعث بروز خطا می شود. مهم ترین دلایل این خطاها عبارت است از:
- پایان اعتبار گواهی یا عدم تمدید به موقع آن
- استفاده از گواهی صادر شده توسط مرجع غیر معتبر
- اشتباه در تنظیمات سرور یا وب سرور
تاثیر خطاهای SSL بر سئو و کسب و کار
این خطاها نه تنها تجربه کاربر را مختل می کنند، بلکه اثر مستقیم بر دیدپذیری و اعتبار سایت دارند.
- افت رتبه در گوگل: HTTPS یک سیگنال رتبه بندی محسوب می شود. سایتی که خطای SSL دارد توسط کروم با عنوان Not Secure مشخص می شود و کاهش ترافیک اجتناب ناپذیر است.
- افزایش نرخ پرش: آمارها نشان می دهد که بیش از هشتاد و پنج درصد کاربران پس از مشاهده هشدار امنیتی، از ورود ادامه دار به سایت منصرف می شوند.
انواع خطاهای SSL (راهنمای جامع عیب یابی)
در این بخش دوازده خطای رایج SSL را به همراه علت، سناریوهای محتمل و روش رفع آنها بررسی می کنیم. این بخش می تواند در زمان پیاده سازی گواهی، مهاجرت به HTTPS یا بررسی مشکلات مرورگر، به عنوان راهنمای عملی مورد استفاده قرار گیرد.
۱. NET::ERR_CERT_COMMON_NAME_INVALID

علت خطا: آدرس دامنه مورد استفاده با نام ثبت شده در گواهی SSL هماهنگی ندارد. مرورگر زمان بررسی گواهی متوجه می شود که Common Name یا SAN با دامنه فعلی سازگار نیست و اتصال امن را متوقف می کند.
سناریوهای رایج:
- گواهی فقط برای example.com صادر شده است اما کاربر به www.example.com مراجعه می کند.
- گواهی برای دامنه اصلی است ولی شامل ساب دامنه ها مانند shop.example.com نمی شود.
روش های رفع قطعی:
- صدور مجدد گواهی برای هر دو نسخه www و non-www.
- خرید یا فعال سازی گواهی Wildcard با ساختار *.example.com جهت پوشش تمام ساب دامنه ها.
- استفاده از SAN و افزودن دامنه های لازم در زمان سفارش یا ری ایشو گواهی.
۲. NET::ERR_CERT_AUTHORITY_INVALID

علت خطا: مرورگر نمی تواند هویت صادرکننده گواهی را تایید کند. این مساله معمولاً زمانی رخ می دهد که گواهی Self Signed باشد یا Chain گواهی به درستی نصب نشده باشد.
سناریوی متداول:
- استفاده از گواهی های Self Signed در سرورهای داخلی.
- نصب ناقص گواهی و عدم بارگذاری Intermediate CA Bundles در سرور.
- فعال کردن SSL در Cloudflare بدون وجود گواهی معتبر در Origin Server.
روش های رفع:
- تهیه گواهی معتبر از مراجع شناخته شده مانند DigiCert, Sectigo, RapidSSL یا Let’s Encrypt.
- نصب کامل زنجیره گواهی شامل Root و Intermediate در Apache یا Nginx.
- در Cloudflare، در صورتی که از Full SSL استفاده می شود، حتماً گواهی Origin معتبر نصب شود.
۳. SSL Certificate Expired

علت خطا: گواهی SSL دارای تاریخ اعتبار محدود است. پس از پایان دوره، گواهی نامعتبر شناخته می شود و مرورگر اتصال امن را رد می کند.
سناریوی معمول:
- تمدید نکردن گواهی به موقع.
- عدم فعال سازی ابزارهای یادآوری یا Auto Renew.
روش های رفع و پیشگیری:
- تمدید گواهی از طریق هاست یا صادرکننده.
- بررسی تاریخ انقضا با ابزارهایی مانند crt.sh یا پنل مدیریت سرور.
- فعال سازی امکان Auto Renew مخصوصا در Let’s Encrypt جهت جلوگیری از قطعی سرویس.
۴. Your connection is not private
این خطا یک هشدار عمومی است و زمانی ظاهر می شود که مرورگر امکان برقرار کردن ارتباط امن با سرور را ندارد. در این وضعیت مراحل Handshake با شکست مواجه می شود و مرورگر برای حفظ امنیت کاربر، صفحه را مسدود می کند. چون علت های این خطا گسترده هستند، ابتدا باید مشخص شود مشکل سمت کاربر است یا سمت سرور.
علت های رایج سمت کاربر و روش رفع
- اگر تاریخ و ساعت دستگاه درست نباشد، مرورگر تصور می کند گواهی منقضی شده است. کافی است زمان سیستم را روی Internet Time تنظیم کنید و دوباره تست بگیرید.
- بعضی آنتی ویروس ها قابلیت SSL Scanning دارند و برای بررسی ترافیک، گواهی جعلی صادر می کنند. این رفتار باعث بروز هشدار امنیتی می شود. راه حل، غیر فعال کردن موقت این قابلیت و تست مجدد است.
- کش و کوکی های قدیمی نیز ممکن است باعث استفاده مرورگر از گواهی منقضی یا نامعتبر شود. پاک کردن کش مرورگر یا باز کردن سایت در حالت Incognito معمولاً مشکل را رفع می کند.
- علت های احتمالی سمت سرور
اگر مشکل از کاربر نبود، به احتمال زیاد گواهی یا تنظیمات SSL روی سرور اشتباه است. معمولاً یکی از موارد زیر رخ داده است:
- گواهی به درستی نصب نشده یا فاقد فایل های Chain است.
- کلید خصوصی با گواهی صادر شده همخوانی ندارد.
- نسخه یا الگوریتم پروتکل پشتیبانی نمی شود.
در این موارد باید فایل های SSL را بررسی، Chain را تکمیل، و سازگاری پروتکل ها را روی Apache یا Nginx اصلاح کرد.
۵. Mixed Content Error

زمانی رخ می دهد که سایت با HTTPS بارگذاری شده اما بعضی منابع مانند عکس، جاوا اسکریپت یا فایل های CSS هنوز با HTTP فراخوانی می شوند. در این حالت قفل کنار نوار آدرس خاکستری یا همراه با هشدار و عبارت Not Secure نمایش داده می شود. برای رفع این مشکل ابتدا باید تمام لینک های داخلی را به نسخه امن تغییر دهید. در سایت هایی مانند وردپرس می توان با جستجو و جایگزینی آدرس ها در دیتابیس http را با https یکپارچه کرد.
اگر مشکل همچنان باقی ماند، استفاده از هدر upgrade insecure requests در تنظیمات سرور و فعال کردن قابلیت Always Use HTTPS و Automatic HTTPS Rewrites در کلودفلر کمک می کند منابع ناامن به صورت خودکار امن شوند.
۶. HSTS Errors

خطای مرتبط با HSTS زمانی دیده می شود که مرورگر قبلا سایت شما را در لیست HSTS ذخیره کرده و اکنون به دلیل مشکل SSL نسخه غیر امن یا گواهی نامعتبر را نمی پذیرد. در این شرایط گزینه Proceed anyway وجود ندارد و سایت کاملا مسدود می شود. اگر مشکل برای کاربر رخ داده است، می توان در مرورگر کروم وارد chrome://net-internals/#hsts شد و دامنه را از بخش Delete domain security policies حذف کرد.
اگر مشکل سمت سرور است، باید موقتا هدر Strict Transport Security را حذف یا کوتاه کرد تا سایت قابل دسترسی شود و پس از رفع مشکل SSL مجدد فعال گردد.
۷. ERR_SSL_PROTOCOL_ERROR
این خطا زمانی رخ می دهد که مرورگر و سرور روی پروتکل امنیتی به توافق نمی رسند. رایج ترین علت، بسته بودن پورت ۴۴۳ یا پیکربندی ناقص SSL در وب سرور است. ابتدا باید اطمینان حاصل کرد که پورت ۴۴۳ در فایروال باز است. سپس فایل های کانفیگ Apache یا Nginx بررسی شوند تا مسیر گواهی، کلید خصوصی و تنظیمات SSL به درستی وارد شده باشند. با اصلاح تنظیمات و ریستارت وب سرور معمولا خطا برطرف می شود.
۸. ERR_SSL_VERSION_OR_CIPHER_MISMATCH

وقتی نسخه های قدیمی TLS مانند ۱.۰ و ۱.۱ یا الگوریتم های رمزنگاری ضعیف مثل RC4 فعال باشند، مرورگرهای جدید اجازه اتصال نمی دهند و این خطا نمایش داده می شود. برای حل آن باید نسخه های TLS 1.2 و ۱.۳ را روی سرور فعال و Cipher Suite های قدیمی را غیر فعال کرد. پس از اعمال تغییرات، سرور ریستارت شود و اتصال مجدد تست گردد.
۹. Certificate Chain Incomplete
اگر فقط گواهی اصلی نصب شود اما گواهی های میانی ارائه دهنده نصب نشده باشند، مرورگر نمی تواند اعتبار گواهی را تا ریشه بررسی کند. ممکن است سایت روی رایانه دسکتاپ باز شود اما در دستگاه های موبایل خصوصا اندروید خطای امنیتی نمایش داده شود. راه حل این است که فایل CA Bundle را از صادر کننده گواهی دریافت کرده و همراه با گواهی اصلی روی سرور نصب کنید تا زنجیره اعتبار کامل شود.
۱۰. Too Many Redirects

خطای حلقه ریدایرکت زمانی دیده می شود که وب سایت بین HTTP و HTTPS به صورت رفت و برگشتی هدایت می شود و مرورگر هرگز به مقصد نهایی نمی رسد. این موضوع بیشتر وقتی رخ می دهد که در کلودفلر حالت Flexible فعال باشد اما روی خود سرور هم ریدایرکت به HTTPS تنظیم شده باشد. بهترین راه حل این است که حالت SSL در کلودفلر را روی Full یا Full Strict قرار دهید و سپس فایل htaccess یا کانفیگ Nginx را بررسی کنید تا هیچ ریدایرکت اضافی وجود نداشته باشد.
۱۱. Self Signed Certificate Warning
گواهی Self Signed گواهی ای است که سرور خودش صادر می کند و توسط هیچ مرجع صدور گواهی معتبر تایید نشده است. مرورگرها این گواهی ها را غیر قابل اعتماد می شناسند و هشدار امنیتی نمایش می دهند. این نوع گواهی فقط برای محیط های تست و توسعه مناسب است و نباید در وب سایت هایی که کاربران واقعی دارند استفاده شود. اگر لازم بود از آن استفاده کنید، می توانید Root CA مربوط به آن را در سیستم خود Import کنید تا مرورگر آن را قابل اعتماد بداند.
۱۲. Invalid OCSP Response
در زمان بارگذاری سایت، مرورگر وضعیت گواهی را از طریق OCSP بررسی می کند تا مطمئن شود گواهی باطل نشده است. اگر پاسخ سرور صادر کننده مبهم یا ناقص باشد، خطای Invalid OCSP Response نمایش داده می شود. برای رفع این مشکل بهتر است قابلیت OCSP Stapling روی سرور فعال شود. در این روش سرور وضعیت گواهی را کش کرده و به مرورگر ارائه می دهد، بنابراین اتصال سریع تر و پایدارتر می شود.
ابزارهای آنلاین برای بررسی و تحلیل SSL
قبل از هرگونه تغییر در سرور، ابتدا مشکل را با ابزارهای مناسب دقیق تشخیص دهید. در ادامه مهم ترین ابزارها و روش های خطایابی آورده شده است.
- Qualys SSL Labs (ssllabs.com)
کاربرد: کامل ترین تحلیل امنیتی SSL/TLS برای یک دامنه یا سرور.
خروجی: نمره از A+ تا F و گزارش مفصل درباره پیکربندی، زنجیره گواهی، پروتکل ها، سایفر سوئیت ها و آسیب پذیری های شناخته شده.
نکته: اگر نمره B یا C گرفتید معمولا مشکل از Chain ناقص، پشتیبانی پروتکل های قدیمی یا سایفر سوئیت های ضعیف است. - SSLShopper
کاربرد: بررسی سریع نصب صحیح گواهی و تاریخ انقضا.
ویژگی: نشان می دهد آیا فایل های میانجی (Intermediate) نصب شده اند یا خیر و هشدارهای معمول را ذکر می کند. - crt.sh
کاربرد: مشاهده تاریخچه تمام گواهی های صادر شده برای یک دامنه.
کاربرد عملی: با crt.sh می توانید ببینید چه گواهی هایی برای دامنه شما صادر یا تمدید شده و آیا مورد مشکوکی ثبت شده است یا خیر. - تست با cURL در ترمینال
برای دیدن جزئیات Handshake، نسخه TLS و هدرها از این دستور استفاده کنید:
curl -Iv https://example.com
این خروجی شامل اطلاعات اتصال، گواهی ارائه شده توسط سرور و نسخه پروتکل TLS است و برای تشخیص سریع بسیار مفید است.
- OpenSSL (ابزار حرفه ای خط فرمان)
برای بررسی دقیق تر اتصال و مشاهده زنجیره گواهی و پاسخ های OCSP از دستور زیر استفاده کنید:
openssl s_client -connect example.com:443 -servername example.com
توضیح: پارامتر -servername برای SNI ضروری است اگر سرور چند دامنه را روی یک آدرس میزبانی می کند.
نکات ساده برای بررسی نتیجه تست SSL
وقتی خروجی ابزارها را دیدید به این موارد توجه کنید:
- اگر فقط گواهی اصلی نمایش داده شود و خبری از گواهی های میانی نباشد یعنی زنجیره گواهی ناقص است.
در این حالت باید فایل CA Bundle را روی سرور نصب کنید. - اگر در خروجی نسخه TLS برابر ۱.۰ یا ۱.۱ بود یعنی سرور شما قدیمی است.
باید TLS 1.2 یا ۱.۳ را فعال کنید تا امنیت سایت بالا برود. - اگر در گزارش نام حملاتی مثل Heartbleed یا POODLE دیده شد یعنی پیکربندی امنیتی سایت مشکل دارد.
باید از راهنماهای Qualys کمک بگیرید و تنظیمات سرور را اصلاح کنید. - برای اطمینان بیشتر سایت را با موبایل و مرورگرهای مختلف باز کنید.
اگر سایت روی دسکتاپ باز شد اما روی موبایل خطا داد معمولا مشکل از Chain ناقص است.
رفع خطاهای SSL بر اساس نوع سرور
۱. Apache
اگر Apache استفاده می کنید باید فایل های SSL را در VirtualHost مربوط به پورت ۴۴۳ تعریف کنید. نمونه تنظیم درست:
<VirtualHost *:443>
ServerName example.com
SSLEngine on
SSLCertificateFile /path/to/your_domain_name.crt
SSLCertificateKeyFile /path/to/private.key
بسیار مهم؛ برای جلوگیری از خطای Chain
SSLCertificateChainFile /path/to/ca-bundle.crt
حذف نسخه های قدیمی و ناامن
SSLProtocol all -SSLv3 -TLSv1 -TLSv1.1
</VirtualHost>
نکته مهم: اگر زنجیره گواهی نصب نشود سایت روی برخی مرورگرها باز می شود اما روی برخی دستگاه ها (خصوصا موبایل) خطا می دهد.
۲. Nginx
در Nginx باید گواهی کامل (fullchain) و کلید خصوصی معرفی شود:
server {
listen 443 ssl http2;
server_name example.com;
ssl_certificate /path/to/fullchain.pem;
ssl_certificate_key /path/to/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_stapling on;
ssl_stapling_verify on;
}
نکته: فایل fullchain.pem شامل گواهی اصلی + گواهیهای میانی است. اگر از certbot استفاده کرده باشید معمولا همین فایل کافی است.
۳. LiteSpeed
لایت اسپید بیشتر تنظیمات Apache را ساپورت می کند اما از طریق پنل مدیریت هم قابل انجام است:
- وارد LiteSpeed WebAdmin شوید.
- به بخش Listeners > SSL بروید و مسیر گواهی و کلید را معرفی کنید.
- اگر قصد استفاده از HTTP/3 دارید باید پورت UDP 443 در فایروال باز باشد.
۴. Cloudflare
کلودفلر فقط یک پروکسی نیست؛ نوع SSL در آن تعیین می کند ارتباط چگونه رمزنگاری شود:
حالت ها:
Flexible → فقط ارتباط مرورگر تا Cloudflare امن است، از آنجا تا سرور شما بدون SSL
(این حالت معمولا باعث خطای ریدایرکت می شود)
Full → کل مسیر امن است اما گواهی روی سرور می تواند Self-Signed باشد
Full Strict → بهترین و امن ترین حالت
(سرور باید گواهی معتبر یا Cloudflare Origin داشته باشد)
توصیه نهایی
اگر کاربر از ایران یا کشورهایی با محدودیت دسترسی استفاده دارد، بهترین انتخاب Full Strict همراه با گواهی Origin Cloudflare است (۱۵ سال معتبر).
جلوگیری از بروز خطاهای SSL
برای اینکه هرگز با صفحه “اتصال امن نیست” روبرو نشوید، باید SSL سایت را به صورت اصولی و دائمی مدیریت کنید. مهم ترین اقدامات پیشگیرانه عبارتند از:
- نصب Chain کامل
همیشه از fullchain یا فایل bundle استفاده کنید. فقط استفاده از فایل .crt باعث بروز خطای Chain Incomplete می شود. - غیرفعال سازی نسخه های قدیمی TLS
نسخه های TLS 1.0 و TLS 1.1 دیگر ایمن نیستند. فقط TLS 1.2 و ۱.۳ را فعال نگه دارید. - مانیتورینگ و هشدار
با ابزارهایی مانند UptimeRobot و StatusCake می توانید قبل از منقضی شدن گواهی هشدار دریافت کنید. - ریدایرکت استاندارد
همیشه تمام درخواست های HTTP را با ریدایرکت ۳۰۱ به HTTPS منتقل کنید تا محتوا فقط از مسیر امن نمایش داده شود. - تمدید خودکار
اگر از Let’s Encrypt استفاده می کنید، حتما certbot renew را فعال و تست کنید تا SSL هر ۹۰ روز به صورت خودکار تمدید شود.
چک لیست نهایی عیب یابی SSL
وقتی سایتی خطای SSL می دهد، بهتر است مرحله به مرحله پیش بروید تا محل مشکل سریع پیدا شود.
- DNS را بررسی کنید. دامنه باید به سرور درست اشاره کند. از ping یا dig استفاده کنید.
- پورت ۴۴۳ باید باز باشد. اگر فایروال مسدود کرده باشد سایت اصلا Load نمی شود.
- اعتبار گواهی را چک کنید. تاریخ انقضا و نام دامنه باید مطابق سایت باشد. ابزار SSLShopper برای این کار مناسب است.
- زنجیره گواهی را بررسی کنید. اگر Intermediate نصب نباشد، سایت روی بعضی دستگاه ها خطا می دهد. نتیجه را در SSL Labs ببینید.
- Mixed Content را بررسی کنید. اگر منابع با http لود شوند قفل کنار آدرس بار باز می شود. کنسول مرورگر بهترین محل تشخیص است.
- اگر از Cloudflare استفاده می کنید، حالت SSL را روی Full یا Full Strict قرار دهید و کش را پاک کنید.
- HSTS و کش مرورگر را پاک کنید. برای تست دقیق، سایت را در حالت Incognito باز کنید.
نتیجه گیری
SSL دیگر یک قابلیت اضافی نیست بلکه پایه امنیت وب مدرن است. خطاهای SSL با وجود ظاهر ترسناک، در اکثر موارد با چند تنظیم ساده حل می شوند. اگر گواهی به درستی نصب شود، Chain کامل باشد و TLS جدید و امن فعال باشد، سایت علاوه بر امنیت بهتر، شانس بیشتری برای قرار گرفتن در نتایج بالاتر گوگل خواهد داشت.
پیشنهاد نهایی این است که همین حالا سایت خود را در SSL Labs بررسی کنید. اگر نمره A+ نیست، تنظیمات سرور را طبق بخش های قبل اصلاح کنید.
اگر تجربه ای در برخورد با خطاهای خاص SSL داشته اید یا هنوز مشکلی حل نشده است، می توانید مطرح کنید تا راهنمایی دقیق ارائه شود.