sni چیست

SNI چیست و چه کاربردی برای امنیت وب‌سایت‌ها دارد؟ (به زبان ساده)

sni یک افزونه برای گواهینامه ssl است که امکان شکل‌گیری ارتباطی ایمن بین مرورگر بازدیدکننده با وب‌سایت مد نظرش را فراهم می‌کند.

بخش بزرگی از ارتباطات دیجیتال، از طریق پروتکل‌های رمزنگاری‌شده برقرار می‌شود؛ برای همین بهتر است که با مفاهیم فنی زیرساخت، مانند SNI یا Server Name Indication آشنا باشیم.

امروزه حدود ۸۵ درصد از وب‌سایت‌ها از HTTPS یا همان پروتکل انتقال ابرمتن امن (hypertext transfer protocol secure) استفاده می‌کنند که کانال‌های امنی را بر بستر SSL/TLS برقرار می‌سازد.

این چه ارتباطی با SNI دارد؟

SNI پیشرفتی در پروتکل TLS است و محدودیت میزبانی چندین گواهی SSL روی یک آدرس IP واحد را رفع می‌کند.

شاید این توضیحات الان کمی برایتان گیج‌کننده باشد. نگران نباشید؛ در ادامه، به زبان ساده توضیح می‌دهم که SNI چیست، چطور کار می‌کند و چطور SNI را فعال کنیم.

SNI چیست و چه وظیفه‌ای دارد؟

SNI مکانیزمی در پروتکل TLS است که به سرور می‌گوید کاربر قصد دسترسی به کدام وب‌سایت را دارد؛ بدون SNI، میزبانی چندین سایت روی یک IP عملاً ممکن نیست.

اجازه دهید با یک مثال، مفهوم SNI را روشن‌تر کنم:

SNI را مانند تحویل یک نامه به یک مجتمع مسکونی در نظر بگیرید، نه یک خانۀ تک‌واحدی. در خانۀ تک‌واحدی، آدرس خیابان، کوچه و پلاک به‌تنهایی برای رساندن نامه به دست گیرندۀ درست کافی است. اما در مجتمع آپارتمانی، علاوه بر آن‌ها، به شمارۀ واحد هم نیاز دارید تا نامه به دست شخص درست برسد.
سرورهای وب هم مانند مجتمع مسکونی، اغلب چندین دامنه را در خود جای می‌دهند و این موضوع تشخیص اینکه کاربر دقیقاً می‌خواهد به کدام دامنه دسترسی داشته باشد را سخت می‌کند. برای حل این مشکل، SNI وارد عمل می‌شود.

اگر SNI را نداشته باشیم، امنیت سایت‌ها به‌خطر میفتد. اما چرا؟!

وقتی شما وارد یک سایت (مثلاً google.com) می‌شوید، اطلاعات بین کامپیوتر شما و سرور گوگل رد و بدل می‌شود. الان تقریباً همۀ سایت‌ها این ارتباط را رمزنگاری می‌کنند تا هیچ‌کس وسط این تبادل اطلاعات نتواند متوجه شود که چه چیزی می‌فرستید و چه چیزی دریافت می‌کنید.

این رمزنگاری با پروتکلی به اسم HTTPS انجام می‌شود.

HTTPS یعنی همان اینترنت معمولی (HTTP) ولی با قفل امنیتی اضافه! این قفل ایمنی با تکنولوژی SSL/TLS ساخته می‌شود. در مقاله «https چیست» می‌توانید در این باره مطالعه کنید. 

قدیم‌ترها، یک مشکلی وجود داشت:

وقتی روی یک سرور چند سایت وجود داشت (مثلاً site1.com و site2.com) و همه با یک آدرس IP بودند؛ وقتی یک نفر به آن IP وصل می‌شد و می‌خواست ارتباط امن بگیرد، کامپیوتر سرور نمی‌دانست کدام سایت رو برگرداند! 

چون هنوز اطلاعات رمزنگاری نشده بودند و اسم سایت را نمی‌توانست بخواند؛ در نتیجه امکان این که گواهی SSL مخصوص آن سایت رو بفرستد، وجود نداشت.

راه‌حل این مشکل، SNI بود.

