我有一个带有 3 个节点的安全集群 NIFI,配置了 truststore.jks 和 keystore.jks
在我的invokeHTTP 中,我为https 设置了带有 keystore 和信任库的“StandardSSLContextService”。
因此,当我尝试使用 invokeHTTP 获取 token 但失败并出现此错误时:
sun.security.validator.ValidatorException: PKIX path building failed:
sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
感谢您的帮助
最佳答案
StandardSSLContextService
可以配置信任库,即 Java KeyStore
包含 TrustedCertEntry
集合的对象对象——每个对象都持有可信实体的公钥和证书信息。当 Apache NiFi 尝试通过 HTTPS 联系某些其他端点或服务时,它会评估接收到的识别服务的证书并尝试验证该证书。如果端点证书不直接包含在信任库中,它会检查哪个证书签署了叶证书,并验证那个证书。此过程继续沿证书链向上,直到找到受信任的证书或没有证书。
您收到的错误消息指出无法验证链中的任何证书。正如 daggett 指出的那样,您可以手动将要验证的服务证书导入自定义信任库。如果这是公共(public) Internet 上提供的服务并由普遍信任的证书颁发机构 (CA) 签名,您也可以指向您的 StandardSSLContextService
到 Java 提供的默认列表。 cacerts
truststore 会自动包含在内,并且具有与现代浏览器类似的受信任条目列表。它位于 $JAVA_HOME/jre/lib/security/cacerts
.您可以确定 $JAVA_HOME
的值适用于您的操作系统和 Java 版本。
/Library/Java/JavaVirtualMachines/jdk1.8.0_101.jdk/Contents/Home/jre/lib/security/cacerts
(示例)changeit
(默认值)JKS
关于ssl-certificate - APACHE NIFI 调用HTTP 获取 token 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45916412/