SNI چیست؟

ساخت وبلاگ

SNI Logo

SNI که مخفف عبارت Server Name Indication یا اعلانگر نام کارگزار است یک قابلیت اضافی در در پروتکل TLS است که به وسیله آن کاربر نام دامنه مورد نظری که تلاش برای برقراری ارتباط با آن دارد را از ابتدای شروع اتصال به سرور اعلام میکند.

این قابلیت به سرور اجازه میدهد تا با گواهینامه های مختلف بر روی یک IP و یک درگاه (port) فعالیت کند و وب سایت های مختلفی را در HTTPS میزبانی کند و لازم نیست که همه آن وب سایت ها گواهینامه یکسانی داشته باشند یا از IP های مختلفی استفاده کند.

پیش زمینه ای از مشکل

زمانی که یک اتصال TLS برقرار میشود، کاربر (client) یک گواهینامه دیجیتال از سرور درخواست میکند، پس از دریافت آن را مورد آزمایش و بررسی قرار میدهد تا ببیند که آیا نام آن مقصدی که قصد اتصال به آن داشته در این گواهینامه موجود است یا نه.اگر این اسم موجود بود، اتصال به روند عادی خود ادامه میدهد اما اگر این نام در گواهینامه دیجیتال موجود نبود ممکن است که اتصال قطع شود و کاربر با اخطاری مواجه شود که گواهینامه معتبر نیست و شاید یک حمله مرد میانی رخ داده. البته بعضی از نرم افزار ها این قابلیت را به کاربر میدهد که این اخطار را نادیده بگیرد و با مسئولیت کاربر به آن گواهینامه اعتماد کند و اتصال را از سربگیرد.

به هر حال در موقعیت های واقعی اینکه تمامی نام دامنه های میزبانی شده در سرور در یک گواهینامه ذکر شود، بسیار سخت یا حتی غیر ممکن است.سروری که چندین دامنه مختلف را میزبانی میکند نیازمند است که برای هر وب سایت یک گواهینامه معرفی کند.

میزبانی مبتنی بر نام  دامنه این قابلیت را ایجاد میکند تا یک سرور بر روی یک IP چندین دامنه اینترنتی را میزبانی کند؛ برای بدست آمدن این امکان سرور میبایست درخواست کاربر را بخواند و نام دامنه مورد نظر را تشخیص دهد اما در زمان استفاده از HTTPS زمانی که اتصال در حال برقراری است این امکان برای سرور وجود ندارد، زیرا که سربرگ http بعد از اتصال کامل برای سرور ارسال میشود و تا آن زمان سرور به آن دسترسی ندارد؛ در نتیجه سرور نمیتواند که تشخیص دهد کاربر خواهان اتصال به کدام دامنه را دارد تا گواهینامه مربوط به همان دامنه را برایش ارسال کند؛ بنابراین عملا میزبانی چند وب سایت HTTPS بر روی یک آی پی غیر ممکن میشود.

از طرفی اگر قرار باشد هر وب سایتی از https برای ایمن سازی اتصال خود با کاربران استفاده کند،باید هر آی پی به یک دامنه تعلق بگیرد و این در حالیست که اختصاص IP ها باید از نظر سازمان RIR مورد تائید باشد و IP های نسخه 4 فرسوده هستند و عمرشان به زودی به پایان خواهد رسید.

هرچند که IP های نسخه 6 به دلیل ظرفیت بسیار بالا با مشکل انقراض مواجه نیستند اما امروزه همچنان اکثر وب سایت ها بر بستر IPv4 میزبانی میشود و از یک اتصال ایمن محروم خواهند بود.

SNI چگونه مشکل را برطرف کرد؟

SNI این مشکل را با ارسال نام دامنه مورد نظر کاربر به سرور در بدو اتصال TLS حل کرد.این کار باعث شد تا سرور از همان ابتدای اتصال متوجه شود که کدام گواهینامه مناسب درخواست کاربر است.

این راه حل در نتیجه باعث شد تا تعداد نامحدودی از وب سایت های HTTPS بتوانند در یک IP و درگاه (port) یکسان بتوانند با گواهینامه های مختلف میزبانی شوند.

این قابلیت اولین بار در ماه جوئن 2003 تحت عنوان RFC 3546 به قوانین اینترنتی اضافه شد وآخرین نسخه استاندارد آن RFC 6066 است.