SNI باعث می‌شد قبل از شروع رمزنگاری کامل، مرورگر اسم سایتی را که می‌خواهد ببیند، به سرور بگوید. سرور هم با دانستن اسم سایت، گواهی SSL درستی را می‌فرستاد.

در واقع، SNI یک افزونه برای پروتکل TLS است که این مشکل را برطرف می‌کند و به کلاینت (مرورگر) اجازه می‌دهد نام سایت را قبل از تبادل گواهی بفرستد.

البته بد نیست بدانید که قبل از SNI، راه‌حلِ «آدرس IP مجزا برای هر سایت» استفاده از گواهی SAN یا Subject Alternative Name بود؛ مشکل SNA هزینۀ بالا، منعطف نبودن و نیازمندی به فهرست کردن همۀ نام‌ها در گواهی بود.

الان، با این روش، چند سایت می‌توانند روی یک IP باشند و هر کدام گواهی SSL خودشان را جداگانه داشته باشند.

خیلی ساده و خلاصه بگویم:

  • HTTPS یک تونل امن است که بین کاربر و سایت کشیده می‌شود تا اطلاعات به‌شکل رمزنگاری‌شده عبور کنند و کسی وسطش نتواند جاسوسی نکند.
  • SNI هم یک روش است که باعث می‌شود سرور بفهمد کاربر دسترسی به کدام سایت را می‌خواهد (حتی وقتی چند تا سایت با یک IP هستند.)
  • بدون SNI، سرور اشتباه می‌کرد و نمی‌دانست کدام قفل امنیتی (SSL) را برگرداند.
  • با SNI، این مشکل حل شد.
  • افزونه SNI مانع از رخداد خطایی می‌شود که نامش Common Name Mismatch Error است.

عملکرد sni با رسم شکل

حواستان باشد که: 

تأمین امنیت، یک اصل بسیار مهم در دنیای اینترنت است؛ حواستان نباشد، خطرات از ناکجا ظاهر می‌شوند و خسارات جبران‌ناپذیری وارد می‌کنند؛ به همین خاطر، کلی استاندارد، گواهینامه و پروتکل امنیتی ایجاد شده‌اند تا هم کاربران و هم سرورهایی که وجود اینترنت را ممکن کرده‌اند، با امنیت کامل به کارشان ادامه دهند.

بارها از SSL نام بردیم، اگر موافق باشید، طی یک بخش کوتاه کلیت آن را تعریف کنیم.

💡 مروری بر تعریف SSL

ردوبدل شدن داده‌ها بین وب‌سایت‌ها و مرورگر کاربران، توسط پروتکلی با نام HTTP انجام می‌شود که ذاتاً امنیت بالایی ندارد! به همین خاطر، نسخۀ ایمن این پروتکل، یعنی HTTPS مدت‌ها است که جایگزین شده و حالا اکثریت قاطع وب‌سایت‌ها از آن استفاده می‌کنند.

آن s که اضافه می‌شود، از کلمۀ Secure به معنای ایمن می‌آید و این گواهینامۀ SSL است که http را به https تبدیل می‌کند.

این گواهینامه با رمزنگاری داده‌های انتقالی و افزودن لایه‌های امنیتی، مانع از آن می‌شود که در بین راه، افرادی که نباید به آن‌ها دسترسی پیدا نکنند!

همان‌طور که گفتیم، TLS نسخۀ پیشرفته‌تر SSL است و الان تقریباً همه‌جا از این نسخۀ به‌روزتر استفاده می‌شود؛ منتهی همچنان SSL نامی است که در بیشتر منابع برای این گواهینامه به کار گرفته می‌شود.

توصیه می‌کنیم مقالۀ «گواهینامه SSL چیست و چه کاربردی دارد» را با هدف شناخت بهتر و بیشتر این نوع گواهینامه‌ها بخوانید.

نقش SSL در امنیت سایت

برگردیم سراغ بحث خودمان؛ اصلاً چه لزومی دارد که از این افزونه روی SSL استفاده کنیم؟!

چرا باید از SNI استفاده کنیم؟

برای پاسخ به این سؤال، اول باید نگاه کوتاهی به طرز کار SSL داشته باشیم.

