Bitte wähle nachfolgend aus, welche Beiträge auf dieser Themenseite auf dem Ausdruck ausgegeben werden sollen. Um dies zu tun markiere bitte die Checkbox auf der linken Seite der Posts, die im Ausdruck berücksichtigt werden sollen und klicke anschließend ganz unten auf der Seite auf den Button "Drucken".

Hibiscus "Netzwerkinstallation" / Mysql mit ssl

AStA

Betreff:

Hibiscus "Netzwerkinstallation" / Mysql mit ssl

 ·  Gepostet: 18.05.2010 - 15:53 Uhr  ·  #67229
Hallo,

ich habe zum testen eine Netzwerkinstallation mit Mysql-Server auf Debian Etch vorbereitet.
Es klemmt jetzt leider noch etwas an bei der Einrichtung des mysql-ssl. Ich habe mich strikt an folgende Anleitung gehalten:

http://hibiscus.berlios.de/doku.php?id=support:mysql-ssl

Aufgefallen ist mir jedoch das das nicht 100%-ig nach der Anleitung funktioniert, zumindest nicht unter Debian.
Damit mysql auch tatsächlich den ssl-Modus aktiviert, mußte ich die server-key.pem zusätzlich in die my.cnf eintragen:

Code

[mysqld]
...
ssl-cert=/etc/mysql/server-cert.pem
ssl-ca=/etc/mysql/ca-cert.pem
ssl-capath=/etc/mysql/dir
ssl-key=/etc/mysql/server-key.pem


Erst danach startet mysql tatsächlich im ssl-modus.

Nun habe ich aber das Problem das hibiscus sich nicht mehr mit der DB verbinden kann, obwohl ich "&useSSL\=true" in der hibiscus-Konfig entsprechend gesetzt habe. Das Serverzertifikat "ca-cert.pem" habe ich wie nach Anleitung beschrieben erfolgreich in jameica/hibiscus importiert. Wo ist der Haken?

Weiterhin ist mir eine kleine "Sicherheitslücke" aufgefallen: Obwohl in der Konfig "&useSSL\=true" gesetzt ist, verbindet sich hibiscus mit dem mysql-Server wenn dieser nicht im ssl-Modus läuft! Ich würde davon ausgehen das da eine Fehlermeldung kommt und die fehlende ssl-Unterstützung bemängelt wird?!

Irgendwelche rettenden Gedanken? :lol:

Danke!

Grüsse
Ivan

hibiscus

Betreff:

Re: Hibiscus "Netzwerkinstallation" / Mysql mit ss

 ·  Gepostet: 18.05.2010 - 17:03 Uhr  ·  #67230
Zitat geschrieben von AStA
Nun habe ich aber das Problem das hibiscus sich nicht mehr mit der DB verbinden kann, obwohl ich "&useSSL\=true" in der hibiscus-Konfig entsprechend gesetzt habe.


Was heisst denn bei dir "kann sich nicht verbinden"? Du hast doch sicher eine Fehlermeldung. Schau mal in der jameica.log nach und poste den Abschnitt, wo die Verbindung mit der Datenbank aufgebaut wird (da sollte im Log auch die JDBC-URL erscheinen).

Zitat geschrieben von AStA
Weiterhin ist mir eine kleine "Sicherheitslücke" aufgefallen: Obwohl in der Konfig "&useSSL\=true" gesetzt ist, verbindet sich hibiscus mit dem mysql-Server wenn dieser nicht im ssl-Modus läuft!


Das macht der MySQL-Treiber selbstaendig. Da habe ich in Hibiscus keinen Einfluss drauf. Wenn der Treiber so konfiguriert ist, dass er automatisch ein Fallback auf Non-SSL machen darf, dann wird er es auch tun. Schau mal unter http://dev.mysql.com/doc/refma…rties.html - Absatz "Sicherheit". Da gibt es neben dem Parameter "useSSL" noch einen Parameter "requireSSL".

AStA

Betreff:

