首页 > 解决方案 > 保护 minifi c++ 代理免受远程 NIFI

问题描述

我有一个远程 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

标签: apache-nifiapache-minifi

解决方案


有很多方法可以生成 X.509 证书并对其进行签名(opensslTinyCertLet's EncryptNiFi TLS Toolkit等)。重要的要求是证书要么是显式信任的(公共证书被导入到 NiFi 信任库中),要么是隐式信任的(签名链中的任何公共证书都存在于 NiFi 信任库中)。

一种方法是按照演练部署安全 NiFi 集群并使用 TLS 工具包生成客户端密钥库,然后使用这些命令将证书和密钥从该密钥库导出为 PEM 格式


推荐阅读