Soll die Kommunikation zwischen einem Webserver und dem Browser serverseitig abgesichert werden ( z.B. für Login-Seiten oder Übertragung schützenswerter Informationen), ist es notwendig Kryptographie mittels SSL einzusetzen.
1. Ein SSL-Zertifikat erstellen
Selbstsigniertes Zertifikat erstellen (für Testumgebungen/interne Webseiten):
openssl req -new -x509 -days 365 -sha1 -newkey rsa:2048 -nodes -keyout server.key -out server.crt -subj '/O=Firma/OU=Abteilung/CN=www.example.com'
CA-signiertes Zertifikat erstellen (für öffentliche Webseiten):
openssl req -new -sha1 -newkey rsa:2048 -nodes -keyout server.key -out www.example.com.csr -subj '/O=Firma/OU=Abteilung/CN=www.example.com'
Das CA-signierte Zertifikat verifizieren:
openssl verify -CAfile /path/to/trusted_ca.crt -purpose sslserver server.crt
Nun das Zertifikat und den Schlüssel noch prüfen:
openssl x509 -noout -modulus -in server.crt | openssl sha1 openssl rsa -noout -modulus -in server.key | openssl sha1
Und die Dateien in das Verzeichnis /etc/apache2/ssl
verschieben. Auf diese Dateien darf nur Root lesend zugreifen.
2. SSL Unterstützung aktivieren
I.d.R. kommt Apache2 schon mit aktiviertem SSL daher.
Sollte es dennoch erforderlich sein, kann es mit dem folgenden Befehl aktiviert werden:
a2enmod ssl
Darüber hinaus muss in der Konfiguration /etc/apache2/ports.conf
folgende Zeile hinzugefügt werden (so sie sich da nicht schon befindet):
Listen 443
3. VirtualHost auf SSL anpassen
So kann eine beispielhafte /etc/apache2/sites-enabled/my-ssl-site
aussehen:
NameVirtualHost *:443 <VirtualHost *:443> DocumentRoot "/var/www/my-ssl-site" SSLEngine on SSLOptions +StrictRequire ServerName www.example.com <Directory "/var/www/my-ssl-site"> SSLRequireSSL allow from all Options +Indexes </Directory> SSLProtocol -all +TLSv1 +SSLv3 SSLCipherSuite HIGH:MEDIUM:!aNULL:+SHA1:+MD5:+HIGH:+MEDIUM SSLCertificateFile /etc/apache2/ssl/server.crt SSLCertificateKeyFile /etc/apache2/ssl/server.key SSLVerifyClient none SSLProxyEngine off <IfModule mime.c> AddType application/x-x509-ca-cert .crt AddType application/x-pkcs7-crl .crl </IfModule> </VirtualHost>