我正在使用 Pentaho 数据集成 (Kettle)。我的目标是通过 HTTPS 使用现有的 REST API。为了实现这一点,我使用 pdi 提供的 REST 客户端。
在我的本地环境中,我可以使用此 API。但是,一旦我将其推送到生产服务器(redhat)并运行该作业,我就会收到与 SSL 证书相关的错误:
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
为了提供目标证书,我首先使用 keytool [in /home/user/] 将其添加到新的密钥库中:
keytool -importcert -keystore spoc.truststore -alias spoc-preprod -file cert.crt -noprompt
为了让 PDI 使用此信任库,我已经配置了其余客户端,如下所示:
在生产中推送相关转换并运行作业后,我遇到了不同的错误:
Keystore was tampered with, or password was incorrect
at org.pentaho.di.trans.steps.rest.Rest.setConfig(Rest.java:274)
at org.pentaho.di.trans.steps.rest.Rest.init(Rest.java:483)
at org.pentaho.di.trans.step.StepInitThread.run(StepInitThread.java:65)
at java.lang.Thread.run(Thread.java:662)
Caused by: java.io.IOException: Keystore was tampered with, or password was incorrect
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:771)
at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:38)
at java.security.KeyStore.load(KeyStore.java:1185)
at org.pentaho.di.trans.steps.rest.Rest.setConfig(Rest.java:249)
... 3 more
Caused by: java.security.UnrecoverableKeyException: Password verification failed
at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:769)
... 6 more
我确定我提供的密钥库的路径(如果我输入虚拟路径,则会出现文件未找到异常),并且我更确定密码。
经过两天的搜索,在网上没有发现类似的问题。这就是为什么我现在需要你的帮助:)
南斯
我知道我可能迟到了,但几天前我也遇到了同样的问题。我使用密钥库的默认密码解决了这个问题,正如这个答案所解释的那样,即
changeit
。
“C:\Program Files\Java\jre7 in\keytool” -import -alias 拼车 -keystore“C:\Program\Files\Java\jre7\lib\securit