Re: Hibiscus "Netzwerkinstallation" / Mysql mit ss

 ·  Gepostet: 18.05.2010 - 18:05 Uhr  ·  #67231
Zitat geschrieben von willow
Zitat geschrieben von AStA
Nun habe ich aber das Problem das hibiscus sich nicht mehr mit der DB verbinden kann, obwohl ich "&useSSL\=true" in der hibiscus-Konfig entsprechend gesetzt habe.


Was heisst denn bei dir "kann sich nicht verbinden"? Du hast doch sicher eine Fehlermeldung. Schau mal in der jameica.log nach und poste den Abschnitt, wo die Verbindung mit der Datenbank aufgebaut wird (da sollte im Log auch die JDBC-URL erscheinen).


Also ich habe das jetzt auch mal von einem Windows Host aus versucht. Zusätzlich auch das "server-cert.pem" importiert und bekomme folgende Meldung:

Code

Hibiscus-Datenbank konnte nicht initialisiert werden.
connection to database.jdbc:mysql://192.168.0.111:3306/hibiscus?useUnicode=Yes&characterEncoding=ISO8859_1&useSSL=true failed; nested exception is: 
  com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
javax.net.ssl.SSLHandshakeException
MESSAGE: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
STACKTRACE:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
  at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
  at sun.security.validator.Validator.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  ... 32 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
  at java.security.cert.CertPathBuilder.build(Unknown Source) 
  ... 38 more 
** END NESTED EXCEPTION **
Last packet sent to the server was 1031 ms ago.
STACKTRACE:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
javax.net.ssl.SSLHandshakeException
MESSAGE: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
STACKTRACE:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
  at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
  at sun.security.validator.Validator.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  ... 32 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
  at java.security.cert.CertPathBuilder.build(Unknown Source) 
  ... 38 more 
** END NESTED EXCEPTION **
Last packet sent to the server was 1031 ms ago. 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:87) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
** END NESTED EXCEPTION **


Zitat geschrieben von willow
Zitat geschrieben von AStA
Weiterhin ist mir eine kleine "Sicherheitslücke" aufgefallen: Obwohl in der Konfig "&useSSL\=true" gesetzt ist, verbindet sich hibiscus mit dem mysql-Server wenn dieser nicht im ssl-Modus läuft!


Das macht der MySQL-Treiber selbstaendig. Da habe ich in Hibiscus keinen Einfluss drauf. Wenn der Treiber so konfiguriert ist, dass er automatisch ein Fallback auf Non-SSL machen darf, dann wird er es auch tun. Schau mal unter http://dev.mysql.com/doc/refma…rties.html - Absatz "Sicherheit". Da gibt es neben dem Parameter "useSSL" noch einen Parameter "requireSSL".


Ah, OK Danke für den Hinweis - das sehe ich mir mal näher an!

PS: An dieser Stelle sei auch mal ein DANKE für diese Software (und den Support) gesagt :!:

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 18.05.2010 - 18:26 Uhr  ·  #67232
Dem Fehler zufolge sieht das so aus, als ob das Server-Zertifikat nicht geprueft werden konnte. Bist du sicher, dass du unter Datei->Einstellungen in Jameica tatsaechlich das richtige Zertifikat importiert hast?

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 20.05.2010 - 09:51 Uhr  ·  #67258
Zitat geschrieben von willow
Dem Fehler zufolge sieht das so aus, als ob das Server-Zertifikat nicht geprueft werden konnte. Bist du sicher, dass du unter Datei->Einstellungen in Jameica tatsaechlich das richtige Zertifikat importiert hast?


Hm, schon. Da waren keine anderen... :o

Aber ich überprüfe das heute nochmal und gebe dann Feedback!

Danke & Grüsse

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 20.05.2010 - 17:58 Uhr  ·  #67272
Zitat geschrieben von willow
Dem Fehler zufolge sieht das so aus, als ob das Server-Zertifikat nicht geprueft werden konnte. Bist du sicher, dass du unter Datei->Einstellungen in Jameica tatsaechlich das richtige Zertifikat importiert hast?


