用户界面未在nifi 1.0.0安全集群中打开

时间:2016-09-23 10:54:14

标签: hortonworks-data-platform apache-nifi

尝试按照以下链接中的说明在nifi 1.0.0中构建安全群集

http://bryanbende.com/development/2016/08/17/apache-nifi-1-0-0-authorization-and-multi-tenancy

我在目标文件夹中生成了密钥库和信任库文件,来自nifi-cert.pem和nifi-key.key我生成了p12文件并将其加载到浏览器中

启动nif实例后,节点已经连接并在它们之间交换心跳信号,指定的端口正在监听它们的号码但是当我们启动UI时,它没有在浏览器中查看 enter image description here

更新: enter image description here

更新: enter image description here enter image description here

更新: enter image description here

更新: 由于org.apache.nifi.cluster.protocol.ProtocolException:响应消息类型的编组协议消息失败:由于java.net.SocketException导致CONNECTION_REQUEST:软件导致连接中止:套接字写入错误 org.apache.nifi.cluster.protocol.ProtocolException:响应消息类型的编组协议消息失败:由于java.net.SocketException导致CONNECTION_REQUEST:软件导致连接中止:套接字写入错误     在org.apache.nifi.cluster.protocol.impl.SocketProtocolListener.dispatchRequest(SocketProtocolListener.java:176)〜[nifi-framework-cluster-protocol-1.0.0.jar:1.0.0]     在org.apache.nifi.io.socket.SocketListener $ 2 $ 1.run(SocketListener.java:136)[nifi-socket-utils-1.0.0.jar:1.0.0]     在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)[na:1.8.0_91]     at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:617)[na:1.8.0_91]     在java.lang.Thread.run(Thread.java:745)[na:1.8.0_91]

1 个答案:

答案 0 :(得分:2)

您可以采取几个步骤来继续调试:

  • 启用Java TLS(SSL)调试运行NiFi。在conf/bootstrap.conf中添加行java.arg.15=-Djavax.net.debug=ssl,handshake(确保15是一个与您现有的参数列表不冲突的数字)。这将添加大量的日志输出,但将明确记录任何TLS握手协商尝试。
  • 使用OpenSSL s_client工具调试连接。运行以下命令将尝试与其他日志输出进行握手协商:$ openssl s_client -connect <host:port> -debug -state -cert <path_to_your_cert.pem> -key <path_to_your_key.pem> -CAfile <path_to_your_CA_cert.pem>
    • 将您的服务器替换为<host:port>
    • 替换<path_to_your_cert.pem>
    • 的公钥证书
    • 将您的私钥替换为<path_to_your_key.pem>
    • <path_to_your_CA_cert.pem>替换服务器的公钥证书或CA公钥证书 您可以使用以下命令从PKCS12密钥库中提取公钥证书和私钥
      • 解压缩私钥:$ openssl pkcs12 -in CN\=Andy_LoPresto_OU\=Apache_NiFi.p12 -nocerts -out client.key
      • 提取公钥:$ openssl pkcs12 -in CN\=Andy_LoPresto_OU\=Apache_NiFi.p12 -clcerts -nokeys -out client.pem

正如@ bryan-bende上面指出的那样,您共享的浏览器屏幕截图中的错误消息似乎表明由于协议版本不兼容而无法协商TLS密码套件。上面的命令将输出所有可用的连接密码套件。您还可以使用CipherScan之类的工具明确枚举这些工具。

一个可能的问题是Java 7默认为TLS 1.0,Java 8默认为TLS 1.2。您使用什么操作系统和JRE来托管NiFi?

在极少数情况下,用户使用实际上不包含RSA密钥的密钥库部署NiFi,并且TLS握手协商失败,因为&#34;没有密码套件可用&#34;,当问题确实是全部可用的密码套件需要RSA密钥(如果不加密实际的信道数据,至少要对临时密钥进行签名)。您能否验证您提供的密钥库NiFi是否具有有效(检查日期)私钥?

希望这些步骤可以帮助您诊断问题。如果您能提供更多信息,我们很乐意与您合作进一步调查。