Zitat geschrieben von AStA
Ich fresse gleich einen Besen - es funktioniert!!! :D
Den Verdacht mit diesen Parametern hatte ich ganz zu Beginn schon, es aber fuer abwegig gehalten ;)
Zitat geschrieben von AStA
Und jetzt das große Fragezeichen:
-Was habe ich falsch gemacht? Ich nutze die "All-in-one" Version von der Jameica-HP, sollte doch alles in Ordnung sein?!
Du hast nichts falsch gemacht. Diese Parameter wurden frueher mal (zu dem Zeitpunkt, als das Howto im Wiki entstand) von Jameica selbst im Programm gesetzt. Inzwischen ist das aber nicht mehr so. Hintergrund:
Ein "Keystore" ist bei Java eine Datei, in der Zertifikate gespeichert sind, denen Java vertraut. Die Java-Installation selbst bringt bereits einen mit, in dem die bekannten CA-Zertifikate von Verisign, Thawte & Co. drin stehen. Die Datei heisst "cacerts" und
liegt meist in $JRE_HOME/lib/security
Jameica hat einen eigenen Keystore. Das ist die Datei ~/.jameica/cfg/jameica.keystore. Sie ist mit dem Jameica-Masterpasswort geschuetzt.
Der Jameica-eigene Keystore sitzt quasi oben auf dem Java-eigenen Keystore drauf und erweitert diesen um die in Jameica importierten Zertifikate. Wird eine Zertifikatspruefung benoetigt, schaut Jameica erst in den eigenen Zertifikaten nach. Kann es damit nicht verifiziert werden, wird die Anfrage an den Java-eigenen Keystore (also die cacerts) delegiert.
In aelteren Jameica-Versionen existierte diese Delegierung noch nicht. Jameica vertraute nur den eigenen Zertifikaten und setzte auch diese 4 "javax.net.ssl..." Parameter selbst. Effekt: Es existierte nur "die jameica.keystore". Die "cacerts" wurde komplett ignoriert. Das hatte jedoch den Nachteil, dass der Benutzer jedes Server-Zertifikat bestaetigen/importieren musste. Auch denn, wenn es von einer bekannten CA signiert ist.
Das ganze Dilemma ist jetzt nur deshalb entstanden, weil der MySQL-Treiber (ich hab mir jetzt extra mal den Quellcode von dem Treiber geladen und mir die Interna angeschaut) den ganzen TrustManager/Keystore-Kram selbst auch nochmal initialisiert. Obwohl er das aus meiner Sicht ueberhaupt nicht muesste. Und fuer diese Initialisierung verwendet er die Werte in den 4 genannten Parametern. In den alten Jameica-Versionen zeigten die noch auf "jameica.keystore" -> importiertes Zertifikat wurde gefunden. In neuen Jameica-Versionen werden die Parameter nicht mehr gesetzt und zeigen damit implizit auf "cacerts" -> importiertes Zertifikat wird nicht mehr gefunden.
So, ich sollte das vielleicht mal im Wiki anpassen.
Zitat geschrieben von AStA
-Kann das an OpenSUSE 11.1 als Client liegen, das mal wieder alles "anders" macht?
Nein, SuSE kann da nichts dafuer. ;)
Zitat geschrieben von AStA
-Wie müssen eigentlich die Lese- & Schreibrechte korrekt auf /opt/jameica (Programmverszeichniss) aussehen?
Im Programm-Verzeichnis werden keinerlei Schreibrechte gebraucht. Jameica speichert alle Daten nur in ~/.jameica.
Ich setze die Rechte bei mir immer auf:
chmod -R 755 /opt/jameica
chown -R root:root /opt/jameica
Zitat geschrieben von AStA
Und eine Sache stört mich auch etwas: Das ich nun das Master-PW in dem Start-Skript hinterlegen muß.
Das macht es bei einer Netzwerkinstallation mit vielen Usern wg. der einzelnen User-Zertifikate die noch auf den Server müssen nicht gerade einfacher und sicherer...
Ja, das stimmt. Die Loesung mit den "javax.net.ssl"-Parametern ist aber nur eine moegliche. Ich habe sie erwaehnt, weil es die am leichtesten zu testende ist. Du koenntest dein Server-Zertifikat alternativ auch direkt in die "cacerts" von Java importieren. Das ist aber ein ganzes Stueck umstaendlicher.
1) Das muesstest du als Root machen, weil man in $JRE_HOME ja keine Schreibrechte hat
2) Man kann das nicht mit Jameica machen sondern nur mit dem Kommandozeilen-Tool "keytool" von Java, dessen Bedienung etwas sperrig ist. Da kannst du dir mal die Manpage von keytool anschauen.
3) Wenn neue Online-Updates von OpenSuSE kommen, die die Java-Installation aktualisieren, wird die cacerts vermutlich wieder ueberschrieben.
4) Du muesstest das auf jedem Client-Rechner machen
Eine Variante faellt mir noch ein:
1) Starte mal ein "nacktes" Jameica ohne Plugins. Mit einem User, der noch kein ~/.jameica-Verzeichnis hat. Gib als Master-Passwort irgendwas simples ein. Dabei wird bei dem User eine neue ~/.jameica/cfg/jameica.keystore erzeugt.
2) Du importierst jetzt dein Server-Zertifikat in Jameica
3) Jetzt kopierst du die ~/.jameica/cfg/jameica.keystore auf deinen File-Server, auf den alle Clients Zugriff haben. Die Clients brauchen keinen Schreibzugriff auf die Datei. Lese-Rechte reichen.
4) Du aenderst nun die 4 "javax.net.ssl"-Parameter so, dass sie direkt auf diese Datei auf dem Fileserver zeigen.
Effekt: Du hast das Zertifikat an zentraler Stelle - alle Clients verwenden nun diesen Keystore. Und das Masterpasswort der jeweiligen Installationen muss nicht mehr im Start-Script angegeben sein. Stattdessen nur noch das fuer alle gleiche simple Passwort fuer die Keystore-Datei auf dem File-Server. Und wenn die Dateiberechtigungen richtig gesetzt sind, kann nur der Admin sie aendern.