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>
Share