针对远程NIFI保护minifi c ++代理

问题描述

我有一个远程3节点安全NIFI服务器,我想通过MINIFI C ++代理向其中发送一些数据。我试图了解为MINIFI(客户端)生成和签署证书的机制,但是我找不到详细的文档。

我看到以下配置:

#nifi.security.need.ClientAuth=
#nifi.security.client.certificate=
#nifi.security.client.private.key=
#nifi.security.client.pass.phrase=
#nifi.security.client.ca.certificate=

但是如何生成client.pem并对其进行签名?

编辑: 这是我试图做的(自签名),但是失败了:

[2020-08-14 07:19:08.872] [org::apache::nifi::minifi::utils::HTTPClient] [error] curl_easy_perform() Failed SSL connect error

[2020-08-14 07:19:08.872] [org::apache::nifi::minifi::RemoteProcessorGroupPort] [error] ProcessGroup::refreshRemoteSite2SiteInfo -- curl_easy_perform() Failed 
cd $HOME
openssl req -new -newkey rsa:4096 -nodes -keyout machine.key -out machine.csr
openssl x509 -req -sha256 -days 365 -in machine.csr -signkey machine.key -out machine.pem

###
Downloaded the public certificate from the server into ---> $HOME/server.crt


nifi.security.need.ClientAuth=true
nifi.security.client.certificate=$HOME/machine.pem
nifi.security.client.private.key=$HOME/machine.key
nifi.security.client.pass.phrase=password
nifi.security.client.ca.certificate=$HOME/server.crt

解决方法

有很多方法可以生成X.509证书并对其进行签名(opensslTinyCertLet's EncryptNiFi TLS Toolkit等)。重要的要求是证书必须是明确受信任的(将公共证书导入到NiFi信任库中)或隐含受信任的(签名链中的任何公共证书都是出现在NiFi信任库中。

一种方法是遵循walkthrough for deploying a secure NiFi cluster并使用TLS工具包生成客户端密钥库,然后生成export the certificate and key from that keystore to PEM format using these commands