Öffentliche Schlüssel sind KEINE Zertifikate!

Ich könnte gerade einfach nur schreien. Es ist ein Anwendungsfall aufgetaucht, in dem es notwendig wäre, SSH-Zugänge nicht über eine Passwort-Abfrage, sondern über eine Public-Key-Infrastruktur zu realisieren. Natürlich habe ich mich im Internet auf die Suche danach gemacht, wie man Zertifikate im Zusammenhang mit OpenSSH (wäre die bevorzuge Implementierung) nutzen kann.

Was ich dabei jedoch gefunden habe, spottet jeder Beschreibung. Es scheint so, als ob der Großteil der SSH-Nutzer-Bevölkerung nicht den Unterschied zwischen einem öffentlichen Schlüssel und einem Zertifikat kennt. Diese Unwissenheit reicht dabei von Bloggern, die zu wenig Zeit für Windows haben bis hin zu größeren Projekten wie TortoiseSVN.

Da liest man dann schonmal Dinge wie: "Im Grunde [wird ein] sehr kurzes Passwort durch ein sehr langes ersetzt [...]. Nur wird es dann Zertifikat genannt. Dieses Zertifikat ist in zwei Teile aufgeteilt; in einen privaten und in einen öffentlichen Teil." (wurde inzwischen korrigiert).
Nein, natürlich ist das kein Zertifikat, dass da aus einem öffentlichen und einem privaten Teil besteht - so ein Zertifikat ist idR. immer öffentlich, sonst könnte es niemand auf Echtheit prüfen.

Die Dokumentation von TortoiseSVN hat mich besonders geärgert. Da ich dort auf mehr Fachwissen gehofft hatte, habe ich mich auf den Artikel mit dem Titel "Creating OpenSSH Certificates" gestürzt, nur um dann zu lesen, wie man mit OpenSSH ein RSA-Schlüsselpaar (besteht aus einem öffentlichen und einem privaten Schlüssel) erzeugen kann.

Ein wirklich echtes Zertifikat wird nicht einfach nur erzeugt, sondern es muss eine dritte Partei (eine Certificate Authority) involviert sein, die das Zertifikat erstellt. Dabei kommt dann meist soetwas wie ein Certificate Signing Request zum Einsatz.
Denn was ich eigentlich will ist folgendes: Ich möchte, dass man sich mit einem privaten Schlüssel am SSH-Server anmelden kann, wenn das dazu passende Zertifikat (enthält idR. auch den öffentlichen Schlüssel) auf dem Server hinterlegt ist. Die Crux des Ganzen: Beim versuchten Login müsste der SSH-Server prüfen, ob das Zertifikat tatsächlich von der zugelassenen Zertifizierungsstelle stammt und, ob das Zertifikat überhaupt noch gültig ist! Alles andere würde dazu führen, dass Nutzer sich (potentiell) selbst einen SSH-Login einrichten können und dieser zudem beliebig lange nutzbar bleibt.

Wenn also irgendjemand weiß, wie man OpenSSH mit Zertifikaten (nicht mit einfachen öffentlichen Schlüsseln!) absichern kann, dann würde ich mich über eine Nachricht von demjenigen freuen. :-)
Update:
Nachdem ich mich gerade noch durch die OpenSSH-Dokumentation gegraben habe, habe ich herausgefunden, dass OpenSSH in der Tat auch mit Zertifikaten arbeiten kann :D ! Dafür müssen zum einen die öffentlichen Schlüssel der Nutzer von einer CA signiert werden und zum anderen muss der Daemon sshd so konfiguriert werden (Stichwort "TrustedUserCAKeys"), dass dem CA, der das Zertifikat erstellt hat, auch vom Server vertraut wird.
Zertifizierte Grüße, Kenny