Ich habe jetzt zur Sicherheit nochmal alle Zertifikate neu erstellt und entsprechend exportiert. Leider hat das nicht gebracht. Die Verbindung wird nicht aufgebaut :roll:

Soweit ich das überblicken kann hat sich die Meldung nicht verändert:

Code

Hibiscus-Datenbank konnte nicht initialisiert werden.
connection to database.jdbc:mysql://192.168.0.111:3306/hibiscus?useUnicode=Yes&characterEncoding=ISO8859_1&useSSL=true failed; nested exception is: 
  com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
javax.net.ssl.SSLHandshakeException
MESSAGE: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
STACKTRACE:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
  at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
  at sun.security.validator.Validator.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  ... 32 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
  at java.security.cert.CertPathBuilder.build(Unknown Source) 
  ... 38 more 
** END NESTED EXCEPTION **
Last packet sent to the server was 953 ms ago.
STACKTRACE:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
javax.net.ssl.SSLHandshakeException
MESSAGE: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
STACKTRACE:
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.SSLSocketImpl.startHandshake(Unknown Source) 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:72) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.validator.PKIXValidator.doBuild(Unknown Source) 
  at sun.security.validator.PKIXValidator.engineValidate(Unknown Source) 
  at sun.security.validator.Validator.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(Unknown Source) 
  ... 32 more 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target 
  at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(Unknown Source) 
  at java.security.cert.CertPathBuilder.build(Unknown Source) 
  ... 38 more 
** END NESTED EXCEPTION **
Last packet sent to the server was 953 ms ago. 
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:87) 
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982) 
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293) 
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748) 
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553) 
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) 
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at java.sql.DriverManager.getConnection(Unknown Source) 
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177) 
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126) 
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.install(HBCIDBServiceImpl.java:151) 
  at de.willuhn.jameica.hbci.HBCI$2.call(HBCI.java:144) 
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346) 
  at de.willuhn.jameica.hbci.HBCI.install(HBCI.java:140) 
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:283) 
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181) 
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138) 
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118) 
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71) 
  at de.willuhn.jameica.system.Application.init(Application.java:101) 
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85) 
  at de.willuhn.jameica.Main.main(Main.java:78) 
** END NESTED EXCEPTION **
Last packet sent to the server was 953 ms ago. 
Klicken Sie ggf. auf das Pfeil-Symbol in der Jameica-Statusleiste, um die letzten Meldungen des System-Logs anzuzeigen.


Könnte das an meiner lokalen JAVA-Installation (Client) liegen? Es wird ja Java mit dem Tool „keytool“ benötigt. Kann ich das irgendwie überprüfen?
Debian ist da mit dem "Common Name" bei der Zertifikatserstellung auch recht penibel - ich habe dort den Hostnamen eingesetzt, sollte also passen.

Noch eine Idee?

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 20.05.2010 - 18:46 Uhr  ·  #67274
Das Problem ist offensichtlich, dass der MySQL-Treiber nicht den Trust-Store mit den Zertifikaten von Jameica verwendet (daher erscheint der Jameica-Truststore-Klassenname auch nicht im Stacktrace) sondern einen eigenen. Sprich: Die Zertifikate, die in Jameica importiert sind, werden schlicht ignoriert.

Du koenntest jetzt mal folgendes probieren. Oeffne das Startscript (Windows jameica.bat, Linux jameica.sh) in einem Editor und trage folgende Parameter noch zusaetzlich ein (alles in einer Zeile):

-Djavax.net.ssl.keyStore=/home/<username>/.jameica/cfg/jameica.keystore
-Djavax.net.ssl.keyStorePassword=<dein Masterpasswort von Jameica>
-Djavax.net.ssl.trustStore=/home/<username>/.jameica/cfg/jameica.keystore
-Djavax.net.ssl.trustStorePassword=<dein Masterpasswort von Jameica>

