私のアプリケーションでMySQL接続をSSLで保護しようとしています。私は今のよう持って関連するコード:BasicDataSourceを使用したSSLによるmysqlへの安全な接続
BasicDataSource dataSource = new BasicDataSource();
dataSource.setUsername(connectorConfig.getUser());
dataSource.setPassword(connectorConfig.getPassword());
String uri = connectorConfig.getConnectURI();
dataSource.setUrl(uri);
dataSource.setValidationQuery(getValidationQuery());
dataSource.setTestOnBorrow(true);
datasource.setDriverClassLoader(getClass().getClassLoader());
datasource.setDriverClassName("com.mysql.jdbc.Driver");
System.setProperty("javax.net.ssl.keyStore", "/Users/xx/xx/client.jks");
System.setProperty("javax.net.ssl.keyStorePassword", "xx");
System.setProperty("javax.net.ssl.trustStore", "/Users/xx/xx/server.jks");
System.setProperty("javax.net.ssl.trustStorePassword", "xx");
final DBI dbi = new DBI(datasource);
私は、データソース管理のためのDBCP2 BasicDataSourceとJDBIクエリを実行するために使用しています。
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
私はMySQLサーバへのSSLコンテキストパラメータを提供行くのですか上の任意の考え:MySQLサーバへの接続を確立しようとしたときに、私は次のエラーを取得するよう しかし、上記のコードは動作しません。この場合?
PS:私は、コマンドラインからクライアントキーストアを使用してMySQLサーバに接続できたので、SSL設定が正しいと思います。
server.jksにはすでにサーバー証明書があります。デバッグモードを使用すると、コードで指定されているトラストストアが無視され、代わりにこのパスが検索されます。/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/jre/lib/security/cacerts – seriousgeek