Achtung bei Client-Zertifikaten!

Durch eine Heise-Meldung bin ich an ein Thema erinnert worden, welches mich vor einiger Zeit schonmal kurz beschäftigt hat – und das ich leider aus lauter gutem Glauben beiseite geschoben habe.

Aber von vorne: SSL dürfte den meisten ein Begriff sein – neben der verschlüsselten Übertragung der Informationen zwischen Browser und Server geht es ja auch darum, per Server-Zertifikat sicher zu stellen, dass der, dem man dort seine Kontonummer und PIN sendet, auch wirklich seine Bank ist und nicht irgendein Betrüger. Analog dazu gibt es die – vielen wohl bisher eher unbekannte Möglichkeit – im Browser (dem Client) ein so genanntes Client-Zertifikat zu installieren. So ein Client-Zertifikat ist vergleichbar mit einer Art digitalem Personalausweis.

Kleiner Open-ID-Exkurs

Nun geht es also nicht mehr darum, dass wir als Benutzer sicher sein wollen, dass wir wirklich mit unserer Bank reden, sondern darum, dass unsere Bank weiß, dass wir der oder diejenige sind, für den wir uns ausgeben.

Diese Authentifizierung geschieht aber statt über ein Client-Zertifikat heute üblicherweise per Benutzername und Kennwort. Wenn man viel im Internet unterwegs ist, nerven einen aber die vielen Benutzernamen und Kennwörter, genau wie mich. Es gibt zwar einige Bestrebungen dem Kennwort-Fluch Herr zu werden, doch leider hat sich noch keine davon wirklich durchsetzen können. Zwar kann man sich über viele Firmen bei deren Diensten – oder Diensten von Kooperationspartnern – mit einem einzigen Kennwort anmelden (z.B. Google Mail, Google Kalender, Google Blogs bzw. Blogger usw.), aber leider macht man sich dadurch aber eben immer mehr von wenigen Firmen abhängig und hat sich den Traum von einem Kennwort für alles noch nicht erfüllt. Ein meiner Meinung nach besserer Ansatz ist der von OpenID und ähnlichen Verfahren: Man kann sich die „Firma“ (den Identityprovider) bei der man sich seinen Benutzernamen und Kennwort registriert frei aussuchen. Man kann sogar selbst ein solcher Identityprovider sein, falls man z.B. eine Domain besitzt. Fortan hat man z.B. einen Benutzernamen der Form xena_goettin_des_feuers@example.org und kann sich damit in verschiedenen Foren, eMail-Dienstern usw. anmelden – vorrausgesetzt, OpenID wird unterstützt. Das Kennwort wird dann nur noch gegenüber dem Identityprovider eingegeben um den Account freizuschalten – und der Identityprovider signalisiert im Hintergrund dem eigentlich Dienst (z.B. Forum), dass man der ist, für den man sich ausgibt.

Noch bequemer mit dem Client-Zertifikat

Ein Identityprovider ist nun certifi.ca . Dort ist die Besonderheit, dass man bei der Anmeldung kein Kennwort vergeben muss, sondern sich allein über das Client-Zertifikat identifiziert. Ein solches kann man z.B. bei CACert oder auch bei Thawte kostenlos bekommen und in seinen Browser installieren. Solange man sich dieses Zertifikat nicht von seinem Rechner klauen lässt, weiß z.B. der der certifi.ca-Server sicher, dass wir der sind für den wir uns bei der Erstanmeldung ausgegeben haben und kann uns indirekt Zugriff z.B. auf unser Lieblingsforum oder den Webmaildienst gewähren.

Da diese Idee einfach spitze ist, habe ich mir natürlich direkt ein solches Zertifikat zugelegt und mich bei certifi.ca registriert. Um das Zertifikat von Thawte zu erhalten musste ich meine eMail-Adresse angeben (das macht auch Sinn, da man diese Zertifikate auch dazu nutzen kann seine eMails zu verschlüsseln und digital zu signieren). Das Problem ist nun, dass der Browser standardmäßig jedem das Client-Zertifikat sendet, der es haben will. Ausprobieren kann man das beim Apache Certifikat Export – dort wird ersichtlich, dass der entsprechende Server nun mein Zertifikat sehen kann in dem auch – in meinem Fall – meine eMail-Adresse hinterlegt ist. Die einzige Warnung die evtl. kommt ist die, dass eine sichere Verbindung aufgebaut wird – nur dürften die viele (so auch ich) deaktiviert haben.

Das jede Seite die man anschaut, direkt die eMail-Adresse kennt, ist natürlich alles andere als wünschenswert! Selbst wenn man nicht so leichtsinnig wie ich ist und ein solches Zertifikat welches die eMail-Adresse enthält, installiert, kann unter umständen immernoch ein Server versuchen einem ein solches an zudrehen um einen zumindest immer wieder zu erkennen (das geht aber allerdings genauso gut mit Cookies und ähnlichen Methoden)

Die Lösung

Eine Möglichkeit ist es natürlich, die Warnung beim Besuch von SSL-Seiten zu aktivieren und lieber zweimal vor dem Betreten einer solchen zu überlegen – das ist aber auf Dauer lästig. Am wünschenswertesten wäre es, einstellen zu können, wem der Browser (Firefox) meinen „Ausweis“ zeigen soll. Zum Glück kann man Firefox auch dazu bringen, jedes mal, wenn eine Seite ein Zertifikat sehen will, nach einer Bestätigung zu fragen. Dazu aktiviert man unter Bearbeiten -> Einstellungen -> Erweitert -> Verschlüsslung -> Wenn eine Website ein Sicherheitszertifikat verlangt: Jedes Mal fragen. Client-Zertifikat nur nach Bestätigung senden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.