HTTPS für Apache
Ich zeige euch wie man HTTPS für Apache aktiviert. Sicherheit spielt in den letzen Jahren eine immer größere Rolle, deshalb gehen immer mehr Webseiten darauf über die Kommunikation zu verschlüsseln, obwohl sie das gar nicht müssten. Google wird in Zukunft unter HTTPS erreichbare Seiten besser bewerten. Auch mein Blog ist seit kurzer Zeit nur noch über HTTPS erreichbar.
HTTPS für Apache
Der Apache Webserver ist in der Standardkonfiguration ausgelegt, dass er über Port 80 seine Anfragen erwartet und dort auch seine Antworten schickt. Der Port 80 ist der HTTP Port. Will man aber eine sichere Webseite erstellen die auch mit einer externen Signatur validiert wurde braucht dafür HTTPS. Diese SSL Verbindung läuft über den Port 443. Um das HTTPS Protokoll für den Apache zu ermöglichen muss folgendes getan werden.
Zertifikat erstellen
Das um und auf bei sicheren Verbindungen sind Zertifikate. Diese kann man selbst erstellen, um allerdings die Echtheit einer HTTPS Quelle zu bestätigen muss man ein Zertifikat von einer externen Quelle verifizieren lassen. Das kostet Geld, je nach Qualität auch sehr viel. Eine Suche liefert zum Beispiel Verisign als Anbieter. Wir wollen hier einmal unser eigenes Zertifikat erstellen. Es ist jedoch zu beachten, dass von anderen dieses vermutlich nicht als glaubwürdig angesehen wird.
Als erstes erstellen wir in unserer Apache2 Konfiguration einen neuen Ordner für alle ssl Angelegenheiten (so wie man das für Linux User machen würde):
mkdir crt mkdir key openssl req -new -x509 -days 365 -keyout key/vhost1.key -out crt/vhost1.crt -nodes -subj ‘/O=VirtualHost Website Company name/OU=Virtual Host Website department/CN=www.meinedomain.com’
Das openssl Kommando erstellt hier 2 neue Dateien. Eine vhost1.key Datei mit dem Schlüssel und eine vhost1.crt Zertifikatsdatei. Der Inhalt dieser Dateien ist von den angegebenen Parametern abhängig.
Konfiguration
Die HTTPS für Apache Konfiguration ist relativ einfach, wenn man bereits ein Zertifikat besitzt. Das einzige das wir noch machen müssen ist einen virtuellen Host für den Port 443 zu erstellen. Dafür editieren wir die Konfiguration der Seite im Apache2 Unterordner sites-avaliable. Die neu hinzugefügten Zeilen könnten zum Beispiel so aussehen:
<VirtualHost *:443> ServerAdmin webmaster@yourdomain.com DocumentRoot /var/www/vhost1 ServerName vhost1.yourdomain.com DirectoryIndex index.php SSLEngine On SSLCertificateFile /etc/apache2/ssl/crt/vhost1.crt SSLCertificateKeyFile /etc/apache2/ssl/key/vhost1.key </VirtualHost>
Wichtig sind hier die letzten Zeilen. Wir aktivieren die SSLEngine und definieren den Pfad zu der Key Datei und des Zertifikats. Nach einem Neustart des Webservers sollte alles funktionieren.
Probleme
Sollte beim Neustart etwas nicht funktionieren und eine Meldung ‚Configtest failed‚ erscheinen, dann müssen noch Apache Module aktiviert werden:
sudo a2enmod rewrite sudo a2enmod ssl
Es wird mindestens mod_rewrite und mod_ssl benötigt. Nach einem neuerlichen Neustart sollte alles funktionieren.
Fazit
HTTPS für Apache fügt eine verschlüsselte Verbindung für unseren Webserver hinzu. Damit erreicht man ohne viel Aufwand eine enorme Steigerung der Sicherheit. Ich kann Https nur jedem empfehlen, vor allem wenn man am Server Benutzerdaten abfragt und speichert. Billige Zertifikate bekommt man schon für ein paar Euros im Jahr.