به زود وب خوش آمدید

SNI چیست

مدیر سایت مدیر سایت
۲۷ مهر ۱۳۹۹
۰
350
SNI چیست

SNI چیست :  کلمه SNI مخفف Server Name Indication است.SNI تا حدودی مانند ارسال بسته به جای خانه به یک مجتمع آپارتمانی است. هنگام ارسال نامه به خانه شخصی ، آدرس خیابان به تنهایی کافی است تا بسته را به شخص مناسب برسانید. اما وقتی بسته ای به یک ساختمان آپارتمانی می رود ، علاوه بر آدرس خیابان به شماره آپارتمان نیز نیاز دارد. در غیر این صورت ، بسته ممکن است به شخص مناسب نرسد یا اصلا تحویل داده نشود.

بسیاری از وب سرورها بیشتر به مجتمع های آپارتمانی شباهت دارند تا خانه ها: آنها چندین نام دامنه را میزبانی می کنند ، بنابراین آدرس IP به تنهایی برای نشان دادن دسترسی دامنه به کاربر کافی نیست. این می تواند منجر به نشان دادن اشتباه گواهی SSL توسط سرور شود که از اتصال HTTPS جلوگیری کرده یا آن را خاتمه می دهد – درست مانند اینکه اگر شخص صحیحی برای آن امضا نکند ، بسته ای به آدرس نمی تواند تحویل داده شود.

هنگامی که چندین وب سایت در یک سرور میزبانی می شوند و یک آدرس IP مشترک دارند و هر وب سایت دارای گواهینامه SSL خود است ، ممکن است سرور نداند که یک دستگاه سرویس گیرنده سعی در اتصال ایمن به یکی از وب سایت ها دارد ، کدام گواهی SSL را نشان می دهد. این به این دلیل است که دسترسی SSL / TLS قبل از اینکه دستگاه مشتری از طریق HTTP به وب سایتی که متصل است ، نشان دهد ، اتفاق می افتد.

نشانگر نام سرور (SNI) برای حل این مشکل طراحی شده است. SNI افزونه ای برای پروتکل TLS (قبلاً پروتکل SSL شناخته می شد) است که در HTTPS استفاده می شود. برای اطمینان از اینکه دستگاه های مشتری قادر به دیدن گواهی SSL صحیح برای وب سایتی هستند که می خواهند به آن دسترسی پیدا کنند ، در فرآیند دسترسی TLS / SSL گنجانده شده است. پسوند امکان تعیین نام میزبان یا نام دامنه وب سایت را در حین دست دادن TLS فراهم می کند ، به جای اینکه اتصال HTTP بعد از دست دادن باز شود.

SNI از آنچه به عنوان “common name mismatch error” شناخته می شود جلوگیری می کند: وقتی دستگاه کاربر به آدرس IP مناسب یک وب سایت می رسد ، اما نام موجود در گواهی SSL با نام وب سایت مطابقت ندارد. غالباً این نوع خطاها منجر به پیام خطای “Your connection is not private” در مرورگر کاربر می شود.

SNI در سال ۲۰۰۳ به عنوان پسوند TLS / SSL اضافه شد. در اصل بخشی از پروتکل نبود. تقریباً همه مرورگرها ، سیستم عامل ها و وب سرورها از آن پشتیبانی می کنند ، به استثنای قدیمی ترین مرورگرها و سیستم عامل هایی که هنوز هم استفاده می شوند.

SNI چیست

SNI چیست و پسوند TLS SNI چه کاری انجام می دهد؟

غالباً یک وب سرور مسئول چندین hostnames – یا domain names (که نام های قابل خواندن وب سایت ها هستند) است. اگر وب سایت ها از HTTPS استفاده کنند ، هر نام میزبان گواهی SSL خاص خود را خواهد داشت.

مشکل این است که همه اینhostname ها در یک سرور در همان آدرس IP هستند. این مشکلی در مورد HTTP وجود ندارد ، زیرا به محض باز شدن اتصال TCP کاربر در یک درخواست HTTP نشان می دهد که به کدام وب سایت دسترسی دارد.

اما در HTTPS ، قبل از شروع مکالمه HTTP ، ابتدا TLS handshake انجام می شود (HTTPS هنوز از HTTP استفاده می کند – فقط پیام های HTTP را رمزگذاری می کند). بنابراین بدون SNI هیچ راهی برای کاربر وجود ندارد تا به سرور نشان دهد با کدام نام میزبانی صحبت می کند. در نتیجه ، سرور ممکن است گواهی SSL را برای نام میزبان اشتباه تولید کند. اگر نام موجود در گواهی SSL با نامی که مشتری در تلاش است به آن برسد مطابقت ندارد ، مرورگر مشتری خطایی را برمی گرداند و معمولاً اتصال را قطع می کند.

SNI نام دامنه را به فرآیند TLS handshake اضافه می کند ، به این ترتیب فرآیند TLS به نام دامنه مناسب می رسد و گواهی SSL صحیح را دریافت می کند ، بقیه دسترسی  TLS را قادر می سازد تا به صورت عادی پیش برود.

به طور خاص ، SNI نام میزبان را در پیام Hello Client یا همان اولین مرحله از TLS handshake شامل می شود.

hostname چیست؟ virtual hostname چیست؟

hostname دستگاهی است که به شبکه متصل می شود. در زمینه اینترنت ، نام دامنه یا نام یک وب سایت ، نوعی hostname است. هر دو از آدرس IP مرتبط با نام دامنه جدا هستند.

virtual hostname نام میزبانی است که آدرس IP خاص خود را ندارد و همراه با سایر نام های میزبان بر روی سرور میزبانی می شود. این “virtual” است از این جهت که یک سرور فیزیکی اختصاصی ندارد ، همانطور که واقعیت مجازی فقط به صورت دیجیتالی وجود دارد ، نه در دنیای فیزیکی.

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

در این حالت ، کاربر احتمالاً نمی تواند به وب سایت های خاصی دسترسی پیدا کند و مرورگر کاربر پیام خطایی مانند “Your connection is not private” را باز می گرداند.

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

برچسب‌ها

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

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