4 8 Stimmen

XAMPP: SSL/HTTPS für lokale Projekte einrichten

Tutorial von Stefan Trost | Letztes Update am 10.06.2018 | Erstellt am 09.08.2017

In diesem Tutorial möchte ich euch zeigen, wie ihr eure XAMPP-Konfiguration so einrichten könnt, dass ihr eure lokalen PHP-Projekte auch über SSL bzw. im Browser über eine HTTPS-URL erreichen könnt. Praktisch ist dies zum Beispiel in dem Fall, dass auch eure Online-Website über HTTPS läuft und ihr so in beiden Fällen dieselbe Linkstruktur nutzen könnt.

In meinem Tutorial zum Thema virtuelle Domains hatte ich schon die Grundlagen erklärt, wie man mit XAMPP und Apache Domains definieren kann, die dann auf ein lokales Verzeichnis in der XAMPP-Installation zeigen können. Nach dieser Einrichtung sind alle Domains nur über HTTP erreichbar. Um auch HTTPS zu erlauben, sind noch die folgenden Schritte notwendig.

Zertifikat erstellen

Zunächst müssen wir uns im ersten Schritt ein eigenes SSL-Zertifikat erstellen. Zum Glück hält XAMPP bereits ein kleines Skript dafür bereit, das wir folgendermaßen öffnen können:

  1. Das Skript finden wir im Apache-Ordner der XAMPP-Installation, bei einer Standard-Installation unter Windows ist das der Pfad: C:\xampp\apache
  2. In diesem Ordner finden wir die Datei makecert.bat, mit einem Doppelklick auf die Datei können wir das Skript starten.

Nach dem Starten des Scripts öffnet sich die Kommandozeile, wo wir nur noch den Anweisungen folgen brauchen. Als erstes müssen wir ein Passwort für unseren Key eingeben, das sollte so aussehen.

Generating a 2048 bit RSA private key
............+++
...................+++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:

Hier können wir ein beliebiges Passwort verwenden und anschließend wiederholen. Es folgen weitere Fragen wie beispielsweise Land (Country Name) oder Unternehmen (Organization Name). Hier können wir im Prinzip eingeben, was wir möchten oder einen Punkt eintippen, wenn wir das Feld freilassen möchten. Diese Angaben werden später in unserem Zertifikat verwendet. Als "Common Name" geben wir den Namen unserer URL ein. Zuletzt müssen wir das Passwort vom Beginn noch einmal wiederholen, dann wird das Zertifikat erstellt.

Das ganze sieht dann beispielsweise so aus:

Generating a 2048 bit RSA private key
............+++
...................+++
writing new private key to 'privkey.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:NRW
Locality Name (eg, city) []:BOT
Organization Name (eg, company) [Internet Widgits Pty Ltd]:STT
Organizational Unit Name (eg, section) []:WEB
Common Name (e.g. server FQDN or YOUR name) []:localhost
Email Address []:local@example.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:.
An optional company name []:.
Enter pass phrase for privkey.pem:
writing RSA key
Signature ok
subject=/C=DE/ST=NRW/L=BOT/O=STT/OU=WEB/CN=localhost/emailAddress=local@example.com
Getting Private key
        1 Datei(en) verschoben.
        1 Datei(en) verschoben.

-----
Das Zertifikat wurde erstellt.
The certificate was provided.

Drücken Sie eine beliebige Taste . . .

Nun ist unser Zertifikat erstellt und dieser Schritt ist fertig. Das fertige Zertifikat wurde in den Ordnern C:\xampp\apache\conf\ssl.crt und C:\xampp\apache\conf\ssl.key abgelegt, sofern wir XAMPP in C:\xampp installiert haben.

VirtualHost definieren

Im nächsten Schritt müssen wir für jede Domain einen neuen VirtualHost in der Datei C:\xampp\apache\conf\extra\httpd-vhosts.conf einrichten, ähnlich wie wir es auch schon in dem ersten Tutorial gemacht haben.

An dieser Stelle ist wichtig zu wissen, dass HTTP über Port 80 läuft, SSL dagegen aber über Port 443. Im folgenden definieren wir die URL example.com, die sowohl über http://www.example.com als auch über https://www.example.com erreichbar sein soll. Der erste Block <VirtualHost *:80> gilt für alle Anfragen über Port 80 und sieht in etwa so aus, wie die Blöcke aus dem ersten Tutorial. Unter DocumentRoot können wir das Stammverzeichnis angeben.

# HTTP

<VirtualHost *:80>
 DocumentRoot "C:/xampp/htdocs/myproject"
 ServerName example.com
 ServerAlias www.example.com
</VirtualHost>

# HTTPS

<VirtualHost *:443>
 DocumentRoot "C:/xampp/htdocs/myproject"
 ServerName example.com
 ServerAlias www.example.com
 SSLEngine on
 SSLCertificateFile "conf/ssl.crt/server.crt"
 SSLCertificateKeyFile "conf/ssl.key/server.key"