قبل از اینکه داده‌ای بین مرورگر کاربر و سرور سایت ردوبدل شود، فرایندی به نام TLS/SSL handshake رخ می‌دهد؛ خیلی ساده بگوییم، در اینجا، سرور هویت خودش را به برای مرورگر اثبات می‌کند؛ به‌محض اینکه مروگر درستی هویت را تشخیص دهد، ارتباط برقرار می‌شود و دو طرف شروع به تبادل اطلاعات می‌کنند.

تفاوت HTTP با پروتکل امن SSL در چیست

همان‌طور که بالاتر هم گفتیم، مشکل زمانی رخ می‌دهد که چندین وب‌سایت روی یک سرور با یک آدرس آیپی میزبانی می‌شوند.

🔗 اینجا از شما دعوت می‌کنیم مقالۀ آی پی چیست را بخوانید تا با دو ورژن آن یعنی IPv4 و IPv6 کاملاً آشنا شوید.

تعداد دستگاه‌هایی که باید آیپی داشته باشند، از تعداد آیپی‌های ورژن چهارم یا IPv4 بیشتر شده است و به همین خاطر IPv6 به وجود آمد؛ منتهی ورژن جدید هنوز کاملاً جا نیفتاده و آیپی اصلی همان IPv4 است که گفتیم از نظر تعداد با محدودیت بسیار شدیدی مواجه شده است.

خلاصه کنیم، برای هر سایت که روی یک سرور واحد میزبانی می‌شود، نمی‌توانیم آیپی جداگانه داشته باشیم و ناچاریم برای همۀ آن‌ها از یک آدرس IP واحد استفاده کنیم.

در نتیجۀ این موضوع، وقتی فرایند TLS/SSL handshake از جانب مرورگر کاربر آغاز می‌شود، مشخص نیست که هدف برقراری ارتباط با کدام‌یک از وب‌سایت‌های روی آن سرور است! در بیشتر مواقع، پاسخ از یک وب‌سایت دیگر و طبیعتاً گواهی SSL اشتباه به مرورگر بازدیدکننده برگردانده می‌شود و ارتباطی هم شکل نخواهد گرفت!

بالاتر هم گفتیم که SNI یا Server Name Indicator برای رفع همین مشکل ساخته شد. با کمک این افزونه، از همان ابتدای فرایند handshake مشخص می‌شود که مرورگر می‌خواهد به کدام وب‌سایت درخواست بازدید بفرستد و مشکلی پیش نمی‌آید.

در مجموع، دلایل زیر، استفاده از این افزونه یا بهتر است بگوییم تکنولوژی sni را توجیه می‌کنند:

  • کار صاحبان و ادمین‌های سایت‌ها برای مدیریت گواهینامه‌های SSL آسان‌تر می‌شود؛ چون نیازی نیست برای هر سایتی که به رمزنگاری این گواهی احتیاج دارد، آدرس آیپی جداگانه‌ای اختصاص دهند؛
  • سرورها می‌توانند از چندین گواهی SSL برای چندین وب‌سایت که همه یک آدرس آیپی واحد دارند، استفاده کنند؛

علاوه‌بر این‌ها، SNI به‌خاطر ویژگی‌هایی که دارد، تأثیر مثبتی روی افزایش امنیت هم می‌گذارد. جلوتر بیشتر راجع‌به کاربرد sni و مزایای آن صحبت می‌کنیم.

موافقید طرز کار این افزونه کارراه‌انداز را بررسی کنیم؟

🧩 پیشنهاد خواندنی:‌ تفاوت VPN و VPS در چیست و هر کدام چه کابردهایی دارند؟

تکنولوژی SNI چطور کار می‌کند؟

فهمیدیم که SNI کمک می‌کند مرورگر درخواستش را دقیقاً برای وب‌سایتی بفرستد که قصد بازدید از آن را دارد. این بخش را برای آن نوشتیم که بفهمیم چطور این کار انجام می‌شود.

اول از همه این را بگوییم که اگر SSL در کار نباشد، مشکلی هم در کار نیست! حتی اگر هزاران وب‌سایت هم آدرس آیپی یکسان داشته باشند، باز هم ارتباط ناامن از طریق HTTP بدون مشکل برقرار می‌شود و از همان ابتدا مشخص است که مروگر می‌خواهد درخواستش را به کدام وب‌سایت بفرستد!

دلیل هم این است که HTTP وقتی درخواست بازدید از یک وب‌سایت را دریافت می‌کند، host name را در هدر می‌بیند.

