چگونه HTTP را به HTTPS ریدایرکت ( Redirect ) کنیم؟ HTTP to HTTPS Redirection چگونه انجام می شود؟ هدایت تمام ترافیک از HTTP به HTTPS در IIS7 این اطمینان که تمامی یوزر ها همیشه به صورت مطمئن و امن به سایت شما دسترسی دارند را ایجاد می کند, راه های متفاوت زیادی برای راه اندازی, هدایت HTTP به HTTPS که هر یک از دیگری بهتر می باشد در IIS7 وجود دارد.هدایت ایده آل HTTP به HTTPS موجب :
می شود . متاشفانه, یک راه اسان برای برآوردن تمامی این شرایط وجود ندارد و تعداد کمی راه و روش برای انها وجود دارد, اما همه به این روش ها نیاز ندارند, بنابر این در این مقاله با استفاده از 2 روش به هدایت از HTTP به HTTPS می پردازیم که این 2 روش عبارتد از :
1. راه اندازی یک صفحه خطا سفارشی
2. استفاده از Microsoft URL Rewrite Module
در این جا در محیط آزمایش, Active Directory Certificate Service از نوع Enterprise راه اندازی شده به همراه سرویس AD DS, سرویس IIS و DNS هم با یکدیگر روی Member server .
وارد کنسول server manager شده, کلیک راست روی Roles و Add roles را انتخاب کرده سپس گزینه Active directory certificate services را مارک کرده و ویزارد را به ترتیب زیر پیش می بریم :
در این پنچره اسم مناسبی برای CA وارد می کنیم
بعد از این next و در اخر Install را کلیک می کنیم .
نقش IIS و DNS با زونی از نوع Primary با نام iis.com روی Member server نصب شده اند, برای نصب و راه اندازی نقش IIS می تونید به لینک های زیر که اقای نصیری زحمتش رو کشیدن سری بزنید :
و اما ادامه کار, وارد کنسول IIS شده سمت چپ روی اسم سرور کلیک کرده و در قسمت IIS روی server certificate دبل کلیک کرده و در سمت راست با توجه به شرایط یکی از موارد را انتخاب می کنیم که در اینجا با توجه به محیط گزینه create Domain certificate انتخاب شد, در پنجره باز شده در common name اسمی که به هنگام راه اندازی CA وارد کردیم را اینجا تایپ می کنیم در Organization نام سازمان و در Organization unit بدین صورت وارد می کنیم: ROOTCA (در کنسول IIS در قسمت server certificate اگر گزینه های دیگر انتخاب شود در Organization unit می توان IT یا WEB را تایپ کرد) . الباقی موارد را به دلخواه وارد می کنیم .
در اینجا با کلیک روی select سرور CA رو انتخب می کنیم سپس در friendly name اسم مناسبی می دهیم و finish را کلیک می کنیم
در server certificate گواهی که به IIS اختصاص داده شده نشان داده می شود
سپس روی سایت iis به bindings رفته وطبق تصویر bind می کنیم, CA در قسمت friendly name وارد شد
روی خود سایت در قسمت IIS به SSL setting رفته و Require SSl را مارک می کنیم و سپس apply
وارد مرورگر شده و ادرس سایت را تایپ می کنیم و با Error زیر مواجه می شویم
حالا یک notepad باز می کنیم و داخلش این موارد را copy/paste می کنیم :
<html> <head> <title> Redirecting to HTTPS </title> </head> <script language="JavaScript"> function redirectHttpToHttps() { var httpURL= window.location.hostname + window.location.pathname + window.location.search; var httpsURL= "https://" + httpURL; window.location = httpsURL; } redirectHttpToHttps(); </script> <body> </body> </html>
واین فایل رو با نام redirectToHttps و با پسوند (htm.) در physical path که محتویات سایت مورد نظر اونجا قرار دارد save اش می کنیم ، در کنسول IIS روی اسم سرور کلیک می کنیم و در قسمت IIS به error page رفته روی error 404 کلیک کرده و در سمت راست Add را انتخاب می کنیم, در status code وارد می کنیم 403.4 و در File path ادرس محلی که فایل redirectToHTTPS را در انجا قرار دادیم وارد می کنیم دقت کنید از طریق Browse این کار را انجام ندهید
سپس در همین جا روی error 403.4 کلیک کرده و در سمت راست Edit feature setting را انتخاب می کنیم, در قسمت error response گزینه custom error pagesرا مارک می کنیم و بعد در pathمحل فایل redirecToHTTPS.htm را وارد می کنیم مثل مرحله قبل
خوب همه چیز دیگه امادست, داخل مرورگر شده و تایپ می کنیم iis.com و بعد از چند ثانیه مشاهده می کنیم :
نکته :
Binding داخل کنسول IIS فراموش نشود, چون در محیط ازمایشگاهی این سناریو پیاده سازی شده و دامنه ما در سطح Internet قابل رویت نیست ، ip dns server کلاینت ها شامل ip سروری که روش IIS و DNS راه انداختیم نیز می باشد .
در این مقاله به هدایت HTTP به HTTPS توسط Microsoft URL Rewrite Module می پردازیم کار در این قسمت ساده است اما اول باید بگم که در این جا در محیط آزمایش, Active Directory Certificate Service از نوع Enterprise راه اندازی شده به همراه سرویس AD DS, سرویس IIS و DNS هم با یکدیگر روی Member server .ابتدا Module مورد نظر رو از لینک زیر کپی کرده:
سپس مراحل را طبق قسمت اول تا قبل از مرحله ای که داخل سایت مورد نظر Require ssl را تیک می زدیم طی می کنیم یعنی نیازی به زدن تیک Require ssl نیست, سپس URL Rewrite رو نصب می کنیم.
بعد از نصب وارد کنسول IIS شده روی نام سرور کلیک کنیم و به قسمت IIS بریم یا روی سایت مورد نظر به این قسمت بریم خواهیم دید که ویژگی دیگری به نام URL Rewrite به سایر ویژگی ها اضافه شده.حالا به physical path سایت مد نظر رفته و موارد زیر را در قسمت مناسب فایل web.config کپی-پیست می کنیم
<system.webServer> <httpRedirect enabled="false" destination="" httpResponseStatus="Found" /> <rewrite> <rules> <rule name="HTTP to HTTPS Redirection" stopProcessing="true"> <match url="(.*)" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}{REQUEST_URI}" redirectType="Found" /> </rule> </rules> </rewrite> </system.webServer>
داخل کنسول به سایت مورد نظر رفته در قسمت IIS ویژگی URL Rewrite را انتخاب می کنیم و در این جا مشاهده می کنیم Rule جدیدی اضافه شده
در اخر مرورگر را باز کرده و ادرس سایتمون رو وارد می کنیم پس از چند ثانیه :
کارشناس ارشد سرویس های مبتنی بر شبکه مایکروسافت
زمان پاسخ گویی روز های شنبه الی چهارشنبه ساعت 9 الی 18
فقط به موضوعات مربوط به محصولات آموزشی و فروش پاسخ داده می شود