Dbeaver: Failed to find trustStore file.

Created on 20 Jan 2017  路  3Comments  路  Source: dbeaver/dbeaver

When I try to connect using SSL to a MariaDB database, I get a connection error, which tells me:

Failed to find trustStore. trustStore=file:/home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks

I checked and that file actually exists on my machine, and it has correct permissions:

> ls -l /home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks
-rw-rw-r-- 1 frederiknjs frederiknjs 32 jan 20 10:09 /home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks

I'm not sure if it's the cause of the issue, but doesn't file URIs usually begin with file:// instead of file:/?

bug

Most helpful comment

Well, passed keystore path is a valid URL (at least in Java).
But it looks like MariaDB driver doesn't try to interpret it as an URL but assumes that it is a file path. I've made a fix (see in the next version).

For now as a workaround you could try to use MySQL driver (it should work with keystore URL). Please report about results.

All 3 comments

Please post full error stacktrace (you can get it in Error Log view).

Here you go:

eclipse.buildId=unknown
java.version=1.8.0_111
java.vendor=Oracle Corporation
BootLoader constants: OS=linux, ARCH=x86_64, WS=gtk, NL=en_US
Command-line arguments:  -os linux -ws gtk -arch x86_64

org.jkiss.dbeaver.model
Error
Fri Jan 20 10:58:41 CET 2017
Failed to find trustStore file. trustStore=file:/home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks

java.sql.SQLNonTransientConnectionException: Failed to find trustStore file. trustStore=file:/home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks
    at org.mariadb.jdbc.internal.util.ExceptionMapper.get(ExceptionMapper.java:132)
    at org.mariadb.jdbc.internal.util.ExceptionMapper.getException(ExceptionMapper.java:101)
    at org.mariadb.jdbc.internal.util.ExceptionMapper.throwException(ExceptionMapper.java:91)
    at org.mariadb.jdbc.Driver.connect(Driver.java:109)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.openConnection(JDBCDataSource.java:159)
    at org.jkiss.dbeaver.ext.mysql.model.MySQLDataSource.openConnection(MySQLDataSource.java:376)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCExecutionContext.connect(JDBCExecutionContext.java:73)
    at org.jkiss.dbeaver.model.impl.jdbc.JDBCDataSource.<init>(JDBCDataSource.java:99)
    at org.jkiss.dbeaver.ext.mysql.model.MySQLDataSource.<init>(MySQLDataSource.java:82)
    at org.jkiss.dbeaver.ext.mysql.MySQLDataSourceProvider.openDataSource(MySQLDataSourceProvider.java:124)
    at org.jkiss.dbeaver.registry.DataSourceDescriptor.connect(DataSourceDescriptor.java:702)
    at org.jkiss.dbeaver.registry.DataSourceDescriptor.reconnect(DataSourceDescriptor.java:955)
    at org.jkiss.dbeaver.registry.DataSourceDescriptor.refreshObject(DataSourceDescriptor.java:551)
    at org.jkiss.dbeaver.model.navigator.DBNDatabaseNode.refreshNode(DBNDatabaseNode.java:306)
    at org.jkiss.dbeaver.model.navigator.DBNDataSource.refreshNode(DBNDataSource.java:239)
    at org.jkiss.dbeaver.ui.actions.navigator.NavigatorHandlerRefresh$1.run(NavigatorHandlerRefresh.java:140)
    at org.jkiss.dbeaver.model.runtime.AbstractJob.run(AbstractJob.java:103)
    at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: org.mariadb.jdbc.internal.util.dao.QueryException: Failed to find trustStore file. trustStore=file:/home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks
    at org.mariadb.jdbc.internal.protocol.tls.MariaDbX509TrustManager.<init>(MariaDbX509TrustManager.java:111)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.getSslSocketFactory(AbstractConnectProtocol.java:248)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.handleConnectionPhases(AbstractConnectProtocol.java:487)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connect(AbstractConnectProtocol.java:392)
    at org.mariadb.jdbc.internal.protocol.AbstractConnectProtocol.connectWithoutProxy(AbstractConnectProtocol.java:811)
    at org.mariadb.jdbc.internal.util.Utils.retrieveProxy(Utils.java:469)
    at org.mariadb.jdbc.Driver.connect(Driver.java:104)
    ... 14 more
Caused by: java.io.FileNotFoundException: file:/home/frederiknjs/.dbeaver/.metadata/.plugins/org.jkiss.dbeaver.core/security/ssl-truststore.jks (No such file or directory)
    at java.io.FileInputStream.open0(Native Method)
    at java.io.FileInputStream.open(FileInputStream.java:195)
    at java.io.FileInputStream.<init>(FileInputStream.java:138)
    at java.io.FileInputStream.<init>(FileInputStream.java:93)
    at org.mariadb.jdbc.internal.protocol.tls.MariaDbX509TrustManager.<init>(MariaDbX509TrustManager.java:103)
    ... 20 more

Well, passed keystore path is a valid URL (at least in Java).
But it looks like MariaDB driver doesn't try to interpret it as an URL but assumes that it is a file path. I've made a fix (see in the next version).

For now as a workaround you could try to use MySQL driver (it should work with keystore URL). Please report about results.

Was this page helpful?
0 / 5 - 0 ratings