使用SSL将Pentaho水壶/汤匙连接到Heroku PostgreSQL时出现问题

使用SSL将Pentaho水壶/汤匙连接到Heroku PostgreSQL时出现问题,postgresql,ssl,jdbc,pentaho,kettle,Postgresql,Ssl,Jdbc,Pentaho,Kettle,我正在尝试使用spoon附带的JDBC驱动程序将spoon连接到Heroku PostgreSQL实例。Heroku的独立PostgreSQL实例需要SSL,我已经启用了SSL 我能够使用其他使用SSL的客户端软件连接到数据库,因此这似乎是Java/JDBC特有的。我对Java的了解还不足以解决这个问题,所以希望有人以前也经历过这个问题 我得到了下面这个相当详细的错误消息,其中提到了一个SSLHandshakeException,但我不确定这是其他原因还是症状?也许我需要在Java中指定SSL证

我正在尝试使用spoon附带的JDBC驱动程序将spoon连接到Heroku PostgreSQL实例。Heroku的独立PostgreSQL实例需要SSL,我已经启用了SSL

我能够使用其他使用SSL的客户端软件连接到数据库,因此这似乎是Java/JDBC特有的。我对Java的了解还不足以解决这个问题,所以希望有人以前也经历过这个问题

我得到了下面这个相当详细的错误消息,其中提到了一个SSLHandshakeException,但我不确定这是其他原因还是症状?也许我需要在Java中指定SSL证书

Error connecting to database [XXXX.com] : org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Error connecting to database: (using class org.postgresql.Driver)
The connection attempt failed.


org.pentaho.di.core.exception.KettleDatabaseException: 
Error occured while trying to connect to the database

Error connecting to database: (using class org.postgresql.Driver)
The connection attempt failed.


at org.pentaho.di.core.database.Database.normalConnect(Database.java:374)
at org.pentaho.di.core.database.Database.connect(Database.java:323)
at org.pentaho.di.core.database.Database.connect(Database.java:285)
at org.pentaho.di.core.database.Database.connect(Database.java:275)
at org.pentaho.di.core.database.DatabaseFactory.getConnectionTestReport(DatabaseFactory.java:76)
at org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2455)
at org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:511)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:329)
at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:139)
at org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:123)
at org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:26)
at org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:119)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
at org.eclipse.jface.window.Window.open(Window.java:796)
at org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:378)
at org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:304)
at org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:104)
at org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:51)
at org.pentaho.di.ui.trans.step.BaseStepDialog$3.widgetSelected(BaseStepDialog.java:480)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.trans.steps.tableoutput.TableOutputDialog.open(TableOutputDialog.java:916)
at org.pentaho.di.ui.spoon.delegates.SpoonStepsDelegate.editStep(SpoonStepsDelegate.java:126)
at org.pentaho.di.ui.spoon.Spoon.editStep(Spoon.java:7733)
at org.pentaho.di.ui.spoon.trans.TransGraph.editStep(TransGraph.java:2744)
at org.pentaho.di.ui.spoon.trans.TransGraph.mouseDoubleClick(TransGraph.java:693)
at org.eclipse.swt.widgets.TypedListener.handleEvent(Unknown Source)
at org.eclipse.swt.widgets.EventTable.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Widget.sendEvent(Unknown Source)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at org.pentaho.di.ui.spoon.Spoon.readAndDispatch(Spoon.java:1169)
at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:6945)
at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:553)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.pentaho.commons.launcher.Launcher.main(Launcher.java:134)
Caused by: org.pentaho.di.core.exception.KettleDatabaseException: 
Error connecting to database: (using class org.postgresql.Driver)
The connection attempt failed.

at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:510)
at org.pentaho.di.core.database.Database.normalConnect(Database.java:358)
... 50 more
Caused by: org.postgresql.util.PSQLException: The connection attempt failed.
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:152)
at org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66)
at org.postgresql.jdbc2.AbstractJdbc2Connection.<init>(AbstractJdbc2Connection.java:125)
at org.postgresql.jdbc3.AbstractJdbc3Connection.<init>(AbstractJdbc3Connection.java:30)
at org.postgresql.jdbc3g.AbstractJdbc3gConnection.<init>(AbstractJdbc3gConnection.java:22)
at org.postgresql.jdbc4.AbstractJdbc4Connection.<init>(AbstractJdbc4Connection.java:32)
at org.postgresql.jdbc4.Jdbc4Connection.<init>(Jdbc4Connection.java:24)
at org.postgresql.Driver.makeConnection(Driver.java:393)
at org.postgresql.Driver.connect(Driver.java:267)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at org.pentaho.di.core.database.Database.connectUsingClass(Database.java:490)
... 51 more
Caused by: 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.writeRecord(Unknown Source)
at com.sun.net.ssl.internal.ssl.AppOutputStream.write(Unknown Source)
at java.io.BufferedOutputStream.flushBuffer(Unknown Source)
at java.io.BufferedOutputStream.flush(Unknown Source)
at org.postgresql.core.PGStream.flush(PGStream.java:523)
at org.postgresql.core.v3.ConnectionFactoryImpl.sendStartupPacket(ConnectionFactoryImpl.java:259)
at org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:105)
... 62 more
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)
... 75 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)
... 81 more

