我想在安全的nifi中使用rest api。我已经添加了 sslcontextService 与它的 trustore JKS 文件,但是当我使用带有此 url 的 invokehttp 处理器来获取 kerberos 令牌时:https://ip here/nifi-api/access/kerberos
我收到此错误:SSLPeerUndefined异常:主机名
-
在我的 jks 文件中,主题Altname 为空,这可能是一个原因 失败?
-
我也想知道在获得令牌后我可以使用它进行自动化,然后根据需要使用 rest api,或者是否有任何 我应该注意的其他科目?
在 Apache NiFi 或名为SSLPeerUndefinedException
的底层库中没有异常类。我怀疑你遇到的是SSLPeerUnverifiedException
.当远程终结点未提供证书或无法验证证书链时,将引发此异常。
您可以采取几个步骤来尝试确定问题:
- 确保您的 NiFi 实例提供的证书也在信任库中。
PrivateKeyEntry
应该装入密钥库(keystore.jks
或类似),但信任库是不同的 - 它包含包含SubjectKeyIdentifier
和各种证书指纹(MD5,SHA1,SHA-256)的trustedCertEntry
,以便它可以断言提供这些证书的服务的有效性。如果与InvokeHTTP
处理器关联的SSLContextService
无法验证 NiFi 提供的证书,则不允许连接。 - 尝试使用
curl
或其他命令行工具(如 Nipyapi)连接到 NiFi API 并验证连接。
Kerberos 票证用于身份验证- 通过知识/拥有某些秘密价值来证明您/客户是您声称的身份。授权或确定允许的操作和权限是一个单独的过程。
证书中的subjectAltName
为空可能会导致新浏览器出现问题,因为基于 RFC 6125,它说必须首先检查 SAN,但我不相信这里使用的当前版本的okhttp
库强制执行这一点。不过,您应该填充 SAN 字段以备将来兼容。