پیاده سازی

در سال 2004 یک وصله (Patch) که در پروژه EdelKey آماده شده بود برای پشتیبانی SNI به OpenSSL اضافه شد.دو سال بعد در 2006 این وصله به نسخه (branch) در حال توسعه OpenSSL اضافه شد و در سال 2007 بصورت رسمی در نسخه 0.9.8 این برنامه معرفی شد.

برای اینکه یک برنامه قابلیت SNI را پیاده سازی کند باید TLS آن را پیاده سازی کرده باشد و نام دامنه مورد درخواست به کتابخانه TLS ارسال شود. بصورت دقیقتر کتابخانه TLS میتواند به برنامه الحاق شود یا اینکه بصورت یک قابلیت در سیستم عامل موجود باشد و به همین دلیل ممکن است بعضی از مرورگر ها این قابلیت را در هر سیستم عاملی و بعضی دیگر فقط این قابلیت را در سیستم عامل های خاصی پشتیبانی کنند.

پشتیبانی

نرم افزارنوعپشتیبانی میشود؟تذکراتسال پشتیبانی
Internet Explorerمرورگر وببلهاز نسخه 7 در ویندوز Vista ( در ویندوز XP پشتیبانی نمیشود)2006
Mozilla Firefoxمرورگر وببلهاز نسخه 2.02006
cURLکتابخانه و ابزار خط فرمانبلهاز نسخه 7.18.12008
Safariمرورگر وببلهدر ویندوز XP پشتیبانی نمی شود. 
Google Chromeمرورگر وببلهاز نسخه 62010
BlackBerry 10مرورگر وببلهدر تمامی نسخه BB10 پشتیبانی میشود.2013
BlackBerry OSمرورگر وبخیردر نسخه های قبل از 7.1 پشتیبانی نمیشود. 
elinksمرورگر وبخیردر نسخه های قبل از 0.12pre6 پشتیبانی نمیشود. 
Windows Mobileمرورگر وببلهتقریبا بعد از نسخه 6.5 
مرورگر پیشفرض Androidمرورگر وببلهاز نسخه 3 برای تبلت ها و از نسخه 4 برای تلفن های همراه2011
wgetابزار خط فرمانبلهاز نسخه 1.14 
مرورگر نوکیا برای Symbianمرورگر وبخیر  
مرورگر Opera برای Symbianمرورگر وبخیردر سری 60 پشتیبانی نمیشود. 
IBM HTTP Serverکارگزار وببلهاز نسخه 9.0.0 
Apache Tomcatکارگزار وببلهدر نسخه های قبل از 8.5 پشتیبانی نمیشود. 
Apache HTTP Serverکارگزار وببلهاز نسخه 2.2.122009
Microsoft IISکارگزار وببلهاز نسخه 82012
nginxکارگزار وببلهاز نسخه 0.5.232007
Jettyکارگزار وببلهاز نسخه 9.3.02015
Qtکتابخانهبلهاز نسخه 4.82011
Mozilla NSS server sideکتابخانهخیر  
4th Dimensionکتابخانهخیردر نسخه های قبل از 15.2 پشتیبانی نمیشود. 
Javaکتابخانهبلهاز نسخه 1.72011
ColdFusion / Luceeکتابخانهبله

ColdFusion از نسخه 10 آپدیت 18 و نسخه 11 آپدیت 7

Lucee از نسخه 4.5.1.019، نسخه 5.0.0.50

2015
Erlangکتابخانهبلهاز نسخه r172013
Goکتابخانهبلهاز نسخه 1.42011
Perlکتابخانهبلهاز نسخه 1.50 Net::SSLeay و نسخه 1.56 IO::Socket::SSL2012
PHPکتابخانهبلهاز نسخه 5.32014
Pythonکتابخانهبلهاز نسخه 2.7.9rc1 و 3.2alpha4

2011 برای نسخه 3

2014 برای نسخه 2

Rubyکتابخانهبلهاز نسخه 2.02011

منبع: WikiPedia

همیار وردپرس...
ما را در سایت همیار وردپرس دنبال می کنید

برچسب : چیست؟, نویسنده : جمشید رضایی بازدید : 124 تاريخ : يکشنبه 2 مهر 1396 ساعت: 18:36

خبرنامه