نصب گواهی SSL بر روی وب سایت باعث میشود تا بتوانید از پروتکل امن HTTPS برایِ رمزگذاری اطلاعات منتقل شده در وب سایت مطمئن باشید. اما اگر قصد داشته باشید تا یک گواهی SSL را بر روی وب سایت وردپرسی خود نصب کنید، ممکن است برخی چالشها و مشکلات نیز بر سر راه شما وجود داشته باشد. یکی از این مشکلات، پیغام خطای SSL Handshake Failed است. اگر حین نصب گواهی SSL با این پیغام مواجه شدید، نگران نباشید. این پیغام یکی از خطاهای رایج است و ما در این مقاله از وب سایت آکادمی SSL میخواهیم نحوهی رفع آن را به شما توضیح دهیم.
همچنین برای مشاهده لیست انواع ارور های مرتبط با اس اس ال می توانید از لیست مقالات خطای SSL در وبسایت ما بازدید نمایید.
خطای SSL Handshake چیست؟
قبل از اینکه به سراغِ مفاهیمی برویم که باعث بروزِ پیغام خطای SSL Handshake میشود، بهتر است بدانیم که اصولاً SSL Handshake چیست. همانطور که در مقدمهی این مقاله از وب سایت آکادمی SSL نیز توضیح داده شد، گواهینامه SSL و همچنین TLS پروتکلهایی هستند که برایِ انتقال امن داده بین سرورها و سیستمهای خارج از سرور مثل مرورگرها مورد استفاده قرار میگیرند. در واقع گواهی SSL یا TLS باعث خواهد شد تا وب سایت شما از پروتکل امن HTTPS برای انتقال داده استفاده کند.
SSL Handshake اولین قدم در فرآیند استفاده از پروتکل HTTPS است. برای توضیح بیشتر باید بدانیم که احراز هویت و برقراری ارتباط، مرورگر کاربر و همچنین وب سرور باید یک سری بررسیها را انجام دهد و با استفاده از آنها پارامترهای استفاده از پروتکل HTTPS را تعیین کند. یکی از اولینِ این بررسیها، SSL Handshake است.
اجازه دهید موضوع را کمی بیشتر توضیح دهیم. وقتی یک کاربر میخواهد تا با استفاده از مرورگر خود به یک وب سایت دسترسی پیدا کند، مرورگر یک درخواست اتصال امن را به سرور ارسال میکند. پس از ارسال این درخواست، سرور یک کلید عمومی را به کامیپوتر کاربر ارسال میکند. کامپیوتر با استفاده از کلید عمومی دریافت شده از طرفِ سرور، کلیدی را تولید و آن را رمزگذاری میکند.
در مقاله Encryption چیست، می توانید روال کامل این فرآیند را بررسی نمایید.
اگر بخواهیم تمام این موضوع را در یک جمله خلاصه کنیم، باید بگوییم که بدون استفاده از گواهی SSL، یک اتصال ایمن ایجاد نخواهد شد. این موضوع علاوه بر اینکه خطرهای امنیتی بسیاری را برای وب سایت شما به همراه خواهد داشت، همچنین باعث خواهد شد که پیغام Connection is not Private نیز برای کاربر صادر شود. بدیهی است که در چنین مواردی احتمال اینکه کاربر از وب سایت شما خارج شود بسیار زیاد است.
عواملی که باعث بروز پیغام خطای SSL Handshake میشوند
در ابتدا باید بدانیم که پیغام خطای SSL Handshake یا Error 525 به این معنی است که سرور و مرورگر قادر به ایجاد یک اتصال ایمن نیستند. این اتفاق ممکن است به دلایل مختلفی روی دهد. اما بهطور کلی بروز خطای 525 به این مفهوم است که SSL Handshake بینِ دامنهای که از Cloudflare استفاده میکند و وب سرور ایجاد نشده است.
در نظر داشته باشید که خطای SSL ممکن است یا در سمت کلاینت رخ دهد و یا در سمتِ سرور؛ دلایل مهم بروز این خطا در سمت کلاینت میتواند عوامل زیر باشد:
- آپدیت نبودن تاریخ و زمان در Device کاربر
- مشکل در پیکربندی مرورگر کاربر
- رهگیری ارتباط توسط فرد ثالث
همچنین وجود مشکل در سمت سرور میتواند باعث بروز این پیغام خطا شود. از جمله مهمترین این مشکلات میتوان به موارد زیر اشاره کرد:
- استفاده از گواهی SSL نامعتبر و یا منقضی شدن گواهی
- عدم پشتیبانی پروتکل استفاده شده توسط کلاینت در سرور
- عدم تطابق مجموعهی رمزنگاری (Cipher Suite)
بهطور معمول اگر SSL Handshake ناموفق باشد، دلیل آن را میتوان در مشکلات وب سایت یا سرور و یا تنظیمات SSL جستجو کرد.
5 روش مؤثر برایِ رفع خطای SSL Handshake
تا این قسمت از مقالهی وب سایت آکادمی SSL نکاتی را در موردِ خطای SSL Handshake آموختیم. اما حالا باید نحوهی رفعِ آن را نیز یاد بگیریم. با توجه به اینکه نمایش پیغام خطای SSL Handshake Failed میتواند به دلایل مختلفی روی دهد، نمیتوان نسخهی واحدی برایِ رفعِ آن تجویز کرد.
با این حال روشهای مختلفی برایِ رفع این پیغام خطا وجود دارد. بنابراین بهترین روش این است که این روشها را یک به یک آزمایش کنید و ببینید که آیا خطا برطرف شده است یا نه. اگر مشکل همچنان برقرار بود، راهحل بعدی را امتحان کنید. در ادامه 5 روش برای حل این موضوع ارائه شده است:
- زمان و تاریخ سیستم خود را بهروز کنید.
- بررسی کنید که آیا گواهی SSL شما معتبر است یا خیر
- مرورگر خود را برای استفاده از گواهی SSL/TLS پیکربندی کنید
- بررسی کنید که آیا سرور شما برایِ پشتیبانی از SNI بهدرستی پیکربندی شده است یا خیر
- مطمئن شوید که Cipher Suite یا همان مجموعهی رمزنگاری بهکارگیری شده، مطابقت دارند
در ادامه توضیحات این روشها ارائه شده است.
بهروزرسانی تاریخ و ساعت سیستم
ابتدا از یک دلیل غیرمحتمل شروع میکنیم. بدیهی است که رفعِ مشکل بهروز نبودن تاریخ و ساعت سیستم، بسیار ساده است و اگر مشکل ایجاد شده به این دلیل باشد، خیلی سریع به راهحل میرسید.
توجه داشته باشید که اگر تاریخ یا ساعت سیستم شما بهروز نباشد، میتواند ارتباط SSL Handshake را قطع کند. این موضوع میتواند بهدلیل یک خطای انسانی ایجاد شده باشد و یا تنظیمات سیستم شما با مشکل روبرو شده باشد. بنابراین بهعنوان اولین روش، ساعت و تاریخِ سیستم خود را چک کنید. اگر همه چیز درست بود، به مرحلهی بعدی بروید.
کنترل معتبر بودن گواهی SSL
در گامِ بعدی باید کنترل کنید که آیا گواهی SSL شما همچنان معتبر است یا خیر. با توجه به اینکه گواهیهای SSL دارای تاریخ انقضاء هستند، در صورتیکه این تاریخ گذشته باشد، مرورگر گواهی SSL را بهعنوان یک گواهی نامعتبر شناسایی کرده و بدین ترتیب پیغام خطای SSL Handshake صادر خواهد شد.
برای کنترلِ تاریخ انقضای گواهی SSL ابزارهای مختلفی وجود دارد که از جملهی آنها میتوان به ابزار معرفی شده توسط Qualys اشاره کرد:
این ابزار هم رایگان و هم قابل اعتماد است. تنها کاری که باید انجام دهید این است که نام دامنهی خود را در قسمت Hostname وارد کنید و سپس بر روی کلید Submit کلیک کنید. هنگامی که فرآیندِ بررسی گواهی SSL وب سایت شما انجام شد، نتایج مشابه آنچه که در شکل زیر نشان داده شده است، به اطلاع شما خواهد رسید:
در این گزارش میتوانید از معتبر بودن گواهی وب سایت خود مطلع شوید و همچنین اگر گواهی SSL وب سایت شما به هر دلیل باطل شده باشد، میتوانید از این موضوع اطلاع پیدا کنید.
در هر صورت بهروزرسانی گواهی SSL یکی از راهکارهایی است که میتواند باعث حل شدن نمایش پیغام خطای SSL Handshake شود.
پیکربندی مرورگر برای پشتیبانی کامل از گواهی SSL/TLS
در برخی موارد، بهترین راهحل برای تعیین علت اصلی یک مشکل، استفاده از روش حذف است. همانطور که قبلاً نیز اشاره شد، پیغام خطای SSL Handshake ممکن است بهدلیلِ پیکربندی نادرست مرورگر اتفاق افتد. سریعترین راه برای اینکه به این نتیجه برسید که آیا مشکل از استفاده از یک مرورگر است یا خیر، این است که سعی کنید از یک مرورگر دیگر استفاده کنید. همچنین بهعنوان یک راهکار دیگر، سعی کنید تمامی افزونههایی را که بر روی مرورگر خود نصب کردهاید، غیر فعال کرده و Browser خود را به تنظیمات کارخانه برگردانید.
یکی دیگر از مشکلات احتمالی مرورگرها، عدم تطابق پروتکلها است. بهعنوان نمونه اگر مرورگر شما از پروتکل TLS 1.0 یا TLS 1.1 پشتیبانی کند و شما در سرور خود از پروتکل TLS 1.2 استفاده کرده باشید، پشتیبانی از پروتکل استفاده شده در سرور انجام نخواهد شد و شما پیغام خطای SSL Handshake را خواهید دید.
نحوهی بررسی این موضوع در مرورگرهای مختلف، متفاوت است. بهعنوان مثال برای کنترل این مورد در گوگل کروم، مراحل زیر را به ترتیب انجام دهید:
گام اول: مرورگر خود را باز کرده و بخش Setting > Advanced را باز کنید. با این کار تعدادی از گزینههای منو گسترش خواهد یافت.
گام دوم: در قسمت System، بر روی گزینهی Open your computer’s proxy setting کلیک کنید. این گزینه در شکل زیر نشان داده شده است.
گام سوم: در اینصورت یک پنجرهی جدید برای شما باز خواهد شد. در این پنجره گزینهی Advanced را انتخاب کنید. سپس در بخش Security بررسی کنید که آیا گزینهی Use TLS 1.2 بهصورت علامتدار است یا خیر. اگر نه، این گزینه را فعال کنید. نحوهی انجامِ این کار در شکل زیر نشان داده شده است:
گام چهارم: همچنین توصیه میشود که گزینههای SSL 2.0 و SSL 3.0 را غیرفعال کنید. همین موضوع در مورد TLS 1.0 و TLS 1.1 نیز صادق است.
هنگامی که کارهای گفته شده در این قسمت را بهصورت کامل انجام دادید، بر روی کلید OK کلیک کنید و سپس بررسی کنید که آیا مشکل نمایش پیغام SSL Handshake برطرف شده است یا خیر.
همچنین به یاد داشته باشید که اگر از مرورگرهای Safari یا Mac OS استفاده میکنید، گزینهای برایِ فعالسازی یا غیرفعالسازی پروتکلهای SSL وجود ندارد. در این مرورگرها TLS 1.2 بهصورت خودکار و پیشفرض فعال میشود. همچنین اگر از سیستم عامل لینوکس استفاده میکنید، میتوانید به راهنمای Red Hat در مورد TLS Hardening مراجعه کنید.
بررسی پیکربندی سرور برای پشتیبانی از SNI
در برخی موارد ممکن است بهدلیل پیکربندی نامناسب نام سرور یا همان SNI، گواهی SSL با مشکل مواجه شود. SNI در واقع همان قابلیتی است که با استفاده از آن سرور میتواند از چندین گواهی TLS بر روی یک IP میزبانی کند.
اگر چه هر وب سایت در یک سرور دارایِ گواهی مربوط به خود است، اما با این حال اگر SNI در سرور فعال نباشد، میتواند باعث اختلال در گواهی SSL شود. دلیل آن هم این است که سرور نمیداند از کدام گواهی باید برای کدام وب سایت استفاده کند.
برای کنترل SNI در سرور نیز ابزارهای مختلفی وجود دارد که یکی از محبوبترینِ آنها، همان Qualys’ SSL Server Test است که در قسمتهای قبلی این مقاله از وب سایت آکادمی SSL آن را معرفی کردیم. نام دامنهی وب سایت خود را وارد کرده و سپس بر روی کلید Submit کلیک کنید.
بعد از چند لحظه گزارشی ارائه میشود که در آن باید به دنبال عبارتِ This site works only in browsers with SNI support باشید. شکل زیر این موضوع را به روشنی نشان میدهد:
یک روش دیگر برای تشخیص اینکه یک سرور از SNI استفاده میکند یا خیر، مرور نام سرورها در پیام ClientHello است. این روش نسبت به روش قبلی فنیتر است، اما اطلاعات زیادتری را هم ارائه میکند.
اگر با ابزارهایی مثل OpenSSL Toolkit یا Wireshark آشنا باشید، ممکن است استفاده از این روش را نسبت به روش قبلی ترجیح دهید. برای این منظور میتوانید از openssl s_client با و بدون گزینهی -servername استفاده کنید. انجامِ این کار با استفاده از کُدهای زیر امکانپذیر است:
# without SNI
$ openssl s_client -connect host:port
# use SNI
$ openssl s_client -connect host:port -servername host
اگر در گزارش دریافتی دو گواهی متفاوت با یک نام دریافت کنید، به این معنی است که SNI پشتیبانی شده و همچنین بهدرستی پیکربندی نیز شده است. اما اگر خروجی در گواهی برگشتی متفاوت باشد، نشان از این موضوع است که به SNI نیاز است، اما پیکربندی آن بهدرستی انجام نشده است. برای حل این مشکل ممکن است نیاز داشته باشید تا از یک IP اختصاصی استفاده کنید.
اطمینان از مطابقت کامل Cipher Suite ها
اگر 4 راهکار قبلی را انجام داده، اما مشکل پیغام SSL Handshake همچنان وجود دارد، بهعنوان راهحل نهایی باید مجموعهی رمزنگاری را کنترل کنید. بهعنوان توضیح بیشتر در نظر داشته باشید که Cipher Suite ها در واقع مجموعهای از الگوریتمهایی هستند که برای تبادل کلیدهای تولیدی، رمزگذاری انبوه داده و همچنین پیام کد تائید بهکارگیری میشوند و از آنها برایِ ایمنسازی اتصالات در شبکههای SSL و TLS استفاده میشود.
حالا اگر مجموعهی رمزنگاری استفاده شده در سرور با آنچه که در کلودفلر مورد استفاده قرار میگیرد متفاوت باشد و یا از آن پشتیبانی نشود، میتواند منجر به دریافت پیغام خطای SSL Handshake شود.
برای بررسی این موضوع نیز SSL Qualys در کنار شما است. هنگامی که نامِ دامنهی خود را در این وب سایت وارد میکنید، یک صفحهی خلاصه آنالیز به شما نشان داده خواهد شد. در همین صفحه میتوانید اطلاعات مربوط به Cipher Suite ها را پیدا کنید. نمونهی این گزارش در شکل زیر نشان داده شده است:
شما میتوانید از این صفحه برایِ اطلاع از رمز و پروتکلهایی که سرور از آنها پشتیبانی میکند استفاده کنید. در این گزارش باید بهدنبال مواردی باشید که وضعیتِ آنها Weak گزارش شده است. علاوه بر این موارد، در این بخش الگوریتمهای خاصِ Cipher Suite ها نیز شرح داده شده است.
مقاله پیشنهادی : ciphertext چیست؟
جمعبندی
نصب یک گواهی SSL معتبر بر روی تمامی وب سایتها از جمله مواردی است که برای ارتقای امنیت اطلاعات بسیار مهم است. اما در برخی موارد پس از نصب گواهی SSL بر روی وب سایت، ممکن است پیغامهای خطایی صادر شود که باید آنها را رفع کنید. یکی از گیج کنندهترینِ آنها، پیغام خطای SSL Handshake Failed یا همان پیغام خطای Cloudflare 525 است. نمایش این پیغام میتواند دلایل متعددی داشته باشد. همچنین این امکان وجود دارد که این مشکل مربوط به کلاینت و یا سرور باشد. با توجه به اهمیت این موضوع، در این مقاله از وب سایت آکادمی SSL علاوه بر اینکه دلیل نمایش این پیغام خطا را عنوان کردیم، همچنین 5 راهکار عملی را نیز برایِ رفع آن توضیح دادیم.
سؤالات متداول
دلیل پیغام خطای SSL Handshake چیست؟
این پیغام بهدلایل متعددی میتواند صادر شود که به دو دستهی کلی مشکلات سمت Client و مشکلات سمت Server تقسیم میشوند.
برای رفع خطای SSL Handshake چه باید کرد؟
در ابتدا باید فهمید که دلیلِ بروز این خطا چیست. 5 راهکار عملی رفع خطای SSL Handshake در این مقاله از وب سایت آکادمی SSL ارائه گردیده است.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.