Re: API anstatt keytool/openssl
- From: Bastian Preindl <web@xxxxxxxxxxx>
- Date: Sat, 07 Feb 2009 14:30:37 +0100
Hi Robert,
Robert Kochem schrieb:
Mit Ausnahme der proprietären Erstellung und Übersendung der Zertifikate an
den Server mit den CA-Schlüsseln hast du eine PKI nachgebaut. Wenn du stattdessen bei den Zertifikatsanfragen auf das Standard
Certificate request-Format setzten würdest (siehe rfc2511), dann könntest
du jede beliebige PKI einsetzen. Fertige PKIs sollte es auch komplett in
Java implementiert geben.
ich bin mir dessen bewusst. Der Grund für die Propietärimplementierung liegt in dem Wunsch, sämtliche Kommunikation zwischen Peers und Server über ein Protokoll abzuwickeln, und dieses wiederum ist über ein XSD definiert. Es ist an sich etwas komplexer als anfangs dargestellt, nämlich wie folgt:
- Mensch registriert sich im System, Ergebnis: username/password
- Mensch möchte Peer im Netzwerk werden, installiert dazu Client-Software
- Der Client verfügt bei Auslieferung über ein "Registration"-Zertifikat im Keystore und das Zertifikat der Root-CA (anhand dessen er die Server authentifizieren kann), womit er ein Registrierung seines Clients im Netz vornehmen kann (damit kann eine authentifizierte Verbindung über SSL mit dem Server hergestellt werden). Dieses Zertifikat akzeptiert der Server ausschließlich für den Registrierungsvorgang, sonst kann es nicht verwendet werden.
- Der Client registriert sich mit username und password am Server und bekommt daraufhin eine eindeutige ID zugewiesen.
- Der Client kreiert das Zertifikat und fügt ihm die ID-Information hinzu, die er vom Server bekommen hat.
- Das Zertifikat wird zum Server geschickt, welcher überprüft, ob username und password zur gesätzten ID passen und signiert das Zertifikat daraufhin. Die ID ist klarerwiese fest verankert im Zertifikat.
- Jeder Peer hat eine Liste aller anderen Peers und Server im Netz, welche er primär für die Erfüllung seine Aufgaben benötigt, aber auch dazu nutzen kann, eine Anfrage von einem anderen Peer zu validieren. Durch die feste Verdrahtung zwischen Peer und Zertifikat ist jede Anfrage von einem Peer automatisch auch authentifiziert (die Rechte sind durch die ID vorgegeben) - soll ein Peer im Netz nicht mehr akzeptiert werden, muss nicht sein Zertifikat zurückgezogen werden, sondern nur seine ID entsprechend markiert werden. Et voila.
Sollten sich diese Aufgaben einfacher lösen lassen, bin ich für jeden Tip dankbar.
Lt. meinen Informationen gibt's nicht sehr viele Implementierungen für CMP, namentlich nur etwas für einen EJB-Container (EJBCA), cryptlib und OpenSSL. Cryptlib wär' ja ganz interessant, wenn ich das aber richtig verstanden habe benötigt man da wieder plattformabhängige Bibliotheken, auf die via JNI zugegriffen wird, was ich eigentlich vermeiden möchte.
lG
Bastian
.
- References:
- API anstatt keytool/openssl
- From: Bastian Preindl
- Re: API anstatt keytool/openssl
- From: Robert Kochem
- API anstatt keytool/openssl
- Prev by Date: Re: String-Listen joinen
- Next by Date: Subclipse und Versionsverwaltung
- Previous by thread: Re: API anstatt keytool/openssl
- Next by thread: Re: API anstatt keytool/openssl
- Index(es):
Relevant Pages
|