</VirtualHost>

Die HTTPS-Anfragen werden über den zweiten Block <VirtualHost *:443> definiert. Die Angaben zum DocumentRoot-Verzeichnis, ServerName und ServerAlias sind identisch. Zusätzlich müssen wir aber noch Angaben zu unserem SSL-Zertifikat und Key machen. Damit sagen wir dem Server, wo er die entsprechenden Dateien findet. Wie man sieht, sind es die Ordner, in denen gerade unser Zertifikat gespeichert wurde.

In dem Beispiel hier haben wir nur eine URL definiert, die über HTTP und HTTPS erreichbar sein soll. Jede weitere Domain bzw. URL muss genauso definiert werden, wir können beliebig viele Blöcke dieser Art untereinander schreiben.

Apache neu starten

Damit unsere Änderungen aktiv werden, müssen wir jetzt Apache neu starten. Dafür öffnen wir das XAMPP Control Panel und klicken hinter dem Modul "Apache" auf "Stop" und anschließend wieder auf "Start", damit der Server neu mit der neuen Konfiguration startet.

Ausnahmen hinzufügen

Nun sind wir mit unserer Konfiguration fertig. Wenn wir jedoch den Browser aufrufen, erhalten wir unter Umständen (je nach Browser und Browsereinstellungen) die Fehlermeldung "Diese Verbindung ist nicht sicher" mit dem Fehlercode SEC_ERROR_UNKNOWN_ISSUER. Dazu liefert der Firefox-Browser den abschreckenden Text "Der Inhaber von ... hat die Website nicht richtig konfiguriert. Firefox hat keine Verbindung mit der Website aufgebaut, um ihre Informationen vor Diebstahl zu stützen". Kurz gesagt: Wir können unsere Website gar nicht aufrufen.

Der Grund dafür ist, dass wir das Zertifikat selbst erstellt haben und Firefox von sich aus nur Zertifikaten von offiziellen Zertifizierungsstellen traut. Für unsere Zwecke wäre das natürlich übertrieben, weswegen wir getrost auf den Button "Ausnahme hinzufügen..." klicken können. In dem sich nun öffnenden Dialog sollten wir die Option "Diese Ausnahme dauerhaft speichern" aktivieren, sonst werden wir bei jedem Aufruf erneut gefragt. Anschließend können wir auf "Sicherheits-Ausnahmeregel bestätigen" klicken und sollten nun unsere Website über die HTTPS-URL sehen können.

AntwortenPositivNegativDatumStimmen
00 Stimmen

Es wäre nett zu wissen, in WELCHER DATEI der Virtuellhost eingefügt werden muss ...
10.06.2018 um 22:31 Uhr

AntwortenPositiv Negativ

Stefan Trost

Profil anzeigen | Nachricht
Avatar
00 Stimmen

Dieses Tutorial baut auf das erste Tutorial zu diesem Thema auf, entsprechend ist es auch die gleiche Datei, die hier bearbeitet wird:

C:\xampp\apache\conf\extra\httpd-vhosts.conf

Ich habe den Dateipfd jetzt auch hier nochmal in diesem Tutorial eingefügt, ich hoffe damit wird es etwas klarer.
10.06.2018 um 23:31 Uhr

Positiv Negativ
00 Stimmen

Problem: XAMPP (apache) lässt sich nach der Änderung nicht mehr starten, da der SSL Block des VHosts in eine andere datai eingetragen werden muss ... musste eine Weile suchen. Die Datei ist im selben Verzeichnis und hat ssl im Namen.

Hab es mit der aktuellen xampp 7.3.x version getestet. Google Chrome spuckt immer rum (Verbindung sei nicht sicher) ... Ausnahme geht da wohl nicht ...
19.06.2018 um 18:16 Uhr

AntwortenPositiv Negativ
00 Stimmen

Also ich habe alle Blöcke in der gleichen Datei, das geht ohne Probleme. Vielleicht liegt es an der Version dass sich da etwas geändert hat?! Oder du hast einen anderen Fehler gemacht?

Das mit der nicht sicheren Verbindung ist klar. Wenn du selber ein Zertifikat erstellst wird diesem Zertifikat natürlich erstmal nicht vertraut. Das heißt du musst dein eigenes Zertifikat als vertraulich einstufen (gibt dazu Tutorials im Netz) oder einfach eine Ausnahme hinzufügen. Im Firefox ist das einfach, Chrome zickt da gerne etwas herum.
19.06.2018 um 21:25 Uhr

Positiv Negativ
Antworten

Über den Autor

Avatar AutorSoftware von Stefan Trost finden Sie auf sttmedia.de. Benötigen Sie eine individuelle Software nach Ihren eigenen Wünschen? Schreiben Sie uns: sttmedia.de/kontakt
Profil anzeigen | Nachricht

 

Ähnliche Themen

Schriftart aus Bild bestimmen
Offene Frage | 1 Antwort

Wichtiger Hinweis

Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.