OpenSSL ist eine Open Source Implementierung der SSL und TLS-Protokolle. Es bietet eine verschlüsselte Transportschicht oberhalb der normalen Kommunikationsschicht und kann daher zusammen mit vielen Netzdiensten benutzt werden.
Das in FreeBSD integrierte OpenSSL 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.
Anwendungsbeispiele für OpenSSL sind die verschlüsselte Authentifizierung von E-Mail-Clients oder Web-Transaktionen wie das Bezahlen mit Kreditkarte. Einige Ports, wie www/apache24 und databases/portgresql91-server, haben eine Option für den Bau mit OpenSSL.
FreeBSD verfügt über zwei OpenSSL Versionen: eine im Basissystem, die andere aus der Ports-Sammlung. Der Benutzer kann mit Hilfe der folgenden Optionen wählen, welche Version in der Voreinstellung für andere Ports verwendet wird:
WITH_OPENSSL_PORT: wenn diese Option gesetzt ist, wird der Port OpenSSL aus dem Port security/openssl verwenden, auch dann, wenn die Version im Basisystem aktueller ist.
WITH_OPENSSL_BASE: wenn diese Option gesetzt ist, wird der Port mit OpenSSL aus dem Basissystem übersetzt.
OpenSSL wird auch 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.
Dieser Abschnitt beschreibt, wie Sie auf einem FreeBSD-System Zertifikate erstellen und benutzen. Abschnitt 29.5.2, „Konfiguration eines LDAP-Servers“ beschreibt, wie Sie eine CA erstellen um die eigenen Zertifikate zu signieren.
Weitere Informationen über SSL finden Sie im kostenlosen OpenSSL Cookbook.
Um ein Zertifikat zu erzeugen, das von einer externen
CA signiert werden soll, geben Sie
folgenden Befehl und die angeforderten Informationen
ein. Diese Informationen werden in das Zertifikat
geschrieben. Für Common Name
geben Sie
den vollqualifizierten Namen des Systems ein, auf dem das
Zertifikat später installiert wird. Wenn der Name nicht
übereinstimmt, wird die Anwendung, die das Zertifikat
überprüft, dem Benuzter eine Warnung anzeigen. Die
Überprüfung würde fehlschlagen und das Zertifikat damit
unbrauchbar machen.
#
openssl req -new -nodes -out req.pem -keyout cert.key -sha256 -newkey rsa:2048
Generating a 2048 bit RSA private key ..................+++ .............................................................+++ writing new private key to 'cert.key' ----- 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]:State or Province Name (full name) [Some-State]:
US
Locality Name (eg, city) []:
PA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Pittsburgh
Organizational Unit Name (eg, section) []:
My Company
Common Name (eg, YOUR name) []:
Systems Administrator
Email Address []:
localhost.example.org
Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []: An optional company name []:
trhodes@FreeBSD.org
Another Name
Bei der Erzeugung des Zertifikates können noch weitere Optionen, wie die Gültigkeitsdauer und alternative Verschlüsselungsalgorithmen, angegeben werden. openssl(1) beschreibt die zur Verfügung stehenden Optionen.
Das folgende Kommando erstellt zwei Dateien im aktuellen
Verzeichnis: Die Anforderung für ein neues Zertifikat wird in
req.pem
gespeichert. Diese Datei können
Sie an eine CA senden, wo die Angaben
geprüft werden. Nach erfolgreicher Prüfung wird das
Zertifikat signiert und an Sie zurückgesandt.
cert.key
, enthält den privaten Schlüssel
für das 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 genrsa -rand -genkey -out cert.key 2048
0 semi-random bytes loaded Generating RSA private key, 2048 bit long modulus .............................................+++ .................................................................................................................+++ e is 65537 (0x10001)
Benutzen Sie diesen Schlüssel, um ein selbst signiertes Zertifikat zu erzeugen. Folgen Sie wieder den Anweisungen am Prompt:
#
openssl req -new -x509 -days 365 -key cert.key -out cert.crt -sha256
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]:State or Province Name (full name) [Some-State]:
US
Locality Name (eg, city) []:
PA
Organization Name (eg, company) [Internet Widgits Pty Ltd]:
Pittsburgh
Organizational Unit Name (eg, section) []:
My Company
Common Name (e.g. server FQDN or YOUR name) []:
Systems Administrator
Email Address []:
localhost.example.org
trhodes@FreeBSD.org
Dieses Kommando erstellt zwei neue Dateien im aktuellen
Verzeichnis: Der Schlüssel der Zertifizierungsstelle
cert.key
und das Zertifikat selbst,
cert.crt
. Sie sollten in einem
Verzeichnis, vorzugsweise unterhalb von
/etc/ssl/
abgelegt werden, das nur von
root
lesbar
ist. Die Zugriffsrechte der Dateien können mit
chmod
auf 0700
gesetzt
werden.
Mit einem Zertifikat können beispielsweise die Verbindungen zu Sendmail verschlüsselt werden, um eine Klartext-Authentifizierung zu verhindern.
Einige E-Mail-Programme geben Warnungen aus, wenn ein Zertifikat nicht lokal installiert ist. Weitere Informationen zur Installation von Zertifikaten finden Sie in der Dokumentation der entsprechenden Software.
Unter FreeBSD 10.0-RELEASE und neueren Versionen ist es
möglich, ein selbst signiertes Zertifikat für
Sendmail automatisch erzeugen
zu lassen. Um diese Funktionalität zu aktivieren, fügen Sie
die folgenden Zeilen in /etc/rc.conf
ein:
sendmail_enable="YES"
sendmail_cert_enable="YES"
sendmail_cert_cn="localhost.example.org
"
Dadurch wird automatisch ein selbst signiertes Zertifikat
(/etc/mail/certs/host.cert
), der
Schlüssel für die CA
(/etc/mail/certs/host.key
und das
Zertifikat der CA
(/etc/mail/certs/cacert.pem
erzeugt. Das
Zertifikat wird den in sendmail_cert_cn
festgelegten Common Name
verwenden.
Nachdem Sie die Änderungen gespeichert haben, starten Sie
Sendmail neu:
#
service sendmail restart
Wenn alles gut ging, erscheinen keine Fehlermeldungen
in /var/log/maillog
. Für einen einfachen
Test, bauen Sie mit Hilfe von telnet
eine
Verbindung zum Mailserver auf:
#
telnet
Trying 192.0.34.166... Connected to example.com. Escape character is '^]'. 220 example.com ESMTP Sendmail 8.14.7/8.14.7; Fri, 18 Apr 2014 11:50:32 -0400 (EDT)example.com
25ehlo
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 HELPexample.com
quit
221 2.0.0 example.com closing connection Connection closed by foreign host.
Wenn die Zeile STARTTLS
erscheint, hat alles funktioniert.
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>.