Das ganze fuegst du in die letzte Zeile ein.

Unter Linux sieht das dann also so aus:

GDK_NATIVE_WINDOWS=1 java -Djavax.net.... -D -Djava.net.prefer...

Unter Windows so:

start javaw.exe java -Djavax.net.... -Xmx256m ....


Unter Windows musst du natuerlich andere Pfade zur Datei "jameica.keystore" verwenden. Die muessten dann etwa so aussehen:

C:/Dokumente und Einstellungen/<username>/.jameica/.....


Falls sich Leerzeichen im Pfad befinden, muss der Pfad IMHO mit Anfuehrungszeichen umschlossen werden.

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 21.05.2010 - 08:50 Uhr  ·  #67289
Ich fresse gleich einen Besen - es funktioniert!!! :D

Um es vollständig und korrekt zu machen - ich habe die Zeilen in den bestehenden Code eingefügt.

"jameica.sh" alt:

Code
 GDK_NATIVE_WINDOWS=1 java -Djava.net.preferIPv4Stack=true -Xmx256m $_JCONSOLE -jar jameica-linux.jar $@


"jameica.sh" neu:

Code
GDK_NATIVE_WINDOWS=1 java -Djava.net.preferIPv4Stack=true -Djavax.net.ssl.keyStore=/home/<user>/.jameica/cfg/jameica.keystore -Djavax.net.ssl.keyStorePassword=<Master-PW> -Djavax.net.ssl.trustStore=/home/<user>/.jameica/cfg/jameica.keystore -Djavax.net.ssl.trustStorePassword=<Master-PW> -Xmx256m $_JCONSOLE -jar jameica-linux.jar $@


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?!
-Kann das an OpenSUSE 11.1 als Client liegen, das mal wieder alles "anders" macht?
-Wie müssen eigentlich die Lese- & Schreibrechte korrekt auf /opt/jameica (Programmverszeichniss) aussehen?

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...

Vielenvielen Dank auf jeden Fall schon einmal!

Nachtrag:

So sieht jetzt der entsprechende Teil meiner "de.willuhn.jameica.hbci.rmi.HBCIDBService.properties" aus, damit die ssl-Verbindung in jedem Fall erzwungen wird:

Code
database.driver.mysql.jdbcurl=jdbc\:mysql\://<server-ip>\:3306/hibiscus?useUnicode\=Yes&characterEncoding\=ISO8859_1&useSSL\=true&requireSSL\=true

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 21.05.2010 - 11:14 Uhr  ·  #67292
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.

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 21.05.2010 - 11:36 Uhr  ·  #67293
Das klingt schon mal sehr gut, nur stellt sich mir noch ein 2. Problem:

Da ich die Konfig & Master-PW in der Jameica.sh hinterlege, ist sie ja quasi auf einen bestimmten Benutzer gemünzt. Arbeitet jemand anderes am PC und möchte das Programm nutzen, geht das nicht - außer ich finde jetzt noch heraus wie ich die Konfig "neutral" mit Userverzeichniss als Variable hinterlegen kann - dann hätte ich zumindest das Pfad-Problem gelöst. Das Master-PW müste dann aber überall identisch sein.
Folgende Möglichkeiten getestet, funktionieren leider nicht:

Code
-Djavax.net.ssl.keyStore="~/.jameica/cfg/jameica.keystore"


Code
-Djavax.net.ssl.keyStore=~/.jameica/cfg/jameica.keystore

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 21.05.2010 - 11:47 Uhr  ·  #67295
Genau dafuer kannst du doch die letzte von mir erwaehnte Variante nehmen. Du erstellst dir eine jameica.keystore, die benutzerneutral ist und nur dieses eine Zertifikat enthaelt. Im Shell-Script sieht der Startparameter dann etwa so aus:

-Djavax.net.ssl.keyStore=/pfad/zum/fileserver/jameica.keystore

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 25.05.2010 - 22:45 Uhr  ·  #67358
OK. Ich werde das mal in Ruhe testen müssen. Hatte die letzten Tage dafür leider keine Zeit.

