konfiguracja / szyfrowanie

Połączenia szyfrowane, czyli co zrobić aby SSL działał zgodnie z oczekiwaniami?

Przyszedł taki dzień kiedy przyszedł klient i rzekł: „Chcę mieć SSL, JUŻ!!!”. Klient ma aplikację hostowaną w domenie mojej firmy, a urle wyglądają mniej więcej tak:
aplikacja1.apps.ohdev.net
aplikacja2.apps.ohdev.net

Napisałem do administratora serwera, a ten zażądał ode mnie CSR (Certificate Signing Request), który wygenerowałem dla domeny *.ohdev.net. Dlaczego symbol * jest przed nazwą domeny? Bo jest to certyfikat typu wildcard i pozwala zabezpieczyć wszystkie subdomeny w domenie ohdev.net.
Żądanie zostało opłacone u dostawcy usługi i zwrotnie dostałem zestaw plików do zaimportowania certyfikatu na serwerze. Robi się to w IIS na węźle głównym -> sekcja IIS -> Certyfikaty Serwera.

Certyfikat pomyślnie został zaimportowany, a na konkretnym site’ci dodałem powiązania (binding) dla protokołu https. Pojawił się tutaj problem, ponieważ nie byłem w stanie wpisać nazwy zwyczajowej dla powiązań https co dla powiązań http było możliwe. Z pomocą przyszedł internet i polecenie:

appcmd set site /site.name:"ohdev"
/bindings.[protocol='https',bindingInformation='*:443:'].bindingInformation:*:443:application1.apps.ohdev.pl

wykonane z poziomu folderu
C:\Windows\System32\inetsrv

Powinno zadziałać, ale nie zadziałało. Dlaczego? Bo wykupiony przeze mnie certyfikat obsługiwał tylko subdomeny pierwszego poziomu.

Należy zawsze sprawdzać czy certyfikat typu wildcard obsługuje domeny pierwszego i drugiego stopnia, czy może tylko pierwszego. Jeżeli pierwszego to niestety domeny:
aplikacja1.apps.ohdev.net
aplikacja2.apps.ohdev.net

nie będą obsługiwane przez mój certyfikat. Tylko domeny
aplikacja1.ohdev.net
aplikacja2.ohdev.net

Poradziłem sobie z tym wyrzucając poziom subdomeny apps i zadziałało.

Skoro już mam szyfrowaną stronę, a do tego jeszcze adres strony został zmieniony (wyrzucone apps) to chciałbym, aby wpisanie starych adresów jak i wpisanie nowego adresu zostało przekierowane przez IIS na nowy adres https://aplikacja1.ohdev.net. Tutaj wykorzystałem rewriting oferowany przez IIS, który możemy skonfigurować w web.configu.

<system.webServer>
  <rewrite>
    <rules>
      <rule name="Redirections" patternSyntax="ECMAScript" stopProcessing="true">
        <match url=".*" />
        <conditions logicalGrouping="MatchAny">
          <add input="{HTTPS}" pattern="off" ignoreCase="true" />
          <add input="{HTTP_HOST}" pattern="^application1.apps.ohdev.pl$" />
        </conditions>
        <action type="Redirect" url="https://application1.ohdev.pl/{R:0}" />
      </rule>
    </rules>
  </rewrite>
</system.webServer>

Należy pamiętać, aby dla application.ohdev.pl jak i application1.apps.ohdev.pl istniały powiązania (binding) dla danego website’a.

Leave a Reply

Your email address will not be published. Required fields are marked *