问题描述
我有一个远程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信任库中。
一种方法是遵循walkthrough for deploying a secure NiFi cluster并使用TLS工具包生成客户端密钥库,然后生成export the certificate and key from that keystore to PEM format using these commands。