Danke schon mal!

Grüsse

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 29.06.2010 - 22:34 Uhr  ·  #68011
So, leider bin ich noch nicht weiter gekommen da es hier noch so einiges anderes zu tun gab... :-/

Ich hätte jetzt nochmal eine generelle Frage:

Wie kommt es das ganze Netzwerksetup nun doch so "kompliziert" bzgl. des Keys & der Konfig. ist?
Kommt das daher das ich das Zip-File benutze und Hibiscus/Jameica nicht aus dem Repository installiert habe?
Denn an für sich ist die gesamte Netzwerkinstallation mit mysql & ssl für Hibiscus/Jameica ja sehr gut dokumentiert - die hier geschilderten Probleme die im Mehrbenutzerbetrieb dann aber entstehen, sind dort nicht erwähnt/berücksichtigt. Ich habe ja gerade die Netzwerkinstallation ausgewählt, weil ich davon ausgegangen bin das das einigermassen reibungslos machbar ist...

Grüsse
Ivan

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 29.06.2010 - 23:56 Uhr  ·  #68013
nein, du hast nichts falsch gemacht. Wie ich schon schrieb: Zu den SSL-Problemen kam es durch einige Code-Umstellungen in Jameica 1.9. In https://www.willuhn.de/bugzilla/show_bug.cgi?id=872 ist der Sachverhalt nochmal naeher beschrieben. Mit den aktuellen Nightly-Builds (Jameica 1.10, Hibiscus 1.12) existiert das Problem inzwischen auch nicht mehr

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 13:47 Uhr  ·  #68762
Zitat geschrieben von willow
nein, du hast nichts falsch gemacht. Wie ich schon schrieb: Zu den SSL-Problemen kam es durch einige Code-Umstellungen in Jameica 1.9. In https://www.willuhn.de/bugzilla/show_bug.cgi?id=872 ist der Sachverhalt nochmal naeher beschrieben. Mit den aktuellen Nightly-Builds (Jameica 1.10, Hibiscus 1.12) existiert das Problem inzwischen auch nicht mehr


So, da bin ich nun wieder. Habe nun den Nightly-Build installiert und somit schon wesentlich weniger Probleme! Super, Danke! :D

Ich habe nun Zertifikate nach der Anleitung erstellt, auf dem Server hinterlegt und kann mich mit verschieden Usern über Jameica zur DB verbinden, aber festgestellt das die Zertifikate offensichtlich den Rechnernamen mitführen bzw. rechnergebunden sind. Das bedeutet wenn der User mal an einem anderen PC sitzt (als an dem an dem sein Jameica-Zugang zum ersten mal eingerichtet wurde), hat er zwar sämtliche Einstellungen in seinem /home-Verzeichniss mitgeführt, aber es kann trotzdem keine Verbindung zur DB hergestellt werden. Kann man das irgendwie umgehen?

Code
 
Fehler
Hibiscus-Datenbank konnte nicht initialisiert werden.
connection to database.jdbc:mysql://192.168.0.111:3306/hibiscus?useUnicode=Yes&characterEncoding=ISO8859_1&useSSL=true&requireSSL=true failed; nested exception is: 
  com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
com.mysql.jdbc.CommunicationsException
MESSAGE: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
java.net.SocketException
MESSAGE: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
STACKTRACE:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
  at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:196)
  at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:216)
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:65)
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85)
  at java.sql.DriverManager.getConnection(DriverManager.java:620)
  at java.sql.DriverManager.getConnection(DriverManager.java:200)
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177)
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126)
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency(HBCIDBServiceImpl.java:133)
  at de.willuhn.jameica.hbci.HBCI$1.call(HBCI.java:110)
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346)
  at de.willuhn.jameica.hbci.HBCI.init(HBCI.java:106)
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:306)
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181)
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118)
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71)
  at de.willuhn.jameica.system.Application.init(Application.java:101)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
  at java.security.Provider$Service.newInstance(Provider.java:1262)
  at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
  at sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
  at javax.net.ssl.SSLContext.getInstance(SSLContext.java:142)
  at javax.net.ssl.SSLContext.getDefault(SSLContext.java:85)
  at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:119)
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:61)
  ... 23 more