ولی وقتی SSL وارد عمل می‌شود، handshake قبل از اینکه مرورگر هرگونه اطلاعاتی بفرستد شروع خواهد شد؛ همان تبادل اطلاعاتی که فقط به بررسی هویت طرفین می‌پردازد قبل از آن هیچ داده‌ای مربوط به درخواست و پاسخ ردوبدل نمی‌شود.

به خاطر همین، SNI ورود می‌کند و مطمئن می‌شود که host name یا نام دامنۀ سایت، قبل از تأیید درستی گواهی SSL بین مرورگر کاربر و سرور میزبان وب‌سایت ردوبدل خواهد شد.

طرز کار sni چیست

چند بار گفتیم که SNI یک افزونۀ SSL یا TLS است. پروتکل رمزنگاری، بخشی از کلیت پروتکل TCP/IP است. در نتیجه، SSL با رمزنگاری داده‌ها، TCP را گسترش می‌دهد. ضمناً فهمیدیم این گواهینامه با افزودن یک لایۀ امنیتی، HTTP را به HTTPS تبدیل می‌کند.

وقتی TLS با SNI به کار گرفته می‌شود، handshake شامل یک فیلد دیگر در پروتکل منیتی خواهد شد.

در پیام Client Hello (اولین مرحله از هندشیک) یک فیلد تحت عنوان ServerName دیده می‌شود که پر کردن آن اختیاری است! کاربر نام سایتی که می‌خواهد واردش بشود را در آن وارد می‌کند و به این ترتیب، همان سایت هم پاسخ کاربر را می‌دهد و ارتباط ایمن شکل می‌گیرد.

گفتیم SNI مخفف Server Name Indicator است و بدنیست رابطۀ بین SNI و Server Name را هم زیر ذره‌بین ببریم.

🧩 پیشنهاد خواندنی:‌ سرور چیست؟ آشنایی با مفهوم و انواع سرور (به زبان ساده)

چه ارتباطی بین SNI و server name وجود دارد؟

به بیان خیلی ساده، منظور از Server Name نام یک کامپیوتر است. در وب‌سرورها، این نام برای کاربران نهایی نمایش داده نمی‌شود؛ مگراینکه آن سرور فقط میزبان یک نام دامنه باشد؛ در چنین شرایطی، server name همان نام دامنه است.

با اینکه معنای SNI طوری است که شاید فکر کنید server name را شناسایی می‌کند، باید بگوییم هدف از ساخت sni این بود که بتواند کار تشخیص host name یا همان نام دامنه را تسهیل کند. برای پردازش درست درخواست بازدیدکننده، نام دامنه باید از server name که در واقع نام سرور میزبان وب‌سایت است، تفکیک شود!

پس:

  • Server Name نام اصلی یک کامپیوتر (سرور) است که از یک یا چند وب‌سایت میزبانی می‌کند و می‌توان آن را به آدرس یک ساختمان فیزیکی تشبیه کرد؛
  • SNI افزونۀ SSL است که این امکان را در اختیار مرورگر کاربر قرار می‌دهد تا به سرور بگوید قصد بازدید از کدام وب‌سایت (نام دامنه) قرارگرفته روی آن سرور را دارد.

بدون SNI، اگر سروری بخواهد از گواهی SSL استفاده کند، فقط توانایی میزبانی از یک وب‌سایت را خواهد داشت؛ یعنی هاست اشتراکی، VPS و انواع سرورهایی که میزبان چندین وب‌سایت هستند، نمی‌توانند سراغ پروتکل HTTPS بروند و ارتباط ایمن بین طرفین را تضمین کنند.

SNI راهکاری بود که برای رفع این مشکل ارائه شد. همان‌طور که گفتیم، این افزونه باعث می‌شود شناسایی وب‌سایتی که کاربر می‌خواهد واردش شود امکان‌پذیر باشد.

حالا وقت بررسی و نگاه به مزایا و معایب این افزونۀ کاربردی است.

🧩 پیشنهاد خواندنی: هاست و دامنه چیست؟

مزایا و محدودیت‌های SNI در یک نگاه 🔍

