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