FreeBSD: Easy Apache2 mit mod_php4.2 und SSL

Installation von Apache2 und mod_php4

Zuerst müsst ihr folgendes in die Konsole eingeben:

cd /usr/ports/www/mod_php4
make -DWITH_APACHE2 install clean

Das wird dann einige Minuten dauern, danach sollte aber Apache2 inklusive mod_php4
installiert sein. Nun müsst ihr nur noch php4 als Programmiersprache installieren:

cd /usr/ports/lang/php4
make install clean

Damit hab ihr dann alls nötige installiert.

Konfiguration des Apache2

Nun müsst ihr nur noch die httpd.conf etwas bearbeiten:

cd /usr/local/etc/apache2
vi httpd.conf

Ihr müsst folgende Zeilen kommentieren (ein „#“ davor setzen)

#LoadModule file_cashe_module libexec/apache2/mod_file_cache.so
#LoadModule cache_module libexec/apache2/mod_cache.so
#LoadModule disk_cache_module libexec/apache2/mod_disk_cache.so

Danach fügt ihr zu <DirectoryIndex> index.php hinzu:

DirectoryIndex index.php index.htm index.html index.html.var

Folgende Zeilen müssen auch in der httpd.conf enthalten sein:

AddType php4_module libexec/apache2/libphp4.so
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps

Zu guter letzt speichert ihr die httpd.conf

Wichtig ist dass ihr jetzt noch die index.html.var sichert.

cd /usr/local/www/data
cp index.html.var index.html.var.back

Nun könnt ihr den httpd starten.

/usr/local/sbin/apachectl start

SSL

Wenn ihr den Webserver jetzt mit einem Browser erreichen könnt, dann könnt ihr euch jetzt an die SSL-Unterstützung machen.

SSL Zertifikate erstellen

Um die Zertifikate zu erstellen, müsst ihr OpenSSL bereits funktionsfähig installiert haben. Geht nun in das Konfigurationsverzeichnis von Apache2 und erstellt dort folgende 2 Unterverzeichnisse:

cd /usr/local/etc/apache2/
mkdir ssl.key
mkdir ssl.crt

Nun erstellt ihr die Schlüssel.

openssl genrsa -des3 -out server.key 1024

Damit Apache2 diesen Schlüssel auch lesen kann, müsst ihr ihn noch konvertieren.

openssl rsa -in server.key -out server.key.unsecure

Bei der Erstellung der Signierungsanfrage werden euch ein paar Fragen gestellt, die ihr möglichst wahrheitsgemäß ausfüllen solltet. Achtet hier besonders auf die Frage nach „Common Name“! Hier gilt es die Domain einzutragen, unter der der HTTPS-Server später zu erreichen sein soll. Bei mir ist das „www.redbrick.de“. Wenn ihr hier etwas falsches angebt, dann spuckt der Browser später eine lästige Warnung aus.

openssl req -new -key server.key -out server.csr

Nun signiert ihr euch euren Key selber.

openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

Als nächstes bindet ihr das Zertifikat folgendermaßen in den HTTPd ein:

cp server.key.unsecure /usr/local/etc/apache2/ssl.key/server.key
cp server.crt /usr/local/etc/apache2/ssl.crt/server.crt

Letzter Check

Bevor ihr nun euren Apache2 startet, solltet ihr die entsprechende Konfigurationsdatei nochmal genau durchgehen. Im Normalfall sollte die ssl.conf in /usr/local/etc/apache2/ in Ordnung sein, so wie sie ist. Aber Vorsicht ist ja bekanntlich die Mutter der Porzelankiste! Also sucht in der ssl.conf nach folgenden Einträgen: SSLCertificateFile und SSLCertificateKeyFile. An dieser Stelle müsst ihr die Files angeben, die ihr gerade erstellt habt. Muss also wie folgt aussehen:

SSLCertificateFile /usr/local/etc/apache2/ssl.crt/server.crt
SSLCertificateKeyFile /usr/local/etc/apache2/ssl.key/server.key

Webserver starten

Zu guter letzt speichert ihr nun die ssl.conf und startet den Server inklusive SSL.

apachectl startssl

Wenn ihr euch nirgendwo vertippt habt und ich nichts vergessen habe, dann solltet ihr über die Adresse https://localhost/ oder von einem anderen Rechner aus entprechend die über IP-Adresse bzw. die Domain anstatt „localhost“ die in /usr/local/www/ssl befindlichen Dateien verschlüsselt mit einem Browser zugreifen können. Den Pfad für die Dateien könnt ihr natürlich auch ändern, zum Beispiel zu eurem DocumentRoot, was entweder /usr/local/www/htdocs oder /usr/local/www/data sein sollte.