امیر مقدم
کارشناس ارشد سرویس های مبتنی بر شبکه مایکروسافت

آموزش ریدایرکت کردن HTTP به HTTPS در IIS به زبان ساده

چگونه HTTP را به HTTPS ریدایرکت ( Redirect ) کنیم؟ HTTP to HTTPS Redirection چگونه انجام می شود؟ هدایت تمام ترافیک از HTTP به HTTPS در IIS7 این اطمینان که تمامی یوزر ها همیشه به صورت مطمئن و امن به سایت شما دسترسی دارند را ایجاد می کند, راه های متفاوت زیادی برای راه اندازی, هدایت HTTP به HTTPS که هر یک از دیگری بهتر می باشد در IIS7 وجود دارد.هدایت ایده آل HTTP به HTTPS موجب :

دوره های شبکه، برنامه نویسی، مجازی سازی، امنیت، نفوذ و ... با برترین های ایران
  • خیلی راحت و به قولی نمه گل کاربران به HTTPS هدایت می شوند همچنین کاربران مجبور به تایپ HTTPS در URL نیستد
  • هدایت کاربران به صفحه ای خاص که قرار بود به HTTP برن
  • ذخیر هر متغیر به تصویب رسیده در query string
  • کاردر تمامی مرورگرها
  • اجازه می دهد که قسمتی از سایت حتما با SSL باشد و قسمتی دیگر با HTTP
  • کاربران را بر فرض از tosinso.com به www.tosinso.com هدایت می کند

می شود . متاشفانه, یک راه اسان برای برآوردن تمامی این شرایط وجود ندارد و تعداد کمی راه و روش برای انها وجود دارد, اما همه به این روش ها نیاز ندارند, بنابر این در این مقاله با استفاده از 2 روش به هدایت از HTTP به HTTPS می پردازیم که این 2 روش عبارتد از :

1. راه اندازی یک صفحه خطا سفارشی

2. استفاده از Microsoft URL Rewrite Module

روش اول Redirect کردن HTTP به HTTPS با صفحه خطا سفارشی

در این جا در محیط آزمایش, Active Directory Certificate Service از نوع Enterprise راه اندازی شده به همراه سرویس AD DS, سرویس IIS و DNS هم با یکدیگر روی Member server .

پیاده سازی Active directory certificate service

وارد کنسول server manager شده, کلیک راست روی Roles و Add roles را انتخاب کرده سپس گزینه Active directory certificate services را مارک کرده و ویزارد را به ترتیب زیر پیش می بریم :

وب سایت توسینسو
وب سایت توسینسو
وب سایت توسینسو
وب سایت توسینسو
وب سایت توسینسو

در این پنچره اسم مناسبی برای CA وارد می کنیم

وب سایت توسینسو

بعد از این next و در اخر Install را کلیک می کنیم .

آموزش راه اندازی Redirect صفحه HTTP به HTTPS با SSL

نقش 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 راه انداختیم نیز می باشد .

روش دوم Redirect کردن HTTP به HTTPS با URL Rewrite

در این مقاله به هدایت 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 جدیدی اضافه شده

وب سایت توسینسو

در اخر مرورگر را باز کرده و ادرس سایتمون رو وارد می کنیم پس از چند ثانیه :

وب سایت توسینسو
  • نکته : Binding داخل کنسول IIS فراموش نشود, چون در محیط ازمایشگاهی این سناریو پیاده سازی شده و دامنه ما در سطح Internet قابل رویت نیست ip dns server کلاینت ها شامل ip سروری که روش IIS و DNS راه انداختیم نیز می باشد .
  • نتیجه : با هدایت HTTP به HTTPS اطمینان داریم که کاربران به شکلی ایمن به سایت ما دسترسی دارند با این روش قادر خواهیم بود تمام یا قسمتی از سایت رو به واسطه ی HTTPS در اختیار بگذاریم در این 2 مقاله به دو روش از چندین روش, هدایت HTTP به HTTPS پرداخته شد, امیدوارم که مورد توجه دوستان قرار گرفته باشد.

امیر مقدم
امیر مقدم

کارشناس ارشد سرویس های مبتنی بر شبکه مایکروسافت

نظرات