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:/
?
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.
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.