Das FreeBSD-Handbuch
Zurück | Kapitel 15. Sicherheit | Weiter

# 15.8. OpenSSL

Beigetragen von Tom Rhodes.

Es wird oft übersehen, dass OpenSSL Teil des FreeBSD-Basissystems ist. OpenSSL bietet eine verschlüsselte Transportschicht oberhalb der normalen Kommunikationsschicht und kann daher zusammen mit vielen Netzdiensten benutzt werden.

Anwendungsbeispiele für OpenSSL sind die verschlüsselte Authentifizierung von E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit einer Kreditkarte. OpenSSL kann während des Baus in viele Ports, wie `www/apache22` und `mail/claws-mail`, integriert werden.

> Anmerkung: Ist beim Aufruf von `make` die Variable `WITH_OPENSSL_BASE` nicht explizit auf `yes` gesetzt, baut die Ports-Sammlung meist den Port `security/openssl`.

Das OpenSSL von FreeBSD stellt die Protokolle Secure Sockets Layer v2/v3 (SSLv2/SSLv3) und Transport Layer Security v1 (TLSv1) zur Verfügung. Die OpenSSL-Bibliotheken stellen kryptographische Funktionen bereit.

> Anmerkung: Mit OpenSSL kann der IDEA-Algorithmus verwendet werden, wegen Patenten in den USA ist der Algorithmus in der Voreinstellung allerdings deaktiviert. Wenn Sie die IDEA-Lizenz akzeptieren, können Sie den IDEA-Algorithmus aktivieren, indem Sie die Variable `MAKE_IDEA` in `make.conf` setzen.

Meist wird OpenSSL eingesetzt, um Zertifikate für Anwendungen bereitzustellen. Die Zertifikate stellen die Identität einer Firma oder eines Einzelnen sicher. Wenn ein Zertifikat nicht von einer Zertifizierungsstelle (Certificate Authority, CA) gegengezeichnet wurde, erhalten Sie normalerweise eine Warnung. Eine Zertifizierungsstelle ist eine Firma wie VeriSign, die Zertifikate von Personen oder Firmen gegenzeichnet und damit die Korrektheit der Zertifikate bestätigt. Diese Prozedur kostet Geld, ist aber keine Voraussetzung für den Einsatz von Zertifikaten, beruhigt aber sicherheitsbewusste Benutzer.

## 15.8.1. Zertifikate erzeugen

Ein Zertifikat erzeugen Sie mit dem nachstehenden Kommando:

    # openssl req -new -nodes -out req.pem -keyout cert.pem
    Generating a 1024 bit RSA private key
    ................++++++
    .......................................++++++
    writing new private key to 'cert.pem'
    -----
    You are about to be asked to enter information that will be incorporated
    into your certificate request.
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If you enter '.', the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:US
    State or Province Name (full name) [Some-State]:PA
    Locality Name (eg, city) []:Pittsburgh
    Organization Name (eg, company) [Internet Widgits Pty Ltd]:My Company
    Organizational Unit Name (eg, section) []:Systems Administrator
    Common Name (eg, YOUR name) []:localhost.example.org
    Email Address []:trhodes@FreeBSD.org

    Please enter the following 'extra' attributes
    to be sent with your certificate request
    A challenge password []:SOME PASSWORD
    An optional company name []:Another Name

Beachten Sie bitte, dass die Eingabe bei “Common Name” ein gültiger Domain-Name sein muss. Eine andere Eingabe erzeugt ein unbrauchbares Zertifikat. Das Zertifikat kann mit einer Gültigkeitsdauer und anderen Verschlüsselungsalgorithmen erzeugt werden. Die Hilfeseite openssl(1) beschreibt die zur Verfügung stehenden Optionen.