Caused by: java.security.PrivilegedActionException: java.io.FileNotFoundException: /home/katja/.jameica/cfg/jameica.keystore (Keine Berechtigung)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.security.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:137)
  at sun.security.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:57)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
  at java.lang.Class.newInstance0(Class.java:372)
  at java.lang.Class.newInstance(Class.java:325)
  at java.security.Provider$Service.newInstance(Provider.java:1238)
  ... 29 more
Caused by: java.io.FileNotFoundException: /home/katja/.jameica/cfg/jameica.keystore (Keine Berechtigung)
  at java.io.FileInputStream.open(Native Method)
  at java.io.FileInputStream.<init>(FileInputStream.java:137)
  at java.io.FileInputStream.<init>(FileInputStream.java:96)
  at sun.security.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:140)
  at sun.security.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:138)
  ... 39 more
** END NESTED EXCEPTION **
Last packet sent to the server was 16 ms ago.
STACKTRACE:
com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception: 
** BEGIN NESTED EXCEPTION ** 
java.net.SocketException
MESSAGE: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
STACKTRACE:
java.net.SocketException: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
  at javax.net.ssl.DefaultSSLSocketFactory.throwException(SSLSocketFactory.java:196)
  at javax.net.ssl.DefaultSSLSocketFactory.createSocket(SSLSocketFactory.java:216)
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:65)
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85)
  at java.sql.DriverManager.getConnection(DriverManager.java:620)
  at java.sql.DriverManager.getConnection(DriverManager.java:200)
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177)
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126)
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency(HBCIDBServiceImpl.java:133)
  at de.willuhn.jameica.hbci.HBCI$1.call(HBCI.java:110)
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346)
  at de.willuhn.jameica.hbci.HBCI.init(HBCI.java:106)
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:306)
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181)
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118)
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71)
  at de.willuhn.jameica.system.Application.init(Application.java:101)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85)
  at de.willuhn.jameica.Main.main(Main.java:78)
Caused by: java.security.NoSuchAlgorithmException: Error constructing implementation (algorithm: Default, provider: SunJSSE, class: sun.security.ssl.DefaultSSLContextImpl)
  at java.security.Provider$Service.newInstance(Provider.java:1262)
  at sun.security.jca.GetInstance.getInstance(GetInstance.java:236)
  at sun.security.jca.GetInstance.getInstance(GetInstance.java:164)
  at javax.net.ssl.SSLContext.getInstance(SSLContext.java:142)
  at javax.net.ssl.SSLContext.getDefault(SSLContext.java:85)
  at javax.net.ssl.SSLSocketFactory.getDefault(SSLSocketFactory.java:119)
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:61)
  ... 23 more
Caused by: java.security.PrivilegedActionException: java.io.FileNotFoundException: /home/katja/.jameica/cfg/jameica.keystore (Keine Berechtigung)
  at java.security.AccessController.doPrivileged(Native Method)
  at sun.security.ssl.DefaultSSLContextImpl.getDefaultKeyManager(DefaultSSLContextImpl.java:137)
  at sun.security.ssl.DefaultSSLContextImpl.<init>(DefaultSSLContextImpl.java:57)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
  at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
  at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
  at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
  at java.lang.Class.newInstance0(Class.java:372)
  at java.lang.Class.newInstance(Class.java:325)
  at java.security.Provider$Service.newInstance(Provider.java:1238)
  ... 29 more
Caused by: java.io.FileNotFoundException: /home/katja/.jameica/cfg/jameica.keystore (Keine Berechtigung)
  at java.io.FileInputStream.open(Native Method)
  at java.io.FileInputStream.<init>(FileInputStream.java:137)
  at java.io.FileInputStream.<init>(FileInputStream.java:96)
  at sun.security.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:140)
  at sun.security.ssl.DefaultSSLContextImpl$2.run(DefaultSSLContextImpl.java:138)
  ... 39 more
