Auch wenn man sich gern nur mit bunten Webapplikationen herumschlägt, kommt man nicht daran vorbei, auch mal den Lebensraum seiner Anwendung lokal nachzubauen. Ich wollte im aktuellen Projekt meine Seiten auch lokal via https://localhost/ auf meinem Mac mit OS X Lion erreichen können.
Was alles benötigt wird, um lokal mit HTTPS zu arbeiten und welche Konsolenkommandos nötig sind, soll im Blogbeitrag geklärt werden.
Soll HTTPS auch lokal möglich sein, benötigt man zunächst zwei Dinge:
- Apache HTTP Webserver
- SSL
Apache HTTP Webserver
SSL
Aktivieren von SSL in der Apache-Konfiguration
Wir wechseln dazu in das Verzeichnis unseres vorinstallierten Apache /ect/apache2/, öffnen die Konfigurationsdatei httpd.conf und kommentieren mod_ssl.so und den Pfad zur SSL-Konfigurationsdatei ein. In der Regel sind Root-Rechte für den Zugriff nötig.
httpd.conf
LoadModule ssl_module libexec/apache2/mod_ssl.so # Secure (SSL/TLS) connections Include /etc/apache2/extra/httpd-ssl.conf
In der httpd-ssl.conf unter /etc/apache2/extra/ muss in der Regel nichts angepasst werden.
Schlüssel erzeugen
Bevor jetzt der Server neu gestartet werden kann, müssen noch das SSL-Zertifikat und der Schlüssel angelegt werden.
Pfad ermitteln
egrep 'server.crt|server.key' httpd-ssl.conf SSLCertificateFile "/private/etc/apache2/server.crt" SSLCertificateKeyFile "/private/etc/apache2/server.key"
Key erzeugen
Also erzeugen wir zuerst einen server.key mit Passwort im Apache-Verzeichnis /etc/apache2/. Das Passwort kann leider nicht weggelassen werden.
sudo openssl genrsa -des3 -out server.key 1024
Key-Request erzeugen
Als nächstes muss eine Zertifikat-Request-Datei (server.csr) erzeugt werden, die den soeben erzeugten server.key verwendet.
sudo openssl req -new -key server.key -out server.csr
Die ganzen Eingabeaufforderungen können bis auf die Passworteingabe einfach übersprungen werden.
Zertifikat erzeugen
Jetzt muss noch das Zertifikat erzeugt werden, das den Request und den Key nutzt.
sudo openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt
Passworteingabe bei Serverstart
Passwortskript
Jetzt kann der Apache mit Eingabe des Passwortes gestartet werden. Da er jedoch nicht nach dem Passwort fragt, nutzen wir ein kleines Skript, das mit folgendem Inhalt einfach in dem Apache-Verzeichnis unter /etc/apache2/ mit dem Namen passphrase.sh abgelegt wird:
#!/bin/sh echo ihrpasswort
Einbinden Passwortskript
Dieses wird dann noch in der httpd-ssl.conf im Verzeichnis /etc/apache2/extra konfiguriert, damit das Skript beim Start auch automatisch ausgeführt wird.
# Pass Phrase Dialog: # Configure the pass phrase gathering process. # The filtering dialog program (`builtin' is a internal # terminal dialog) has to provide the pass phrase on stdout. SSLPassPhraseDialog exec:/etc/apache2/passphrase.sh
Rechte setzen
Um beim Starten von Apache folgende Meldung zu vermeiden, muss das passphase.sh-Skript auch ausführbar sein.
[Tue Nov 22 16:39:21 2011] [error] Init: Pass phrase incorrect [Tue Nov 22 16:39:21 2011] [error] SSL Library Error: 218710120 error:0D094068:asn1 encoding routines:d2i_ASN1_SET:bad tag
Man muss also die Datei ausführbar machen mit:
chmod +x /etc/apache2/passphrase.sh
Ergebnis
Jetzt fährt der Apache auf jeden Fall sauber hoch. Auf dem Mac kann jetzt https://localhost/ aufgerufen werden, nachdem man das Zertifikat akzeptiert hat.
Vielen Dank für Dein Script, leider sehe ich da nicht durch und weiß nicht was ich wann wo eingeben muss. Weil ich davon keinen Plan habe, aber ich brauche den localhost zum testen. Vielen Dank.
Hallo Mario,
als erstes kann ich Dir, um Dateien auch als Administrator zu editieren, den Text Editor Fraise (http://www.macupdate.com/app/mac/33751/fraise) empfehlen, er fragt automatisch nach dem Passwort, wenn Administratorrechte für das Bearbeiten von Dateien benötigt werden.
Aktivieren von SSL in der Apache-Konfiguration
httpd.conf
Die Datei einfach mit einem Editor (wie Fraise) öffnen und die Zeilen des Skriptes einkommentieren (wenn eine „#“ davor ist, diese entfernen) bzw. hinzufügen.
Schlüssel erzeugen
Pfad ermitteln
Um den Pfad zu ermitteln, im Terminal in den Ordner httpd-ssl.conf (/etc/apache2/extra/) wechseln und das Skript ausführen (nur 1.Zeile).
Key erzeugen
In den Pfad im Terminal wechseln, wo die Keys liegen sollen. I.d.R. /etc/apache2/. Und dann den Befehl des Skriptes im Terminal ausführen.
Key-Request erzeugen
Im Terminal das Skript ausführen.
Zertifikat erzeugen
Im Terminal das Skript ausführen.
Passworteingabe bei Serverstart
Beim Erzeugen des Keys musste ein Passwort angegeben werden, dieses muss nun beim Start des Apache mit übergeben werden.
Passwortskript
Im Ordner /etc/apache2/ eine neue Datei in einem Editor(wie Fraise) mit dem Namen passphrase.sh anlegen und das Skript in diese Datei einfügen. Das Passwort muss natürlich das sein, was beim Erzeugen des Keys angegeben wurde.
Einbinden Passwortskript
Damit das Skript auch ausgeführt wird, muss die httpd-ssl.conf im Verzeichnis/etc/apache2/extra mit dem Editor geöffnet und nach „SSLPassPhraseDialog“ gesucht werden. An dieser Stelle dann einfach Zeile 5 des Skriptes einfügen.
Rechte setzen
Zum Abschluss noch einmal in das Terminal gehen und das letzte Skript ausführen.
Hoffe so ist es verständlicher.
Beste Grüße
Sehr gut! Vielen Dank!