Navigation and service panel


Content

This text is fallbacked from the German Version. If you need use Google Translate


Sichere Verbindung mit Sitecore und Microsoft Azure

By Reto Hugi on 13. May 2014, No comments

Mit dem Sitecore Azure Modul bietet Sitecore eine einfache Möglichkeit, mit wenigen Klicks Sitecore in die Microsoft Azure Cloud zu deployen. Dieser Beitrag erläutert, wie man für die Sitecore Site in Azure eine Verbindungsverschlüsselung (HTTPS) einrichtet.

Das Sitecore Modul konfiguriert für Azure Web Roles standardmässig eine HTTP Verbindung. Da in einem Azure Cloud Service Setup (aka Web Role) die Konfiguration der Endpunkte, auf welchen die Website ausgeliefert wird, mit dem Deployment konfiguriert wird, können weitere Endpunkte in der Service Configuration in Sitecore konfiguriert werden. Vorausgesetzt, das Zertifikat ist bereits für den/die Cloud Services konfiguriert. Weitere Informationen zur Installation eines Zertifikats liefert diese gute Dokumentation von Microsoft.

Für die nächsten Schritte gilt es somit folgende Voraussetzungen bereits zu stellen:

  • Zertifikat in Microsoft Azure konfiguriert
  • Initiales Deployment mit Sitecore Azure Modul in die Azure Cloud gemacht (Website ist unter HTTP verfügbar)

HTTPS Konfiguration für Sitecore Web Role

Nach dem initialen Deployment auf Microsoft Azure erstellt das Sitecore Azure Modul die entsprechenden Items zur Konfiguration der Web Roles. Diese befinden sich unter /sitecore/system/Modules/Azure/<Project>/<Azure Location>/<Environment Type>/<RoleXY>/<Azure Deplyoment> des Deployment Servers und können via Content Editor bearbeitet werden.

Damit die Sitecore Site via HTTPS verfügbar wird, muss die Service Definition um einen HTTPS Endpunkt erweitert werden. Dazu muss in der Item Section "CsPack" im Feld "Service Definition" folgende Änderung gemacht werden:

  1. Im XML Knoten ServiceDefinition/WebRole/Endpoints neuen Endpoint auf HTTPS konfigurieren:
    <InputEndpoint name="HttpsIn" protocol="https" port="443" certificate="MyCertificateName" />
  2. Im Knoten ServiceDefinition/WebRole/Sites/Site/Bindings HTTPS Binding registrieren:
    <Binding name="HttpsIn" endpointName="HttpsIn" />

Zertifikat Konfigurieren

Das Zertifikat für diese neue HTTPS Verbindung wird ebenfalls im Feld "Service Definition" definiert:

  1. Im XML Knoten ServiceDefinition/WebRole/Certificates das Zertifikat registrieren:
    <Certificate name="MyCertificateName" storeLocation="LocalMachine" storeName="CA" />
  2. Im Feld "Service Configuration" der Item Section "CsPack" muss das Zertifikat für die Rolle ebenfalls konfiguriert werden. Dazu muss im XML Knoten ServiceConfiguration/Role/Certificates das Zertifikat inkl. Fingerprint registriert werden:
    <Certificate name="MyCertificateName" thumbprint="9816E91D7036AE1A6BA00FC85F016B005E84E6E8" thumbprintAlgorithm="sha1" />

Wer die Sitecore Site sowohl unter HTTP als auch HTTPS ausliefern möchte, ist jetzt fertig. Allerdings wird man in den allermeisten Fällen ein redirect von HTTP auf HTTPS bevorzugen. Nachfolgendes Kapitel beschreibt, wie dies mit Rewrite Rules und XSL Stylesheets realisiert werden kann.

HTTPS Only Konfiguration

Microsoft Azure Cloud Services werden standardmässig mit aktiviertem IIS Rewrite Modul bestückt. Für das Sitecore Deployment müssen wir also nur noch die Web.config mit einer entsprechenden Transformation versehen (vorausgesetzt der Deployment Server selbst besitzt die Rewrite Konfiguration nicht).
Damit sämtliche Anfragen über HTTP auf HTTPS umgeleitet werden, muss im Feld "Custom Web Config Patch" in der Item Section "Config Patches" folgendes xsl Stylesheet hinzugefügt werden:

<pre class="brush:xslt" xml:space="preserve"><xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"> <xsl:output method="xml" indent="yes" /> <xsl:template match="@* | node()" name="identity"> <xsl:copy> <xsl:apply-templates select="@* | node()" /> </xsl:copy> </xsl:template> <xsl:template match="configuration/system.webServer"> <system.webServer> <xsl:apply-templates select="@* | "/> <rewrite> <rules> <rule name="Redirect to HTTPS" enabled="true" stopProcessing="true"> <match url="(.)" /> <conditions> <add pattern="off" ignoreCase="true"> <xsl:attribute name="input">{HTTPS}</xsl:attribute> </add> </conditions> <action type="Redirect" redirectType="Permanent"> <xsl:attribute name="url">https://{HTTP_HOST}/{R:1}</xsl:attribute> </action> </rule> </rules> </rewrite> </system.webServer> </xsl:template> </xsl:stylesheet>

Ist die Konfiguration gemacht, braucht es nur noch wenige Mausklicks und ein "Upgrade Files" in der Sitecore Azure Management App und HTTPS inklusive HTTP Redirect sind eingerichtet.

No comments

Add your comment

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

*