apache-nifi - 保护 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
解决方案
有很多方法可以生成 X.509 证书并对其进行签名(openssl、TinyCert、Let's Encrypt、NiFi TLS Toolkit等)。重要的要求是证书要么是显式信任的(公共证书被导入到 NiFi 信任库中),要么是隐式信任的(签名链中的任何公共证书都存在于 NiFi 信任库中)。
一种方法是按照演练部署安全 NiFi 集群并使用 TLS 工具包生成客户端密钥库,然后使用这些命令将证书和密钥从该密钥库导出为 PEM 格式。
推荐阅读
- batch-file - 如何从循环内部设置全局变量
- xamarin.forms - Xamarin Forms 从 GridLength Star 或 Auto 获取绝对值
- firebase - 在 Firestore 中查询具有类型引用的文档
- ionic-framework - _co.gotoArchivePage 不是函数
- c# - UWP IoT 如何添加自定义字体
- c# - 在 Linux 上使用单声道的 C# 代码的 CIL 级调试器
- selenium - selenium 网格 Safari 替代方案(Docker 节点)?
- java - 我在编写阶乘程序时遇到困难
- html - 如何删除 h1 上方的空格?
- python - 执行在 python 中创建的应用程序时出现致命的 Python 错误