یکی از اولویت های بسیار مهم برای موتورهای جستجو به خصوص گوگل، امنیت است. در همین راستا، بسیاری از وب مسترها را میبینیم که از پروتکل HTTP به پروتکل امن HTTPS مهاجرت کردهاند و یکی از معیارهایی که امروزه گوگل برای رنکینگ سایتها مورد استفاده قرار می دهد، همین پروتکل است هر چند که این معیار در حال حاضر وزن خیلی زیادی نداشته باشد. آنچه در این آموزش قصد داریم مورد بررسی قرار دهیم، آشنایی با مفاهیم SSL و HTTPS است و خواهیم دید که به چه شکل میتوان از پروتکل HTTP به HTTPS مهاجرت کرد.
تفاوت HTTP با HTTPS
پروتکل HTTP که مخفف واژگان Hypertext Transfer Protocol به معنی «پروتکل انتقال فرامتنی» است، یک پروتکل Request/Response یا «درخواست/پاسخ» است به این شکل که مرورگر کاربر برای ارتباط با سرور، یک درخواست از نوع اچ تی تی پی برای سرور ارسال میکند سپس سرور هم این درخواست را گرفته و بسته به نیازی که کاربر درخواست کننده دارد -مثلا گرفتن دیتای خاصی از دیتابیس یا باز کردن یک فایل و غیره- Response یا «پاسخی» از جنس اچ تی تی پی برای مرورگر کاربر ارسال میشود که این ریسپانس حاوی یکسری اطلاعات است (جهت آشنایی بیشتر با این پروتکل، به آموزش نگاهی به پروتوکل HTTP و URL مراجعه نمایید.) پروتکل اچ تی تی پی دارای یکسری دستورات است که از طریق آنها ارتباط با سرور صورت میگیرد که از جمله ی مهمترین آنها میتوان به موارد زیر اشاره کرد:
- GET: برای انتقال درخواست هایی که محرمانه و خیلی حجیم نیستند مثلاً جستجو در یک سایت
- POST: برای انتقال درخواست هایی مثل رمزعبور، اطلاعات حساس و … از این دستور استفاده می شود.
جهت آشنایی بیشتر با این متدها، به آموزش متدهای اصلی در پروتکل اچ تی تی پی مراجعه نمایید.) علاوه بر این دستورات، یکسری Status Code یا «کدهای وضعیت» نیز مرتبط با پروتکل اچ تی تی پی هستند که به طور کلی به ۵ دسته ی مجزا تقسیمبندی می شوند (جهت آشنایی بیشتر با این کدهای وضعیت، به آموزش آشنایی با پیام های اچ تی تی پی مراجعه نمایید) :
- کدهای 1xx: این نوع از کدهای وضعیت با عدد یک آغاز میشوند که نشان دهنده ی پیام کلی ریسپانس از طرف سرور هستند.
- کدهای 2xx: این کدها با عدد دو آغاز میشوند و نشان از موفقیت آمیز بودن یک عملیات در سمت سرور دارند.
- کدهای 3xx: این کدها به کدهای تغییر مسیر معروف هستند که با عدد سه آغاز می شوند.
- کدهای 4xx: کدهایی که با عدد چهار آغاز میشوند، نشان از وجود خطایی در ارتباط با سرور دارند و حاکی از آنند که کلاینت یا کاربر در ارسال درخواست خود دچار اشتباه شده است.
- کدهای 5xx: این کدها به کدهای خطای سرور معروف اند و با عدد پنج آغاز می شوند. به طور خلاصه، این نوع کدها حاکی از آنند که سرور در اجرای درخواست صحیحی از طرف کاربر دچار اشتباه یا خطا شده است.
پروتکل اچ تی تی پی با نوعی از حملات که اصطلاحاً تحت عنوان Man in The Middle شناخته میشوند گره خورده است. به طور کلی، در حوزه ی امنیت شبکههای کامپیوتری حملات Man in The Middle یا MITM به نوعی از حملات گفته میشود که مجرمین سایبری از آن طریق مابین کاربر و سرور قرار گرفته و به رصد کردن اطلاعات شخصی کاربران و سوء استفاده های احتمالی برای منافع شخصی می پردازند.
HTTPS مخفف واژگان Hypertext Transfer Protocol Secure به معنی «پروتکل انتقال فرامتی امن» است که یک پروتکل ارتباطی اینترنتی که ضامن انتقال امن دیتای مرتبط با کاربران مثل نام کاربری و رمزعبور، اطلاعات حساب بانکی و … مابین مرورگر و سرور است. این پروتکل گاهی اوقات تحت عنوان HTTPS over SSL نیز شناخته میشود (برای آن که ببینید که آیا یک سایت از پروتکل اس اس ال استفاده میکند یا خیر، به نوار آدرس مرورگر خود نگاه کنید؛ اگر عبارت //:https را در کنار یک تصویر قفل سبز رنگ دیدید، این بدان معنا است که سایت مد نظر دارای گواهینامه ی اس اس ال است.) دیتایی که از طریق HTTPS مابین مرورگر و سرور رد و بدل می شود، از طریق پروتکلی تحت عنوان TLS که مخفف واژگان Transport Layer Security است صورت میپذیرد که این پروتکل ۳ لایه ی امنیتی روی دیتای ارسال شده اعمال می کند:
- Encryption: انکریپشن یا «رمزنگاری» فرایندی است که روی دیتای ارسال شده صورت میگیرد به این شکل که کلیه ی اطلاعاتی که از طریق اچ تی تی پی اس ارسال می شوند، رمزنگاری یا اصطلاحاً Hash میشوند که مجرمین سایبری نتوانند اطلاعات حساس مرتبط با کاربران را اصطلاحاً Sniff کنند (فعل Sniff به معنی «بو کشیدن» است اما در اصطلاح فنی به معنی «درز پیدا کردن اطلاعات» ترجمه می شود.)
- Data Integrity: منظور از این اصطلاح، «درستی و صحت اطلاعات» کاربران است. به عبارت دیگر، دیتای مرتبط با کاربرانی که از سایت ما استفاده میکنند در حین ارسال شدن تحت هیچ عنوان تغییر پیدا نخواهند کرد (مثلاً هزینه ی سبد خرید یک فروشگاه آنلاین کم یا زیاد نخواهد شد.)
- Authentication: پس از استفاده از پروتکل اچ تی تی پی اس، این اطمینان نیز حاصل میشود که رد و بدل اطلاعات مابین مرورگر و سرور در مورد یک سایت خاص صورت میگیرد و شدیداً جلوی حملات Phishing را میگیرد
هشدار |
فیشینگ به عملیاتی گفته میشود که مجرمین سایبری از آن طریق به دزدیدن اطلاعات کاربران مختلف می پردازند به این شکل که فرض کنید در یک شبکه ی اجتماعی عضو هستید. حال یک ایمیل از طرف مجرم سایبری برای شما ارسال میشود در صورتی که شما فکر میکنید از طرف آن شبکه ی اجتماعی است. درخواست این ایمیل آن است تا به تکمیل اطلاعات خود بپردازید. روی لینک داخل ایمیل که کلیک می کنید، به سایتی با حال و هوای سایت اصلی ارجاع داده میشوید و به محض آن که اطلاعات خود را وارد نمایید، اکانت شما لو رفته منظور خواهد شد! |
برای فعال کردن پروتکل اچ تی تی پی اس، شما باید یک Certificate (سرتیفیکیت یا گواهینامه) از شرکت های معتبری که ارائه میدهند تهیه کنید که تحت عنوان Certificate Authority یا CA شناخته میشوند که بین وب مسترها معمولاً تحت عنوان SSL Certificate معروف هستند.
گواهینامه ی اس اس ال یک سند دیجیتال است که به وب سایت شما اختصاص مییابد که معتبر بودن شما را در معرض دید یک مرورگر -یا بهتر بگوییم کاربر- قرار می دهد. شرکت های CA کلیه ی دادههای مرتبط با سایت شما من جمله نام دامین، اطلاعات مرتبط با سرور، اطلاعات شرکتی و … را رمزنگاری می کنند. حال ممکن است این سؤال برای شما پیش بیاید که یک مرورگر چطور میتواند اطمینان حاصل کند که یک گواهینامه ی اس اس ال معتبر است یا خیر؟
تمامی مرورگرهای مطرح همچون فایرفاکس، گوگل کروم و … حاوی یکسری اطلاعات از پیش تعریف شده یی هستند که این امکان را به آنها میدهد تا شرکت های CA یی که معتبر هستند را بشناسند. زمانی که سایت شما روی پروتکل اچ تی تی پی اس بالا بیاید، به محض آن که کاربری آدرس سایت شما را داخل مرورگر وارد کند، گواهینامه ی شما که در سرورتان ثبت شده برای مرورگر آن کاربر ارسال می گردد.
پیش از این هم گفتیم که پروتکل اچ تی تی پی اس پیش از ارسال هر گونه دیتایی از طریق شبکه، آن دیتا را رمزنگاری میکند و سرور هم پس از به دست آوردن آن دیتا، اقدام به رمزگشایی دیتای به دست آورده می کند. در فرایند رمزنگاری/رمزگشایی دیتا، یک جفت کلید دیجیتال دخیل هستند که یکی اصطلاحاً Public یا «عمومی» است و دیگری Private یا «خصوصی».
زمانی که کاربری از طریق سایتی که دارای گواهینامه ی اس اس ال است اقدام به ارسال اطلاعات مرتبط با خود مثل نام کاربری و رمزعبور می کند، سرور سایت شما یک کلید عمومی در اختیار مرورگر کاربر قرار داده که دادهها را رمزنگاری کند؛ حال زمانی که دیتای رمزنگاری شده به دست سرور رسید، سرور از کلید خصوصی گواهینامه ی اس اس سایت شما استفاده میکند تا دیتای رمزنگاری شده را رمزگشایی کرده و بالتبع آن را بفهمد.
در پروتکل اس اس ال، هر نوع دیتای رمزنگاری شده با استفاده از Public Key فقط و فقط با استفاده از دارنده ی Private Key قابل رمزگشایی است و همین مسأله منجر به تضمین امنیت اطلاعات کاربران سایت می شود.
تفاوت گواهینامه های Self-signed و Third-party-signed
برای نصب گواهینامه ی اس اس ال روی سرور خود، شما دو راهکار پیش رو دارید: راهکار اول استفاده از گواهینامه های اصطلاحاً Self-signed هستند که این نوع گواهینامه ها از دید مرورگرها معتبر نیستند. کاربرانی که اقدام به باز کردن سایتهایی که دارای گواهینامه هایی از این دست هستند می کنند، قبل از باز شدن سایت با یک هشدار رو به رو می شوند. به طور کلی، این دست گواهینامه ها برای مواقعی که وب مستری بخواهد سایت خود را روی پروتکل HTTPS تست کند و نخواهد برای این کار هزینه یی متقبل شود مناسب است.
دسته ی دوم گواهینامه های اصطلاحاً Third-party-signed هستند که این نوع گواهینامه ها از دید مرورگرها معتبر حساب میشوند چرا که توسط شرکت های CA ارائه می گردند. این نوع گواهینامه ها را به صورت سالانه باید تمدید کرد و مسلماً برای گرفتنشان، نیاز به پرداخت هزینه است که این هزینه از چند هزار تومان در سال تا چند میلیون تومان بسته به قابلیتهای گواهینامه متغیر است.
برای اخذ این دست گواهینامه ها، شما نیاز به یک CSR دارید که مخفف واژگان Certificate Signing Request به معنی «درخواست امضای گواهینامه» است که حاوی اطلاعاتی همچون نام سایت، آدرس شرکت و … است.
گاهی اوقات پیش میآید که شما گواهینامه یی خریداری کردهاید که برای برخی مرورگرها یا برخی نسخه های خاصی از مرورگرها معتبر نیست. اگر چه که چنین اتفاقی خیلی نادر است، اما در چنین شرایطی کاربران سایت شما پیامی تحت عنوان Connection Not Trusted به معنی «ارتباط قابل اطمینان نیست» یا پیام هایی با مضمون مشابه مشاهده خواهند کرد.
در فرایند تهیه ی گواهینامه ی اس اس ال، اطلاعات مختلفی از شما درخواست میشود که از آن جمله میتوان به نام شرکت، اساسنامه و … اشاره کرد و چنین اطلاعاتی، این تضمین را میدهد که سایت شما سایتی معتبر است. در انتخاب گواهینامه ی SSL باید موارد زیر را مورد بررسی قرار داد:
- نوع گواهینامه را باید مشخص کرد. برای یک دامنه مثلاً www.example.com، برای چندین دامنه مثلاً دامنه های www.example.com و example.co.uk و یا وایلدکارد به صورت a.example.com و b.example.com
- اخذ گواهینامه ی ۲۰۴۸ بیت به منظور ایجاد لایه ی امنیتی بیشتر
- تنظیم فایل robots.txt برای پشتیبانی از پروتکل HTTPS (جهت آشنایی بیشتر با نحوه ی استفاده از این فایل، به آموزش آشنایی با فایل robots.txt مراجعه نمایید.)
- استفاده از دستورات Redirect 301 برای هدایت کردن کاربران و موتورهای جستجویی که تاکنون به پروتکل HTTP انتقال می یافتند به پروتکل HTTPS
استفاده از Relative URL ها به این شکل که مثلاً برای لینک دادن به صفحه ی «درباره ما» به جای لینک زیر:
https://www.example.com/about
از لینک زیر استفاده کنید:
/about
نکته |
به طور کلی، منظور از یو آر ال های Relative، یو آر ال هایی است که در آنها آدرس مد نظر بدون نام دامنه می آید. علاوه بر این، استفاده از این نوع لینک ها این تضمین را ایجاد میکند که اگر در آینده خواستید تا مجدد به پروتکل اچ تی تی پی مهاجرت کنید، با مشکلی مواجه نشوید. |
در صورت نیاز به استفاده از گواهینامه ی اس اس ال (SSL)، همواره باید موارد زیر را مد نظر داشته باشیم:
- گواهینامه Expire ( اکسپایر یا منقضی) نشده باشد.
- گواهینامه برای سایتی به غیر از سایت شما ثبت نشده باشد.
- فایل robots.txt پروتکل HTTPS را بلوکه نکرده باشد.
- مراقب باشید که از گواهینامه های اس اس ال قدیمی که آسیبپذیر هستند استفاده نکنید و همواره از آخرین و جدیدترین نسخه های TLS استفاده کنید.
- اطمینان حاصل کنید که Status Code های پروتکل اچ تی تی پی در پروتکل اچ تی تی پی اس هم به درستی کار می کنند. مثلاً اگر صفحه یی به درستی نمایش داده شد، کد وضعیت Ok 200 نمایش داده شده و برای صفحه های غیر قابل دسترس، کد وضعیت 404 نمایش داده شود.
در صورتی هم که گواهینامه ی SSL را برای سایت خود فعال کردید، یکی از راه هایی که از آن طریق می توان اعتبار گواهینامه را تست کرد، Qualys Lab Tool است.
مهاجرت از HTTP به HTTPS
پس از استفاده از پروتکل اچ تی تی پی اس، گوگل تلقی میکند که شما آدرس سایت خود را تغییر دادهاید و از همین روی، این احتمال وجود دارد که تا هفتهها و یا ماه ها تزلزل هایی در ترافیک سایت خود مشاهده کنید. این میزان تزلزل بسته به بزرگی و کوچکی سایت متغیر است. به گفته ی خود گوگل، داشتن XML Sitemap میتواند به تسریع شدن این فرایند کمک شایانی کند (برای آشنایی بیشتر با این نوع سایت مپ ها، به آموزش معرفی انواع Site Map برای بهینه سازی سایت مراجعه نمایید.) علاوه بر این، باید یکسری تنظیمات سروی نیز انجام داد تا از این پس، کلیه ی یو آر ال هایی که با ://http شروع می شدند، با ://https شروع شوند. برای این کار، باید کدهای زیر را داخل فایل htaccess. قرار دارد:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule (.*) https://%{HTTP_HOST}%{REQUEST_URI} [R=301,L]
این کدها، تمامی صفحات سایت شما را به پروتکل اچ تی تی پی اس ریدایرکت خواهند کرد (البته میشود که با استفاده از دستوراتی اختصاصی تر، صرفاً تعدادی از صفحات سایت را با اس اس ال بالا آورد.)
لازم به ذکر است که در حال حاضر گوگل برخورداری از پروتکل اچ تی تی پی اس را به عنوان یک سیگنال مثبت در سئو سایت قلمداد میکند اما هرگز نباید این انتظار را داشته باشید که سئوی سایت شما بلافاصله بهبود چندانی پیدا کند چرا که هر چقدر هم که پروتکل اچ تی تی پی اس برای گوگل سیگنال مثبتی باشد، به اندازه ی محتوای فاخر و ارزشمند برای گوگل مهم نیست!
در ضمن، باید تنظیمات وب مستر تولز را هم برای پروتکل اچ تی تی پی اس به روز رسانی کرد. به گفته ی خود گوگل، باید چهار نسخه از سایت خود به آدرسهای زیر را در وب مستر تولز فعال سازید:
https://www.example.com
http://www.example.com
https://example.com
http://example.com