Skip to content

Zertifikate und CAs ...

gedanken Nach dem Artikel CAs hinzufügen bin ich zurecht darauf "hingewiesen" worden, dass ich ein Wort zum Prüfen von Fingerprints hätte verlieren sollen, dass habe ich als Achtung noch nachträglich getan.

Allerdings muss ich gestehen, dass ich das Thema rund um Zertifikate und wie die Strukturen implementiert sind für maximal kaputt halte.

Jedem muss bewusst sein, dass mehr als 95% (geschätzt) aller Nutzer Zertifikatsfehler einfach akzeptieren und wegklicken.

Wenn dann noch dazu kommt, dass selbst gehackte Certificate Authorities (CAs) - das sind die, die bestätigen (unterschreiben), dass die Zertifikate korrekt sind - nicht automatisch aus den Browsern entfernt werden, muss man sich schon fragen, was das alles soll.

Als letztes sollte man sich einmal anschauen, wie die CAs arbeiten und welche Art von Identitäsnachweisen verlangt werden. Für die einfachsten Beglaubigungen wird nur eine E-Mail an den Webmaster der Domain versendet. Diese E-Mail wird unverschlüsselt verschickt und kann abgefangen werden.

Tatsächlich finde ich das Verfahren von CAcert, dass eine Identität wenigstens von drei Leuten (Assurers) bestätigt werden muss besser als viele andere, aber CAcert schafft es seit Jahren leider nicht in die Browser.

Aber es ist auch mit Fingerprints - einer Art Prüfsumme - nicht trivial herauszufinden, ob das Zertifikat der Authorisierungsstelle wirklich korrekt ist. Wenn das Zertifikat auf dem Transportweg ausgetauscht wird, kann auch der Fingerprint auf dem gleichen Weg getauscht werden. Am besten wäre es den Fingerprint auf einer dritten Seite zu finden, oder die Webseite mit dem Zertifikat durch eine andere Authorisierungsstelle zertifizieren zu lassen.

Let's Encrypt ist eine grossartige Initiative der Electronic Frontier Foundation (EFF), die sicher dafür sorgen wird, dass mehr verschlüsselt wird. Aber auch da wird nur bestätigt, dass derjenigem, der das Zertifikat bestellt auch die Webseite betreibt, ohne zu prüfen, wer das eigentlich ist.

Worüber ich an dieser Stelle noch gar nichts geschrieben habe, ist, dass ich keinen Einfluss darauf habe, welche CA-Zertifikate der Browser, den ich benutze, standardmässig installiert hat. Ich kann mir noch nicht einmal sicher sein, dass der Browser nicht mit falschen oder gefälschten Zertifikaten ausgeliefert wird. Es ist alles eine Frage des Vertrauens.

Also zusammengefasst:

Wir haben kein technologisches, sondern ein strukturelles Problem.

Zertifikate taugen dazu, Verschlüsselung zwischen einem Client und einem Server sicher zu stellen. Da der Entschlüsselungs-Key nicht herausgegeben wird, kann sichergestellt werden, dass es niemand mitlesen kann (davon ausgenommen sind lange laufende Brute-Force-Attacken, die mit ausreichend Rechenleistung Erfolge haben könnten, nicht müssen!). Der Identität hinter "einfachen" Zertifikaten, wie sie von Hobbyisten verwendet werden, würde ich nicht vertrauen. Höherwertige Zertifikate machen eine erweiterte Identitätsprüfung, da ist es sicherer - auch nicht 100% - dass der Betreiber auch wirklich der Betreiber ist.


Und wer das alles für Humbug hält, dem sei gesagt, dass einer der grössten Hoster Deutschlands 99% der Zertifikate mit dem einfachsten Verfahren ausstellen lässt.

CAs hinzufügen ...

linux Für den Fall, dass das noch jemand anderes benötigt.

Um andere Certificate Authorities (CAs) zu Linux hinzuzufügen, sind nur kleine Schritte nötig. Hier einmal am Beispiel CAcert.

Debian:
curl http://www.cacert.org/certs/root.crt -o /usr/local/share/ca-certificates/cacert_root.crt
curl http://www.cacert.org/certs/class3.crt -o /usr/local/share/ca-certificates/cacert_class3.crt
update-ca-certificates


CentOS:
update-ca-trust enable
curl http://www.cacert.org/certs/root.crt -o /etc/pki/ca-trust/source/anchors/cacert_root.crt
curl http://www.cacert.org/certs/class3.crt -o /etc/pki/ca-trust/source/anchors/cacert_class3.crt
update-ca-trust extract


ACHTUNG: In jedem Fall sollte vor dem Ausführen von update-ca-certificates bzw. update-ca-trust extract die Fingerprints der Zertifikate überprüft werden.

Pimp my Mailserver ...

ubuntu Wieder ein Haken auf der Liste.

Ich hatte schon länger vor, unsere Mailserver - Postfix für SMTP und Dovecot für IMAPS - mit einem fremd signierten Zertifikat zu versehen. Bisher hat ein selbst signiertes den Job erledigt.

Die Schritte sind recht einfach.

Bei CAcert muss die zu sichernde Domain hinzugefügt werden, dort bitte auch nur die Domain und nicht den Hostnamen verwenden. Das löst eine Mail aus, die entweder an den Domain-Eigentümer oder an root@, hostmaster@, postmaster@ admin@ oder webmaster@ gehen kann, andere Adressen sind nicht erlaubt. In der Mail ist ein Link, den man zur Bestätigung klicken muss.

Mittels
openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.csr
kann man sich einen Certificate Signing Request bauen (Datei server.csr).

$ openssl req -new -newkey rsa:2048 -nodes -keyout server.key -out server.crt
Generating a 2048 bit RSA private key
..................................................................+++
..........+++
writing new private key to 'server.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) [GB]:DE
State or Province Name (full name) [Berkshire]:Northrine-Westphalia
Locality Name (eg, city) [Newbury]:Wanne-Eickel
Organization Name (eg, company) [My Company Ltd]:Schattenparker GbR
Organizational Unit Name (eg, section) []:Server Administration
Common Name (eg, your name or your server's hostname) []:server.domain.tld
Email Address []:hostmaster@domain.tld


Die Fragen müssen natürlich mit den eigenen Daten beantwortet werden.

Den Inhalt der resultierenden CRT-Datei kopiert man in das entsprechende Formular bei CAcert (Server Zertifikate / Neu) und man bekommt dann das richtige Zertifikat zurück (ich empfehle, Class 3 signieren zu lassen).

Auf dem Webserver oder Mailserver wird an den entsprechenden Stellen in der Konfiguration der Pfad zur Key-Datei und zum Zertifikat eingetragen und nach dem Neustart wird das Zertifkat zur Verbindung verwendet.

Die meisten Clients haben die root-Zertifikate von CAcert noch nicht eingebaut, daher kann man sie hier herunterladen und je nach Client an der richtigen Stelle einbauen.

Für das Palm Pre mit der heute aktuellen Software-Version:
prior to webOS 1.2 you had to copy the .crt files to the phone's memory using USB mode, load the certificate manager (Device Info; More Info (button at bottom); Certificate Manager (Preferences menu at top)), and import the certificates (icon in lower left of screen to browse for them).
Funktioniert bestens.

Fragen? Fragen!