** END NESTED EXCEPTION **
Last packet sent to the server was 16 ms ago.
  at com.mysql.jdbc.ExportControlled.transformSocketToSSLSocket(ExportControlled.java:87)
  at com.mysql.jdbc.MysqlIO.negotiateSSLConnection(MysqlIO.java:3982)
  at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1293)
  at com.mysql.jdbc.Connection.createNewIO(Connection.java:2748)
  at com.mysql.jdbc.Connection.<init>(Connection.java:1553)
  at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285)
  at de.willuhn.datasource.db.MyDriver.connect(MyDriver.java:85)
  at java.sql.DriverManager.getConnection(DriverManager.java:620)
  at java.sql.DriverManager.getConnection(DriverManager.java:200)
  at de.willuhn.datasource.db.DBServiceImpl.createConnection(DBServiceImpl.java:177)
  at de.willuhn.datasource.db.DBServiceImpl.getConnection(DBServiceImpl.java:126)
  at de.willuhn.jameica.hbci.server.HBCIDBServiceImpl.checkConsistency(HBCIDBServiceImpl.java:133)
  at de.willuhn.jameica.hbci.HBCI$1.call(HBCI.java:110)
  at de.willuhn.jameica.hbci.HBCI.call(HBCI.java:346)
  at de.willuhn.jameica.hbci.HBCI.init(HBCI.java:106)
  at de.willuhn.jameica.plugin.PluginLoader.initPlugin(PluginLoader.java:306)
  at de.willuhn.jameica.plugin.PluginLoader.init(PluginLoader.java:181)
  at de.willuhn.jameica.services.PluginService.init(PluginService.java:42)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:138)
  at de.willuhn.boot.BootLoader.resolve(BootLoader.java:118)
  at de.willuhn.boot.BootLoader.getBootable(BootLoader.java:71)
  at de.willuhn.jameica.system.Application.init(Application.java:101)
  at de.willuhn.jameica.system.Application.newInstance(Application.java:85)
  at de.willuhn.jameica.Main.main(Main.java:78)
** END NESTED EXCEPTION **
Last packet sent to the server was 17 ms ago. 
Klicken Sie ggf. auf das Pfeil-Symbol in der Jameica-Statusleiste, um die letzten Meldungen des System-Logs anzuzeigen.

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 13:57 Uhr  ·  #68766
Also das sieht mir eher aus, wie eine ganz banale fehlende Dateiberechtigung:

java.io.FileNotFoundException: /home/katja/.jameica/cfg/jameica.keystore (Keine Berechtigung)

Kann es sein, dass der User die Datei einfach nicht lesen/schreiben kann, weil die Rechte nicht stimmen?

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 17:12 Uhr  ·  #68787
Zitat geschrieben von AStA
Ich habe nun Zertifikate nach der Anleitung erstellt, auf dem Server hinterlegt und kann mich mit verschieden Usern über Jameica zur DB verbinden, aber festgestellt das die Zertifikate offensichtlich den Rechnernamen mitführen bzw. rechnergebunden sind. Das bedeutet wenn der User mal an einem anderen PC sitzt (als an dem an dem sein Jameica-Zugang zum ersten mal eingerichtet wurde), hat er zwar sämtliche Einstellungen in seinem /home-Verzeichniss mitgeführt, aber es kann trotzdem keine Verbindung zur DB hergestellt werden. Kann man das irgendwie umgehen?


Nachtrag: Nach der Ersteinrichtung eines Jameica-Users bzw. Zertifikat auf einem OpenSUSE 11.2, konnte sich der User auf einem OpenSUSE 11.1 erfolgreich bei Jameica anmelden ohne das der Zertifikatsfehler kam :?: :!:

