نشانه نام سرور (SNI) چیست؟ امنیت نقش مهمی در اینترنت ایفا می کند. در نتیجه، استانداردها، گواهینامه ها و پروتکل هایی وجود دارند که سعی دارند از کاربران و همچنین سرور ها از حملات مخرب محافظت کنند. یکی از این پروتکلها (TLS (Security Layer Security نامیده می شود. از آنجا که این سیستم مشکل ساز است، اما نشان دهنده نام سرور (SNI) به عنوان یک پسوند عمل می کند.
چرا نماد نام سرور مورد نیاز است؟
قبل از اینکه بتوانید بدانید که چرا SNI توسعه داده شد. ابتدا باید بدانید که چگونه TLS کار می کند. جانشین سوکت امن لایه (SSL) با استفاده از به اصطلاح TLS دست زده است؛ این جایی است که مشتری و سرور – در عمل، این معمولا به معنای مرورگر وب و وب سایت است – اطلاعات مبادله قبل از شروع انتقال واقعی داده ها. با استفاده از این دستکاری مجازی، سرور خود را به مشتری شناسایی می کند و گواهی امنیتی مربوطه را ارسال می کند. هنگامی که مشتری این را تأیید کرده است، هر دو شرکای ارتباطی داده ها را دریافت می کنند، اگر تأیید منفی باشد، هیچگونه انتقال داده ای دیگر رخ نمی دهد.
اما چه اتفاقی می افتد زمانی که وب سایت های چندگانه بر روی یک آدرس IP منفرد اجرا می شوند، همانند میزبانی مجازی؟ از آنجایی که IPv6 تا به حال به طور کامل خود را ثابت نکرده است، ما باید با محدوده آدرس IP بسیار محدود کار کنیم و نه اینکه هر دامنه بتواند آدرس IP خود خود را ادعا کند. بنابراین به کدام مشتری «سلام» (اولین گام دستیابی به TLS) پاسخ می دهد؟ یک احتمال بالایی وجود دارد که وبسایت اشتباه پاسخ می دهد، گواهی نادرست – با نام میزبان صحیح – ارسال می شود و اتصال برقرار نمی شود. به همین دلیل است که مشتری برای به اشتراک گذاشتن با سرور دامنه (میزبان) که با آنها دوست دارند ارتباط برقرار کنند، ضروری است. برای این منظور، نشان دهنده نام سرور معرفی شد.
SNI چگونه کار می کند؟
اگر یک اتصال ناخواسته باعث می شود چند وبسایت برای اجرای یک آدرس IP، شما مجبور نباشید این مشکل را حل کنید. HTTP تعیین می کند که نام میزبان در یک هدر داده می شود زمانی که یک وب سایت درخواست شده است، با استفاده از TLS، هرچند دستیابی باید قبل از اینکه مرورگر وب بتواند هرگونه اطلاعاتی را ارسال کند، رخ داده است؛ نشانه نام سرور، مراقبت می کند که نام میزبان قبل از تبادل گواهی بین سرور و مشتری منتقل شده است.
SNI فرمت TLS است. پروتکل رمزگذاری بخشی از پشته پروتکل TCP / IP است. به همین ترتیب، TLS پروتکل کنترل انتقال (TCP) با رمزگذاری را گسترش می دهد. لایه اضافی HTTP را به HTTPS تبدیل می کند. اگر TLS را با نشان دهنده سرور نام ببرید، سپس دستخطی یک فیلد دیگر را به پروتکل امنیتی اضافه می کند: در ClientHelloExtension یک فیلد نام ServerName وجود دارد. در اینجا مشتری به نام میزبان وارد می شود (مرورگر وب این کار را به صورت خودکار انجام می دهد) که آنها می خواهند آدرس دهند. این تضمین می کند که پاسخ صحیح میزبان درست است.
نماد نام سرور در مرورگر
به عنوان یک کاربر عادی، شما نباید با فرآیند SNI تماس بگیرید. در بیشتر موارد، کاربران حتی نیاز به نصب یا تنظیم هر چیزی برای آن ندارند. استفاده از سیستم عامل فعلی و مرورگر مدرن کاملا کافی است. فایرفاکس، کروم، لبه، اپرا و سافاری از همه برنامه های پیش فرض پشتیبانی می کنند. برای برخی از کاربران که هنوز از ویندوز XP استفاده می کنند. (و یا حتی نسخه های قدیمی تر ویندوز) و اینترنت اکسپلورر، نشان دهنده نام سرور در دسترس نیست. حتی اگر هنوز از یک سیستم عامل استفاده می کنید که دیگر با به روز رسانی پشتیبانی نمی شود، شما می توانید گزینه ای برای نصب یک مرورگر دیگر که از SNI پشتیبانی می کند. بیشتر مرورگرهای موبایل نیز از SNI استفاده می کنند.
اشکالات SNI چیست؟
نشانه نام سرور تمام مزایا نیست. به عنوان مثال، SNI توسط تمام مرورگرهای وب پشتیبانی نمی شود. هرچند که این تنها تعداد کمی از کاربران را تحت تاثیر قرار می دهد. واقعیت این است که SNI یک مدل کامل نیست (این بیشتر از یک راه حل انتقال ساده است.) را می توان در نحوه انتقال اطلاعات غیر رمزگذاری مشاهده کرد. درست است، تنها اطلاعات نام میزبان است. اما این اطلاعات می تواند از حملات شخص ثالث با حتی رمزگذاری اساسی محافظت شود. اگر شما مجبور به استفاده از SNI نبودید. و به جای آن هر وبسایتی دارای آدرس IP خاص خود بود، امن تر می شد.