احتمالاً تا اینجا خودتان برخی از مزیت‌های sni را فهمیده باشید؛ ولی برای خالی نبودن عریضه، جداگانه آن‌ها را بررسی خواهیم کرد.

مزایا

این‌ها نقاط قوت این افزونۀ تکمیلی و کارآمد هستند:

امکان میزبانی از چندین گواهینامۀ SSL

به لطف SNI، می‌توان از چندین گواهینامۀ SSL روی یک سرور میزبانی کرد؛ به عبارتی، می‌توانیم از نام‌های دامنۀ مختلف به شکلی ایمن روی یک هاست نگهداری کنیم.

افزایش چشمگیر امنیت

همان‌طور که گفتیم، اگر SNI در کار نبود، امکان استفاده از گواهینامۀ SSL برای تمام وب‌سایت‌های قرارگرفته روی یک سرور واحد هم وجود نداشت! از آنجایی که این گواهینامه نقش بسیار پررنگی در تأمین امنیت دارد، عدم برخورداری از آن، سایت و بازدیدکنندگانش را در معرض خطرات امنیتی جدی قرار می‌دهد؛ ولی این افزونه اجازه می‌دهد با خیال راحت برای تک‌تک نام‌های دامنه، گواهینامه‌های SSL جداگانه تهیه کنیم.

صرفه‌جویی در هزینه‌ها

با فعال‌سازی sni، نیازی نیست برای هر وب‌سایتی که روی سرور میزبانی می‌شود آدرس آیپی جداگانه تهیه کرد! کاری که بسیار هزینه‌بردار است و در نهایت روی قیمت میزبانی هم اثر می‌گذارد. در کل که مخارج میزبانی از چندین سایت روی یک سایت، با استفاده از افزونۀ SNI به میزان قابل توجهی کاهش پیدا می‌کند.

بهبود عملکرد

وقتی پای SNI در میان باشد، سرورها می‌توانند به شکلی بهینه‌تر از منابعی که در اختیار دارند استفاده کنند و توانایی رسیدگی به حجم بسیار بالایی از درخواست‌ها را خواهند داشت. در نتیجه، عملکرد وب‌سایت‌هایی که روی سرور قرار دارند هم بسیار بهتر می‌شود.

افزایش سازگاری

همان‌طور که بالاتر هم گفتیم، تقریباً تمام مرورگرها، وب‌سرورها و سیستم‌عامل‌های امروزی از SNI پشتیبانی می‌کنند و به عبارتی، این افزونه با همۀ آن‌ها کاملاً سازگار است. به همین خاطر، SNI به‌عنوان راهکاری پذیرفته‌شده برای میزبانی ایمن و بهینه از چندین وب‌سایت روی یک سرور شناخته می‌شود.

افزایش انعطاف‌پذیری

این افزونه امکان مدیریت و پیکربندی بیشتر گواهینامۀ SSL را در اختیار صاحبان و ادمین‌های سایت‌ها قرار می‌دهد؛ این مزیت مخصوصاً به کار سایت‌های بزرگ‌تر می‌آید.

شاید فکر کنید که sni هیچ ایرادی ندارد؛ ولی این‌طور نیست!

معایب

از مهم‌ترین مشکلات و عیب‌های SNI می‌توان به موارد زیر اشاره کرد:

عدم پشتیبانی توسط همۀ مرورگرها

بالاتر گفتیم که برخی از مرورگرهای قدیمی از SNI پشتیبانی نمی‌کنند؛ این یعنی بخشی از کاربران (هرچند خیلی محدود) نمی‌توانند از این افزونه بهره ببرند.

عدم رمزنگاری اطلاعات

SSL آمد که با رمزنگاری داده‌ها، امنیت آن‌ها را هنگام انتقال تضمین کند. ولی اطلاعاتی که با SNI ارسال می‌شوند (فقط همان host name) رمزنگاری نمی‌شوند و هرکس در طول مسیر می‌تواند آن‌ها را بخواند. شاید بگویید host name خالی که مشکلی ایجاد نمی‌کند؛ ولی برای تأمین حداکثری امنیت، خوب بود که از اولیه‌ترین روش‌های رمزنگاری برای مخفی کردن نام دامنۀ درخواستی استفاده می‌شد.

محدود بودن به پروتکل HTTPS

