Loading....
Aktuelle Artikel:
DOWNLOADS
WP-Plugin:
crawLink
WP-Plugin:
crawLink MU

Artikel

https: Funktion und Einrichtung von SSL

Die Wirtschaft im Internet wächst rasant, Online-Shops sprießen wie Pilze hervor und bisher zentrale und lokale Office-Applikationen “wandern” ins Internet aus. Das Thema Datensicherheit ist damit aktueller denn je. Eine über SSL geschützte Verbindung gehört dabei zum Standard-Repertoir einer jeden IT-Abteilung.

Gerade zu diesem Thema gibt es im Internet eine Vielzahl an Informationen und Tutorials, die sich hierzu in epischer Breite auslassen. Ich möchte deshalb im Folgenden eine schnelle und direkte Hilfestellung zum Verständnis der Funktionsweise und zum praktischen Einrichten einer SSL-geschützten Verbindung geben.

Tunnelblick
SSL steht für Secure Socket Layer und beschreibt den “abhörsicheren Einigungsprozess” von Browser (Client) und Server auf eine gemeinsame Verschlüsselung, sowie anschließende verschlüsselte Kommunikation. Außerdem wird innerhalb dieses Prozesses eine Identitätsprüfung des Servers möglich.
Die so erstellte abgesicherte Verbindung nennt man auch Tunnel.

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 dem zuvor 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 (die Zufallszahl) 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.


Beispiel: 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

    openssl genrsa 512/1024 > www.domain.de.key

    ein privater Schlüssel erstellt.

  • Anschließend wird über

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

    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 www.domain.de.conf umbenennen und folgende Zeilen anpassen:

<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

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.

Geändert am: 20.10.2007
Einsortiert: Server, HowTo | WONG IT
Navigation: Vorheriger Artikel / Nächster Artikel

Kommentare

(Bisher keine Kommentare)

Was denken Sie?