Das Verzeichnis, in dem Sie den letzten Befehl ausgeführt haben, enthält nun zwei Dateien: Die Anforderung für ein neues Zertifikat wurde in `req.pem` gespeichert. Diese Datei können Sie an eine Zertifizierungsstelle senden, wo Ihre Angaben geprüft werden. Nach erfolgreicher Prüfung wird das Zertifikat an Sie zurückgesandt. Die zweite Datei, `cert.pem`, enthält den privaten Schlüssel für Ihr Zertifikat und darf auch keine Fall in fremde Hände geraten, da ein Angreifer sonst in der Lage ist, anderen Personen oder Rechnern vorzugaukeln, dass es sich bei ihm um Sie handelt.

Wenn Sie keine Signatur einer Zertifizierungsstelle benötigen, können Sie ein selbst-signiertes Zertifikat erstellen. Erzeugen Sie dazu zuerst einen RSA-Schlüssel:

    # openssl dsaparam -rand -genkey -out myRSA.key 1024

Erzeugen Sie dann den CA-Schlüssel:

    # openssl gendsa -des3 -out myca.key myRSA.key

Erstellen Sie mit diesem Schlüssel das Zertifikat:

    # openssl req -new -x509 -days 365 -key myca.key -out new.crt

Zwei neue Dateien befinden sich nun im Verzeichnis: Der Schlüssel der Zertifizierungsstelle `myca.key` und das Zertifikat selbst, `new.crt`. Sie sollten in einem Verzeichnis, vorzugsweise unterhalb von `/etc` abgelegt werden, das nur von `root` lesbar ist. Setzen Sie die Zugriffsrechte der Dateien mit `chmod` auf `0700`.

## 15.8.2. Beispiel für Zertifikate

Was fangen Sie mit einem Zertifikat an? Sie könnten damit beispielsweise die Verbindungen zu Sendmail verschlüsseln. Dies würde die Klartext-Authentifizierung für Benutzer des lokalen MTA überflüssig machen.

> Anmerkung: Das ist nicht unbedingt die beste Lösung, da einige MUAs Warnungen ausgeben, wenn ein Zertifikat nicht lokal installiert ist. Die Installation von Zertifikaten wird in der Dokumentation der MUAs beschrieben.

Ergänzen Sie die Konfigurationsdatei von sendmail (`.mc`) um die nachstehenden Zeilen:

    dnl SSL Options
    define(`confCACERT_PATH',`/etc/certs')dnl
    define(`confCACERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_CERT',`/etc/certs/new.crt')dnl
    define(`confSERVER_KEY',`/etc/certs/myca.key')dnl
    define(`confTLS_SRV_OPTIONS', `V')dnl

Im Verzeichnis `/etc/certs` befindet sich der Schlüssel und das Zertifikat. Bauen Sie danach im Verzeichnis `/etc/mail` mit dem Kommando `make `install`` die `.cf`-Datei und starten Sie anschließend sendmail mit `make `restart`` neu.

Wenn alles gut ging, erscheinen keine Fehlermeldungen in der Datei `/var/log/maillog` und Sie sehen sendmail in der Prozessliste.

Testen Sie nun den Mailserver mit dem Kommando telnet(1):

    # telnet example.com 25
    Trying 192.0.34.166...
    Connected to example.com.
    Escape character is '^]'.
    220 example.com ESMTP Sendmail 8.12.10/8.12.10; Tue, 31 Aug 2004 03:41:22 -0400 (EDT)
    ehlo example.com
    250-example.com Hello example.com [192.0.34.166], pleased to meet you
    250-ENHANCEDSTATUSCODES
    250-PIPELINING
    250-8BITMIME
    250-SIZE
    250-DSN
    250-ETRN
    250-AUTH LOGIN PLAIN
    250-STARTTLS
    250-DELIVERBY
    250 HELP
    quit
    221 2.0.0 example.com closing connection
    Connection closed by foreign host.

Wenn in einer Zeile `STARTTLS` erscheint, hat alles funktioniert.

Zurück | Zum Anfang | Weiter
Kerberos5 | Nach oben | VPNs mit IPsec

Wenn Sie Fragen zu FreeBSD haben, schicken Sie eine E-Mail an <de-bsd-questions@de.FreeBSD.org>.
Wenn Sie Fragen zu dieser Dokumentation haben, schicken Sie eine E-Mail an <de-bsd-translators@de.FreeBSD.org>.