۱۴۰۳-۰۹-۰۱

SNI چیست؟ آیا تا به حال با این واژه روبرو شده اید؟ یکی از وظایف مهم مدیران سایت، ایجاد بستری امن برای فعالیت کاربران اینترنتی است. چون کاربر برای خرید و استفاده از امکانات بعضی سایت‌ها، باید از اطلاعات شخصی و کارت اعتباری خود استفاده کند. پس ریسک اینکه چنین اطلاعات ارزشمندی توسط هکر‌ها دزدیده شود، وجود دارد.

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

اما نصب این گواهینامه برای سایت‌های با هاست اشتراکی، باعث بروز یک مشکل می‌شود. برای حل چنین مشکلی، به ابزاری به نام SNI یا نشانگر نام سرور نیاز داریم؛ که در ادامه آن را توضیح خواهیم داد.

SNI چیست؟

گواهینامه SSL وظیفه رمزگذاری تمامی اطلاعات را بر عهده دارد. به همین دلیل اکثر سایت‌ ها، نسخه‌ های متنوع این گواهینامه و یا نوع پیشرفته TLS آن را بر روی وب سایت خود نصب می‌کنند. اما مرورگر کاربر برای پیدا کردن سایت، به آدرس IP نیاز دارد. سایت‌ های بدون گواهینامه امنیتی، چنین مشکلی ندارند و IP آن‌ها منحصر بفرد است.

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

افزونه SNI مخفف عبارت Server Name Indication (نشانگر نام سرور) است که برای گواهی TLS کاربرد دارد. این افزونه وظیفه پیدا کردن سایت مورد نظر در هاست‌ های اشتراکی را بر عهده دارد.

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

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

هاست اشتراکی در این مثال، دقیقاً مانند آپارتمان است. پس آدرس IP این هاست، حکم همان آدرس آپارتمان را دارد. اما اگر هر کدام از سایت‌ های موجود در این هاست (واحد‌های آپارتمان) بخواهند از گواهینامه TLS استفاده کرده و مشکل IP نداشته باشند، به افزونه SNI نیاز خواهند داشت. چون این افزونه به سایت‌ ها کمک می‌کند تا گواهی هر کدام، به صورت جداگانه تشخیص و صادر گردد.

تاریخچه SNI یا نشانگر نام سرور و وظیفه آن

SNI چیست؟

در قسمت های قبلی دانستیم که SNI چیست؟ اما اجازه دهید تا کمی بیشتر با تاریخچه آن آشنا شویم. نصب جداگانه گواهینامه SSL/TLS بر روی سایت‌ های IP یکسان موجود بر روی یک هاست اشتراکی، تقریباً نشدنی است.

چون مرورگر در تشخیص آدرس IP این سایت‌ها دچار مشکل می‌شود. این مشکل برای سایت‌ ها با پروتکل Http وجود ندارد. چون مرورگر به راحتی می‌تواند آدرس IP این سایت‌ ها را شناسایی کرده و وب سرور سایت مورد نظر را نمایش دهد. اما برای وصل شدن به سایت با هاست اشتراکی و دارای گواهی SSL، اوضاع پیچیده‌ تر است.

چون این سایت‌ها از پروتکل Https به جای Http استفاده می‌کنند. پس قبل از برقراری ارتباط بین کاربر و سایت، گواهی عمل کرده و سعی در ایجاد اتصالی ایمن خواهد داشت. اما وقتی سایت مورد نظر از هاست اشتراکی استفاده کند، IP تمامی سایت‌های آن یکسان بوده و مرورگر نمی‌تواند مقصد را تشخیص دهد!

افزونه SNI وظیفه دارد تا چنین مشکلی را حل کند. البته سایت‌ های با IP اختصاصی چنین مشکلی ندارند. پس مالک سایت می‌تواند بدون نیاز به افزونه SNI، از گواهینامه‌ های SSL/TLS برای ایمن‌ سازی اتصال‌ ها استفاده کند.

دلیل بعدی برای استفاده از افزونه SNI تغییر در نسخه‌ های IP بود. چون در زمان معرفی و عرضه این افزونه، نسخه‌ های IPv۴ از آی پی رو به اتمام بودند. اما به تدریج نسخه‌ های IPv۶ معرفی شدند و در حال حاضر چنین مشکلی وجود ندارد.

پس با در نظر گرفتن تمامی این موارد، می‌توان گفت که افزونه SNI به سایت‌ های Https کمک می‌کند تا از گواهی SSL/TLS استفاده کنند. اصلاً هم مهم نیست که سایت مورد نظر بر روی آدرس IP یکسان میزبانی شود؛ چون این افزونه مشکل را حل می‌کند.

در تصویر زیر، طرز کار این افزونه نشان داده شده است:

how-sni-works

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

آموزش راه‌ اندازی SNI در سی پنل

سی پنل افزونه SNI را به صورت پیش فرض بر روی خود دارد. اما برای فعال سازی آن، به بخش WHM مراجعه کرده و زیر بخش Tweak Settings را بزنید. سپس دستور زیر را در این قسمت اجرا کنید تا فرآیند فعال‌ سازی این افزونه در سی پنل به اتمام برسد.

Allow cPanel users to install SSL Hosts.

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

برای فعال سازی SNI روی دایرکت ادمین ابتدا با استفاده از دستور زیر، فایل directadmin.conf را باز کرده و آن را ویرایش کنید.

nano /usr/local/directadmin/conf/directadmin.conf

در این مرحله باید مقدار enable ssl sni در این فایل را از ۰ به ۱۰ تغییر دهید. در مرحله آخر باید از دستور زیر استفاده کرده و دایرکت ادمین را ریست کنید.

service directadmin restart

راه‌ اندازی SNI در کنترل پنل پلسک

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

پس تنها کاری که باید انجام داد، مراجعه به بخش Tools & Settings و فعال کردن گزینه زیر در قسمت Server Settings است:

Turn on SNI support، which allow using individual SSL/TLS certificates on websites with the same IP address

سخن آخر

احتمالاً پس از مطالعه این مقاله، دانستید که SNI چیست؟ و به وظایف آن پی برده باشید. البته این موارد جزء قابلیت‌ های اصلی این افزونه بوده و می‌ توان از آن برای تنظیم و مدیریت چندین سایت با IP یکسان هم استفاده کرد. اکثر سیستم و مرورگر‌های موجود در بستر اینترنت، از SNI پشتیبانی می‌کنند.

اما تعداد محدودی از مرورگر‌های نسخه قدیمی نیز وجود دارد که چنین امکانی را ندارند. کاربران چنین مرورگر‌هایی، معمولاً با اروری به صورت «Your connection is not private» مواجه می‌شوند و در اکثر موارد امکان دسترسی به سایت مورد نظر را ندارند. امیدواریم که مطالعه این مطلب برای شما مفید بوده باشد. نظرات و سؤالات خود در ارتباط با افزونه SNI را با ما در میان بگذارید.

مطالب مرتبط:

اشتراک‌گذاری

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

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