Hostname       : XXXX.com
Port           : 5432
Database name  : XXXX
连接到数据库[XXXX.com]时出错:org.pentaho.di.core.exception.cattleDatabaseException: 尝试连接到数据库时出错 连接到数据库时出错:(使用类org.postgresql.Driver) 连接尝试失败。 org.pentaho.di.core.exception.cattledatabaseexception: 尝试连接到数据库时出错 连接到数据库时出错:(使用类org.postgresql.Driver) 连接尝试失败。 位于org.pentaho.di.core.database.database.normalConnect(database.java:374) 位于org.pentaho.di.core.database.database.connect(database.java:323) 位于org.pentaho.di.core.database.database.connect(database.java:285) 位于org.pentaho.di.core.database.database.connect(database.java:275) 位于org.pentaho.di.core.database.DatabaseFactory.getconnectionestreport(DatabaseFactory.java:76) 位于org.pentaho.di.core.database.DatabaseMeta.testConnection(DatabaseMeta.java:2455) 位于org.pentaho.ui.database.event.DataHandler.testDatabaseConnection(DataHandler.java:511) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.pentaho.ui.xul.impl.AbstractXulDomContainer.invoke(AbstractXulDomContainer.java:329) 位于org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:139) 位于org.pentaho.ui.xul.impl.AbstractXulComponent.invoke(AbstractXulComponent.java:123) 位于org.pentaho.ui.xul.swt.tags.SwtButton.access$500(SwtButton.java:26) 位于org.pentaho.ui.xul.swt.tags.SwtButton$4.widgetSelected(SwtButton.java:119) 位于org.eclipse.swt.widgets.TypedListener.handleEvent(未知源) 位于org.eclipse.swt.widgets.EventTable.sendEvent(未知源) 位于org.eclipse.swt.widgets.Widget.sendEvent(未知源) 位于org.eclipse.swt.widgets.Display.runDeferredEvents(未知源) 位于org.eclipse.swt.widgets.Display.readAndDispatch(未知源) 位于org.eclipse.jface.window.window.runEventLoop(window.java:820) 位于org.eclipse.jface.window.window.open(window.java:796) 位于org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:378) 位于org.pentaho.ui.xul.swt.tags.SwtDialog.show(SwtDialog.java:304) 位于org.pentaho.di.ui.core.database.dialog.XulDatabaseDialog.open(XulDatabaseDialog.java:104) 位于org.pentaho.di.ui.core.database.dialog.DatabaseDialog.open(DatabaseDialog.java:51) 位于org.pentaho.di.ui.trans.step.BaseStepDialog$3.widgetSelected(BaseStepDialog.java:480) 位于org.eclipse.swt.widgets.TypedListener.handleEvent(未知源) 位于org.eclipse.swt.widgets.EventTable.sendEvent(未知源) 位于org.eclipse.swt.widgets.Widget.sendEvent(未知源) 位于org.eclipse.swt.widgets.Display.runDeferredEvents(未知源) 位于org.eclipse.swt.widgets.Display.readAndDispatch(未知源) 位于org.pentaho.di.ui.trans.steps.tableoutput.TableOutputDialog.open(TableOutputDialog.java:916) 位于org.pentaho.di.ui.spoon.delegates.spoonstepsdegate.editStep(spoonstepsdegate.java:126) 位于org.pentaho.di.ui.spoon.spoon.editStep(spoon.java:7733) 位于org.pentaho.di.ui.spoon.trans.incraph.editStep(incraph.java:2744) 位于org.pentaho.di.ui.spoon.trans.incraph.mouseDoubleClick(incraph.java:693) 位于org.eclipse.swt.widgets.TypedListener.handleEvent(未知源) 位于org.eclipse.swt.widgets.EventTable.sendEvent(未知源) 位于org.eclipse.swt.widgets.Widget.sendEvent(未知源) 位于org.eclipse.swt.widgets.Display.runDeferredEvents(未知源) 位于org.eclipse.swt.widgets.Display.readAndDispatch(未知源) 位于org.pentaho.di.ui.spoon.spoon.readAndDispatch(spoon.java:1169) 位于org.pentaho.di.ui.spoon.spoon.start(spoon.java:6945) 位于org.pentaho.di.ui.spoon.spoon.main(spoon.java:553) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 位于sun.reflect.NativeMethodAccessorImpl.invoke(未知源) 在sun.reflect.DelegatingMethodAccessorImpl.invoke处(未知源) 位于java.lang.reflect.Method.invoke(未知源) 位于org.pentaho.commons.launcher.launcher.main(launcher.java:134) 原因:org.pentaho.di.core.exception.cattleDatabaseexception: 连接到数据库时出错:(使用类org.postgresql.Driver) 连接尝试失败。 位于org.pentaho.di.core.database.database.connectUsingClass(database.java:510) 位于org.pentaho.di.core.database.database.normalConnect(database.java:358) ... 50多 原因:org.postgresql.util.PSQLException:连接尝试失败。 位于org.postgresql.core.v3.ConnectionFactoryImpl.openConnectionImpl(ConnectionFactoryImpl.java:152) 位于org.postgresql.core.ConnectionFactory.openConnection(ConnectionFactory.java:66) 位于org.postgresql.jdbc2.AbstractJdbc2Connection。(AbstractJdbc2Connection.java:125) 位于org.postgresql.jdbc3.AbstractJdbc3Connection。(AbstractJdbc3Connection.java:30) 位于org.postgresql.jdbc3g.AbstractJdbc3gConnection。(AbstractJdbc3gConnection.java:22) 位于org.postgresql.jdbc4.AbstractJdbc4Connection。(AbstractJdbc4Connection.java:32) 位于org.postgresql.jdbc4.Jdbc4Connection(Jdbc4Connection.java:24) 位于org.postgresql.Driver.makeConnection(Driver.java:393) 位于org.postgresql.Driver.connect(Driver.java:267) 位于java.sql.DriverManager.getConnection(未知源) 位于java.sql.DriverManager.getConnection(未知源) 在或
Caused by: sun.security.validator.ValidatorException: PKIX path building failed: 
Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
ssl = true
ssl = true
sslfactory = org.postgresql.ssl.NonValidatingFactory