Installation einer SSL-Verbindung

Setup und Konfiguration

Installation einer SSL-Verbindung

Beitragvon broschart am 15.12.2007, 10:08

SSL, also eine geschützte https-Verbindung, gehört heute zum Standard für Shops und andere Websites, die vertrauliche Daten vom Benutzer entgegennehmen. Auch bei der Nutzung von Subversion sollte man eine gesicherte Verbindung nutzen.

Asymmetrische Verschlüsselung
SSL nutzt ein asymmetrisches Verschlüsselungsverfahren, d.h., daß zur Verschlüsselung ein anderer Schlüssel genutzt wird, als zur Entschlüsselung. Ein Schlüssel ist in diesem Zusammenhang eine Anleitung zum Umbau eines Textes, bzw. von Inhalten.

Einigung auf einen gemeinsame Verschlüsselung
Der https-Server hat einen sog. öffentlichen Schlüssel (zur Verschlüsselung; auch Zertifikat genannt) und einen privaten Schlüssel (zur Entschlüsselung) vorliegen. Bei einer Anfrage über “https://” schickt der Server den öffentlichen Schlüssel an den Browser. Der Browser nimmt daraufhin Kontakt mit der eingetragenen Zertifizierungstelle auf und prüft, ob IP-Adresse und Schlüssel des Servers zugelassen sind. Ist das der Fall, erzeugt der Browser eine Zufallszahl. Diese wird nun mit demzuvor erhaltenen Schlüssel verschlüsselt und an den Server zurückgeschickt. Der Server kann jetzt diese Zufallszahl mit Hilfe seines privaten Schlüssels wieder entschlüsseln. Damit haben sich Client (Browser) und Server auf einen gemeinsamen Schlüssel (dieZufallszahl) geeinigt, auf dessen Basis nun die weitere Kommunikation verschlüsselt werden kann.
Der erwähnte Tunnel zwischen Client und Server wäre damit eingerichtet und Inhalte nur für die Parteien verständlich, die im Besitz der generierten Zufallszahl (nämlich Client und Server) sind.

Nur ein Zertifikat pro IP-Adresse
Da bei der Identitätsprüfung das Zertifikat jeweils nur einer IP-Adresse (und nicht einer Domain) zugeordnet wird, kann es zu Problemen kommen, wenn man bspw. einen Shop auf einem Shared-Hosting-System einrichten möchte, denn hier teilen sich möglicherweise sogar hunderte von Domains die gleiche IP-Adresse.


SSL-Einrichtung bei openSUSE
Zur Einrichtung einer https-Verbindung müssen also öffentlicher und privater Schlüssel auf dem Server generiert, bzw. abgelegt werden. Am einfachsten kann man dies mit openSSL erledigen, das mit den meisten Linux-Distributionen ausgeliefert wird. Bei openSUSE kann es bei Bedarf mit Yast aber auch problemlos nachinstalliert werden.

Zunächst wird in der Kommandozeile mit
Code: Alles auswählen
openssl genrsa 512/1024 > www.domain.de.key
ein privater Schlüssel erstellt.

Anschließend wird über
Code: Alles auswählen
openssl req -new -key www.domain.de.key > www.domain.de.csr
der Zertifizierungsantrag “ausgefüllt”. Hier werden nun einige Angaben abgefragt, wie bspw. Country Name (”DE”) oder eMail-Adresse. Wichtig: Bei der Angabe “Common Name” muss der Domainname eingetragen werden, für den das Zertifikat gültig sein soll (im Beispiel http://www.domain.de). Möchte man nichts angeben, muss ein Punkt (”.”) eingegeben werden.
Das hierbei entstandene Dokument kann nun an eine Zertifizierungsstelle geschickt werden.

Als letztes muß nun der öffentliche Schlüssel installiert werden: Entweder man erhält diesen nun von der Zertifizierungsstelle zurück oder man erstellt ihn kurzerhand selbst.

Wichtig: Bei selbsterstellten Schlüsseln wird der Browser beim Aufruf der jeweiligen Domain auf den Umstand hinweisen, daß kein signiertes Zertifikat (signierter öffentlicher Schlüssel) vorliegt und nachfragen, ob er die Seite trotzdem laden soll. Damit kann für den Browser die Server-Identität nicht zweifelsfrei festgestellt werden, die Verschlüsselung der Kommunikation wäre aber dennoch gewährleistet.

Zur eigenen Erstellung des öffentlichen Schlüssels muss in die Kommandozeile folgendes eingetragen werden
Code: Alles auswählen
openssl req -x509 -key www.domain.de.key -in www.domain.de.csr > www.domain.de.crt


Bei openSUSE werden die 3 eben erstellten Dateien jeweils in die Ordner

* /etc/apache2/ssl.csr
* /etc/apaech2/ssl.key
* /etc/apache2/ssl.crt

verschoben. Anschließend muss noch ein entsprechender virtueller Host eingerichtet werden. Dazu bitte die Beispieldatei unter /etc/apache2/vhosts.d/vhost-ssl.template ins gleiche Verzeichnis kopieren, zu http://www.domain.de.conf umbenennen und folgende Zeilen anpassen:
Code: Alles auswählen
<VirtualHost www.domain.de:443>
SSLCertificateFile /etc/apache2/ssl.crt/www.domain.de.crt
SSLCertificateKeyFile /etc/apache2/ssl.key/www.domain.de.key


Jetzt noch den Apache über
Code: Alles auswählen
rcapache2 restart
neu starten und die verschlüsselte Seite wird über https://www.domain.de/ erreichbar.

Bitte daran denken, daß die Seite jetzt nicht mehr über den Standardport 80, sondern über Port 443 übertragen wird. Für eine einwandfreie Funktion muss also bei einer Firewall dieser Port geöffnet sein.
Steven Broschart
http://www.broschart.net
Benutzeravatar
broschart
Site Admin
 
Beiträge: 35
Registriert: 23.11.2007, 20:25

Zurück zu Installation

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast

cron