چون SNI افزونۀ گواهینامۀ SSL است، فقط به کار اتصالاتی می‌آید که با پروتکل HTTPS برقرار می‌شوند؛ یعنی هیچ فایده‌ای برای پروتکل‌های دیگر مثل FTP و SMTP ندارد.

امکان پیکربندی نادرست

از آنجایی که عملکرد درست SNI به تنظیمات درست سرور وابسته است، پیاده‌سازی اشتباه آن ممکن است به پیکربندی و کانفیگ نادرست منجر شود.

امکان آسیب‌پذیر بودن در برابر رخنه‌های امنیتی

شاید SNI در برابر برخی از حملات سایبری مقاوت خوبی از خود نشان ندهد؛ به‌طور مشخص، راجع‌به حملۀ Man-in-the-middle و DNS Spoofing و کلاً امثال این‌ها صحبت می‌کنیم.

قبل از اینکه فعال کردن SNI را آموزش دهیم، بد نیست با یک اصطلاح مرتبط هم آشنا شوید.

SNI Spoofing چیست؟

فرض کنید کاربر داخل مرورگرش example.com را تایپ می‌کند؛ مرورگر قبل از شروع رمزنگاری، اسم سایت را در قسمت SNI گذاشته و برای سرور می‌فرستد.

حالا SNI spoofing یعنی:

یک سیستم وسط راه ظاهر می‌شود و وانمود می‌کند که کاربر اسم یک سایت دیگر را درخواست کرده است. در واقع اسم سایتی که کاربر درخواست کرده، دستکاری می‌شود. حالا این چه کاربردی دارد؟

بعضی سیستم‌های ایجاد محدودیت (!) اسم سایت را فقط از روی SNI چک می‌کنند. کسی که بخواهد محدودیتی را دور بزند، کاری می‌کند که SNI چیز دیگری به‌نظر بیاید. مثلاً اگر در این سیستم، دسترسی به سایت گوگل باز باشد، ولی لینکدین بسته شده باشد، با SNI Spoofing خودتان را مخاطب گوگل جا می‌زنید و وارد لینکدین می‌شوید.

مثل این می‌ماند که آدم دم در یک مجلس به نگهبان بگوید «من مهمون حامدم» ولی در واقع می‌خواهد برود پیش «آرین»!

آموزش فعال‌سازی و ساخت SNI در کنترل‌پنل دایرکت ادمین

کنترل‌پنل رابطی گرافیکی است که استفاده و مدیریت هاست را ساده می‌کند. انواع بسیاری از این رابط‌های گرافیکی وجود دارند که برای شناخت مطرح‌ترین آن‌ها، می‌توانید مقالۀ آشنایی با انواع کنترل پنل هاست را بخوانید.

در اینجا، چگونگی فعال‌سازی sni در کنترل‌پنل شناخته‌شدۀ دایرکت ادمین را بررسی می‌کنیم.

این کار در 3 مرحله انجام می‌شود:

مرحلۀ اول: فعال‌سازی sni در دایرکت ادمین

فایل configuration دایرکت ادمین را با استفاده از ویرایشگر انتخابی خودتان باز کنید:

vi /usr/local/directadmin/conf/directadmin.conf

در تنظیمات پیش‌فرض دایرکت ادمین، enable_ssl_sni برابر با صفر است. برای فعال‌سازی این افزونه، باید enable_ssl_sni=0 را با  enable_ssl_sni=1 جایگزین کنید.

مرحلۀ دوم: ری‌استارت کردن دایرکت ادمین

با استفاده از دستور زیر، دایرکت ادمین را ری‌استارت کنید تا تغییراتی که اعمال کرده‌اید اجرا شوند:

service directadmin restart

مرحلۀ سوم: نصب گواهینامۀ SSL

حالا وقتی وارد دایرکت ادمین می‌شوید، امکان ساخت یا نصب یک گواهینامۀ SSL جدید را خواهید داشت؛ بدون اینکه نیاز باشد آدرس آیپی جداگانه‌ای برای گواهینامۀ جدید به دایرکت ادمین ارائه کنید.

در بخش بعدی، پاسخ چند مورد از سؤالات رایج پیرامون sni را می‌دهیم.

سوالات احتمالی شما درباره SNI