Was ist jetzt los? ... Na da werde ich wohl noch ein wenig testen müssen... :shock:

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 17:19 Uhr  ·  #68789
Ich verstehe jetzt echt nicht, was du meinst. Funktioniert etwas nicht oder nicht so, wie du erwartest, oder was?

Kannst du bitte schreiben, was du getan hast, was deiner Meinung nach haette passieren SOLLEN und was passiert IST?

AStA

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 17:41 Uhr  ·  #68793
Zitat geschrieben von willow
Ich verstehe jetzt echt nicht, was du meinst. Funktioniert etwas nicht oder nicht so, wie du erwartest, oder was?

Kannst du bitte schreiben, was du getan hast, was deiner Meinung nach haette passieren SOLLEN und was passiert IST?


Ja, ist verwirrend - tut mir leid! Also es funktioniert jetzt soweit erst mal alles - Danke!

An einigen Stationen habe ich aber das Problem das nach Ersteinrichtung des Jameica-Profils für den User (samt Zertifikatserstellung und hinterlegen auf dem Mysql-Server), der gleiche User Jameica an einem anderen PC nicht starten kann, weil scheinbar kein connect zum mysql-Server (siehe Beitrag um 13:47).
Dieses Verhalten konnte ich mit 2 versch. Useraccounts reproduzieren.

Nachdem ich eine Ersteinrichtung von Jameica für zwei ganz neue User (samt Zertifikatserstellung und hinterlegen auf dem Mysql-Server) auf einem OpenSUSE 11.2 (die anderen System waren OpenSUSE 11.1) vorgenommen habe, scheint das kein Problem mehr für diese neuen Benutzer bzw. Benutzerprofile zu sein. Die können sich auch an anderen PCs anmelden und erfolgreich Jameica starten - so wie ich es von dem Netzwerksetup ursprünglich erwartet hatte.

Aufgrund des geschilderten Fehlers mit dem OpenSUSE 11.1 hatte ich die Befürchtung das ich:

1. für jeden Jameica-User ein Zertifikat erstellen und auf den Server kopieren muß

und

2. zusätzliche Zertifikate an jedem PC für den User auch noch mal erstellen muß und auf dem Server hinterlegen, da im Zertifikat offenbar der Rechnername mitgeführt wird und somit die SQL-Verbindung nicht zustande kam.

Kurz gesagt: Meine Befürchtung war das ich pro User UND PC an dem er/sie sitzen könnte das ganze Zertifikatssetup für die mysql - ssl Geschichte durchführen muß.
Das scheint aber wie sich nun zuletzt mit OpenSUSE 11.2 gezeigt hat nicht zwingend der Fall zu sein. Würde jetzt nur gerne herausfinden warum.

Hoffe das war jetzt verständlicher?

Grüsse
Ivan

hibiscus

Betreff:

Re: Hibiscus &quot;Netzwerkinstallation&quot; / Mysql mit ssl

 ·  Gepostet: 03.08.2010 - 18:05 Uhr  ·  #68794
Das von Jameica erstellte Zertifikat enthaelt im Attribut "Common Name" natuerlich den Hostnamen des Rechners, auf dem die Jameica-Instanz initialisiert wurde. Dafuer ist das Attribut ja auch da. Ich kann dort ja nicht einfach irgendwas anderes reinschreiben.

Die Frage ist jetzt, wie die Gegenseite damit umgeht, wenn der Hostname des Gegenueber nicht mit dem Hostnamen laut Zertifikat uebereinstimmt.

Jameica bringt in dem Fall einen Warnhinweis, laesst dem User aber die Wahl, das zu tolerieren (das waere z.Bsp. der Fall, wenn das Zertifikat des MySQL-Servers einen falschen Hostnamen hat).

Wie andersrum jedoch der MySQL-Server damit umgeht, wenn der Hostname laut Client-Zertifikates nicht mit dem tatsaechlichen Hostnamen des Clients uebereinstimmt, liegt nicht in meiner Macht. Das ist ja die Entscheidungssache des MySQL-Servers.