Blog

HTTPS lokal mit Apache 2.2 und SSL unter Mac OS X Lion 10.7

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

OS X Lion kommt einem beim ersten Punkt der Liste sehr entgegen. Es hat bereits einen Apache HTTP Webserver installiert, so braucht man an dieser Stelle nicht viel tun. Warum ist das schon installiert, mögen sich jetzt einige fragen. OS X Lion realisiert mittels Apache HTTP Webserver die Webfreigaben. So kann praktischerweise auch unter Freigabe -> Webfreigabe geschaut werden, ob der Webserver schon läuft. Auch ein Starten und Stoppen des Webservers ist an dieser Stelle möglich.
Bei mir ist die Webfreigabe durch die Einstellungen meiner Firewall blockiert. Ist aber nicht weiter schlimm, da der Apache ja nichtsdestotrotz lokal läuft. Nur wer wirklich eine Webfreigabe ermöglichen möchte, sollte die Einstellungen in der Firewall entsprechend ändern.

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.

Holisticon AG — Teile diesen Artikel

Über den Autor

Die Holisticon AG ist eine Management- und IT-Beratung aus Hamburg. Wir entwickeln beste Individualsoftware, Webplattformen und Apps. Geschäftsprozesse durchdringen wir und automatisieren sie. Große Datenmengen machen wir mit Smart-Data-Ansätzen beherrschbar. ...und das alles agil.

3 Kommentare

  1. 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.

  2. 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

Antwort hinterlassen