بررسی کردیم و فهمیدیم این 3 سؤال، پرتکرار‌ترین پرسش‌ها دربارۀ sni هستند که ذهن بسیاری از کاربران را درگیر کرده‌اند. در اینجا پاسخ آن‌ها را می‌دهیم تا تمام ابهامات را برطرف کنیم.

کدام مرورگرها با SNI سازگارند؟

چند باری گفتیم که اگر برخی مرورگرهای قدیمی مثل Internet Explorer 7 را فاکتور بگیریم، تقریباً تمام مرورگرهای به‌روز از این افزونه پشتیبانی می‌کنند، اگر قرار باشد نام ببریم، لیستی شامل اسامی زیر خواهیم داشت:

  • Google Chrome (ورژن 6 به بالا)؛
  • Mozilla Firefox (ورژن 2 به بالا)؛
  • Microsoft Edge (همۀ ورژن‌ها)؛
  • Apple Safari (ورژن 3 به بالا)؛
  • Opera (ورژن 8 به بالا)؛
  • مروگر پیش‌فرض تبلت‌های اندروید؛
  • BlackBerry 10 Web Browser؛
  • Open SSL

لوگوی مرورگرهایی که از تکنولوژی sni پشتیبانی می‌کنند

برویم برای پاسخ دادن به سؤال بعدی.

اگر مرورگر کاربر از SNI پشتیبانی نکند چه اتفاقی می‌افتد؟

البته که احتمال رخداد چنین اتفاقی واقعاً نادر است؛ چون همان‌طور که در بخش قبل دیدید، بیشتر مرورگرهای امروزی از این افزونه پشتیبانی می‌کنند.

ولی در چنین شرایطی، کاربر امکان دسترسی به برخی وب‌سایت‌های به‌خصوص را نخواهد داشت و احتمالاً پیام خطایی با متنی مشابه Your connection is not private دریافت خواهد کرد.

SNI رمزنگاری شده چیست؟

همان‌طور که بالاتر گفتیم، انتقال اطلاعات (مشخصاً domain name یا نام دامنه) در SNI بدون رمزنگاری انجام می‌شود؛ برای اینکه امنیت تا جای ممکن افزایش پیدا کند، نسخۀ رمزنگاری شده این افزونه ارائه شد که با عنوان Encrypted SNI یا ESNI شناخته می‌شود.

البته که هنوز این نوع از SNI خیلی رایج نشده و پشتیبانی خوبی هم از آن نمی‌شود!

SNI: افزونه‌ای که استفاده از SSL را برای تمام سایت‌ها ممکن کرد!

در این مقاله تمام جوانب Server Name Indicator را بررسی کردیم و فهمیدیم sni چیست. گفتیم که اگر این افزونه به سیستم SSL یا همان TLS امروزی افزوده نمی‌شد، سایت‌هایی که روی هاست‌های اشتراکی و VPSها میزبانی می‌شوند، امکان استفاده از پروتکل HTTPS و برخورداری از مزایای آن را نداشتند.

SNI به کمک مرورگر کاربر می‌آید تا از همان شروع برقراری ارتباط، به سرور بفهماند که می‌خواهد درخواستش به کدام وب‌سایت برسد. در نتیجۀ این موضوع، دیگر استفادۀ همزمان چند وب‌سایت از یک آدرس آیپی مشترک معضل‌ساز نخواهد بود.

سعی کردیم راجع‌به همۀ جوانب صحبت و مقاله‌ای کامل در این رابطه تهیه کنیم؛ ولی اگر همچنان پرسشی دربارۀ sni دارید که پاسخ آن را نگرفته‌اید، حتماً آن را در قسمت نظرات با ما در میان بگذارید تا در اولین فرصت پاسختان را بدهیم.

منابع: GlobalSign | IONOS | Geeks for Geeks | Cloudflare

نیکان حیدری

«نوشتن، قفل‌هایی را باز میکند که به ظاهر غیرقابل‌‌نفوذ هستند». این باور نیکان او را به سمت دنیای کلمات فرستاد و حالا چندسالی است که نوشته‌هایش قفل ذهن مخاطب‌های حوزه تکنولوژی را باز می‌کند.

نظر شما راجع به این محتوا چیست؟

آخرین مطالب دسته بندی امنیت

دیدگاه ها

اولین نفری باشید که دیدگاه خود را ثبت می کنید

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *