Bei Webservern wie Apache(2) mit wird SSL oder TLS die Hybride Verschlüsselung zur Absicherung des Datenverkehrs eingesetzt.
TIP: Buch Apache Webserver2 ab S.627 (ISBN: 3827321182 bzw. ISBN: 3827325668)
namensbasierte virtuelle Server sind in Verbindung mit SSL nur sehr eingeschränkt möglich (Zertifikat gilt dann nur für einen der virt. Server). Es muss eine eigene IP pro SSL-geschützter Seite existieren. Der Grund ist das die passende IP Teil des HTTP-Request ist, der nur mit dem passenden Host-Schlüssel entschlüsselt werden kann. Da aber der passende Host erst anhand des HTTP-Request ermittelt wird, kann es an dieser Stelle zu keiner Verifizierung kommen.
Siehe auch: Man-in-the-middle Attacken gegen SSL.
Die Anleitung ist für Apache und mod_ssl gedacht.
Eine Zertifizierungsanforderung (CSR) ist eine Datei, die die Antragsdaten sowie den öffentlichen Schlüssel enthält. Der private Schlüssel bleibt auf dem Server (hoffentlich) geheim und kann auch mit einer Passphrase geschützt werden, in diesem Fall muss man allerdings bei Neustart des Webservers immer die Passphrase angeben (sonst startet der Webserver nicht).
Dazu erstellen wir ein Schlüsselpaar bestehend aus privatem Schlüssel und öffentlicher Zertifizierungsanforderung (CSR). Entweder mit 1024 Bit:
openssl req -new -nodes -keyout dateiname.key -out dateiname.csr
oder mit 2048 Bit Schlüssellänge:
openssl req -new -nodes -keyout dateiname.key -out dateiname.csr -newkey rsa:2048
.
Es bietet sich an den Dateinamen so zu wählen, daß man ihn später eindeutig der Webseite zuordnen kann.
Der Befehl erzeugt also zwei Dateien:
Bei der Erstellung der Zertifizierungsanforderung werden Sie nach einigen Details gefragt, die neben dem öffentlichen Schlüssel in den CSR-Datei aufgenommen werden und diesen eindeutig machen. Einige Felder sind optional (unwichtige Felder) und haben einen Standardwert (diesen kann man mit der Eingabetaste übernehmen oder man gibt Sie einen Punkt (.) ein, wenn dieses Feld leer bleiben soll)
Country Name (2 letter code) [AU]: DE
hier das Länderkürzel eingeben, z.B. DE
State or Province Name (full name) [Some-State]: Berlin
hier das Bundesland eingeben, z.B. Berlin
Locality Name (eg, city) []: Berlin
hier den Ort eingeben
Organization Name (eg, company) [Internet Widgits Pty Ltd]: FIRMENNAME
hier den Firmennamen / Organisationsnamen / Vor- und Zunamen ein, je nachdem, was passt
Organizational Unit Name (eg, section) []: IT
hier kann man eine Abteilung eingeben, dieses Feld kann aber auch leer bleiben
Common Name (eg, YOUR name) []: www.DOMAIN.de
hier muss die geschützte Seite mit vollständigem Domainnamen enthalten sein. Also z.B.
www.DOMAIN.de
. Das im Browser vorangestellte https:// wird nicht angegeben. Genauso sind Unterverzeichnisse und einzelne Dateien bereits enthalten und werden nicht angegeben.
Email Address []: info@domain.de
hier gibt man seine E-Mail-Adresse ein
Gegebenenfalls werden Sie nach folgenden 'extra'-Angaben gefragt
A challenge password []: An optional company name []:
bitte immer leer lassen.
Die Zertifikatsanfrage wurde nun erstellt. Jetzt muss man nur noch dateiname.csr in einem Editor öffnen und in die Zwischenablage kopieren (z.B. mit cat dateiname.csr) und den Inhalt in das vorgesehene Feld im Bestellprozess kopieren. Das sieht dann in etwa so aus:
-----BEGIN CERTIFICATE REQUEST----- (Zeichensalat) -----END CERTIFICATE REQUEST-----
Damit verschickt man die Zertifikatsanfrage an den Zertifikatsaussteller der dann das eigentliche Zertifikat ausstellt.
Vom privaten Schlüssel (dateiname.key) unbedingt ein Backup erzeugen, bei Verlust oder Diebstahl ist das Zertifikat nicht mehr sicher und damit wertlos.
Nun kopiert man die Dateien in einen Pfad (hier /etc/apache2/) und konfiguriert
<VirtualHost IP:443> DocumentRoot /srv/www SSLEngine On SSLProtocol all SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/apache2/server.crt SSLCertificateKeyFile /etc/apache2/server.key </VirtualHost>
Andere Webserver werden auf der Seite “Technical Support - Install SSL Certificate“ behandelt.
Ein selbst signiertes Zertifikat ist schnell erstellt und bietet auch sichere Verschlüsselung.
openssl genrsa -out server.key -des3 1024
Passphrase eingeben, der private Schlüssel ist dann in server.key.
openssl req -new -x509 -days 1460 -key server.key -out server.crt
Common Name sollte auf den Servernamen lauten, sonst gibt es noch eine zusätzliche Fehlermeldung beim Benutzer
Allerdings ist der große Nachteil, das der Benutzer 2 Fehlermeldungen sieht:
Die zwei nervigen Meldungen mögen für private Seiten ok sein, für Unternehmensseiten geht es definitiv nicht. Der Grund ist das die Benutzer von der Fehlermeldung abgeschreckt werden und der demonstrierte Geiz auch kein gutes Licht auf die Firma wirft.
Wenn der private Schlüssel eine Passphrase hat muss bei jedem Neustart des Webservers die Passphrase eingegeben werden! Deshalb ist es oft gewünscht die Passphrase zu entfernen:
openssl rsa -in /etc/apache2/server.key -out /etc/apache2/server_neu.key
a2enmod ssl
SSLEngine On SSLProtocol all SSLCipherSuite HIGH:MEDIUM SSLCertificateFile /etc/apache2/DATEI.crt SSLCertificateKeyFile /etc/apache2/DATEI.key
chmod 600 zuweisen (chown root)News
Navigation