Je bent hier: ITFAQ.nl » Webdevelopment » Umbraco beveiligen: HTTPS forceren en een versleutelde databaseverbinding

Umbraco beveiligen: HTTPS forceren en een versleutelde databaseverbinding

Een Umbraco-website beveilig je op twee plekken met SSL/TLS: de verbinding tussen de bezoeker en je website (HTTPS), en de verbinding tussen je website en de SQL Server-database. In dit artikel lees je welke aanpassingen je hiervoor maakt, voor het huidige Umbraco (appsettings.json) en voor Umbraco 8 (web.config): een HTTP naar HTTPS redirect, HSTS, en een versleutelde databaseverbinding.

HTTPS forceren voor Umbraco

Het webverkeer -tussen de bezoeker en jouw site- moet goed beveiligd zijn met SSL/TLS. En uiteraard voor je Umbraco-backoffice ook, om de beveiliging van Umbraco te optimaliseren. Daarvoor vertel je Umbraco eerst dat het HTTPS moet gebruiken.

In Umbraco 10 en nieuwer zet je in appsettings.json de instelling UseHttps op true:

"Umbraco": {
  "CMS": {
    "Global": {
      "UseHttps": true
    }
  }
}

In Umbraco 8 staat in het web.config-bestand de configuratie-key Umbraco.Core.UseHttps standaard op false, zet deze op true:

<add key="Umbraco.Core.UseHttps" value="true" />

HTTP naar HTTPS redirect

Nu het Umbraco-backoffice verkeer via HTTPS verloopt, wil je ook dat je website in zijn geheel via SSL bereikbaar is. En alleen maar via SSL, want je wilt toch ook de privacy van je bezoekers garanderen? Dit doe je eenvoudig met een IIS rewrite rule.

Wist je dat ik op andere blogs hier vaker over heb geschreven?

Maar ook in het Nederlands:

En “Website redirecten naar HTTPS” en “Redirect HTTP to HTTPS” is dus precies wat we willen. Voeg het volgende toe aan het web.config-bestand van je Umbraco-website. Dit werkt voor alle Umbraco-versies die je in IIS host, want ook het huidige Umbraco gebruikt in IIS een web.config-bestand:

<rewrite>
<rules>
<rule name="HTTP to HTTPS redirect" stopProcessing="true">
<match url="(.*)" />
<conditions>
<add input="{HTTPS}" pattern="off" ignoreCase="true" />
<add input="{HTTP_HOST}" pattern="localhost" negate="true" />
</conditions>
<action type="Redirect" url="https://{HTTP_HOST}/{R:1}" redirectType="Permanent" />
</rule>
</rules>
</rewrite>

Let er goed op dat je dit op de goede plek plaatst, binnen <system.webServer>. Nu redirect Umbraco netjes van HTTP naar HTTPS.

HTTP Strict Transport Security (HSTS)

Als je ook HTTP Strict Transport Security (HSTS) wilt configureren, laat je systeembeheerder dan deze code opnemen in het C:\Windows\System32\inetsrv\Config\applicationHost.config-bestand:

<hsts enabled="true"
max-age="31536000"
includeSubDomains="true"
preload="true" />

Of stel de volgende outboundRule in (op de juiste plek van je web.config-bestand):

<outboundRules>
<rule name="HSTS Strict-Transport-Security voor Umbraco en HTTPS" enabled="true">
<match serverVariable="RESPONSE_Strict_Transport_Security" pattern=".*" />
<conditions>
<add input="{HTTPS}" pattern="on" ignoreCase="true" />
</conditions>
<action type="Rewrite" value="max-age=31536000" />
</rule>
</outboundRules>

Umbraco’s SQL Server-verbinding versleutelen met SSL

Het is net zo belangrijk om de verbinding tussen je Umbraco-website en de achterliggende SQL Server-database goed te beveiligen. Die verbinding moet versleuteld zijn met SSL/TLS, zodat derden haar niet kunnen afluisteren. Dat stel je in via de connectiestring umbracoDbDSN, met Encrypt=True. Heeft de SQL Server geen certificaat dat je webserver vertrouwt, voeg dan ook TrustServerCertificate=True toe.

In Umbraco 10 en nieuwer staat de connectiestring in appsettings.json:

"ConnectionStrings": {
  "umbracoDbDSN": "Server=sql.example.com;Database=examplecom;User Id=examplecom;Password=w4chtw00rd;Encrypt=True;TrustServerCertificate=True",
  "umbracoDbDSN_ProviderName": "Microsoft.Data.SqlClient"
}

Umbraco 10 en nieuwer gebruikt Microsoft.Data.SqlClient, en die versleutelt de verbinding standaard. Krijg je na een upgrade een certificaatfout bij het verbinden met de database, dan is TrustServerCertificate=True (of beter: een geldig certificaat op de SQL Server) de oplossing.

In Umbraco 8 is een verbinding standaard niet met SSL/TLS versleuteld. Nadat je Umbraco hebt geïnstalleerd moet je de connectiestring umbracoDbDSN aanpassen in je web.config-bestand. Voeg hieraan toe: ‘Encrypt=True; TrustServerCertificate=True;‘. De volledige connectiestring wordt hiermee:

<connectionStrings>
<remove name="umbracoDbDSN" />
<add name="umbracoDbDSN"
connectionString="server=sql.example.com;
database=examplecom;
user id=examplecom;
password=w4chtw00rd;
Encrypt=True;
TrustServerCertificate=True;"
providerName="System.Data.SqlClient" />
</connectionStrings>

Publiceer je web.config– of appsettings.json-bestand, herlaad je website en vanaf dan is de verbinding niet door derden af te luisteren.

Scroll naar boven