我通过运行以下命令启用了NiFi中的TLS,
nifi-toolkit/nifi-toolkit-assembly/target/nifi-toolkit-1.4.0-SNAPSHOT-bin/nifi-toolkit-1.4.0-SNAPSHOT/bin/tls-toolkit.sh standalone -n "{my-ip},localhost" -C 'CN={my-ip}' -C 'CN=localhost' -o ./certs
这会在目录certs
下创建TLS所需的文件。
我将目录certs
下的文件移动到我机器中部署的conf
文件夹中。
将证书安装到我的机器Keychain Access
。
现在使用bin/nifi.sh start
启动服务器。我的服务器启动,我能够点击服务器,但我的请求未经授权。
我收到以下错误,
未获得所请求资源的授权。联系系统 管理员。
答案 0 :(得分:3)
在Apache NiFi中启用TLS后,默认情况下不再启用匿名访问。您需要以用户身份进行身份验证才能访问UI / API。有三种身份验证机制可用 - 客户端证书,LDAP或Kerberos。在$NIFI_HOME/conf/authorizers.xml
中配置初始管理员标识后(这将是您在TLS Toolkit命令中发出的客户端证书的确切CN),该用户可以验证并使用用户管理工具在NiFi中添加额外的用户。
您可以在NiFi Admin Guide中找到更多信息。布莱恩本德也写了detailed walkthrough of the process。
关于您在上面发布的命令的一个注意事项 - 我不确定您的所需输出是什么,但该命令是为my-ip
颁发服务器证书而另一个为hostname
颁发服务器证书,但随后是两个客户端具有这些DN的证书。通常,您需要hostname
的服务器证书(可能包含my-ip
的SAN条目),以及具有CN=alopresto, OU=Apache NiFi
等DN的客户端证书。
例如:
./bin/tls-toolkit.sh standalone
-n 'nifi.nifi.apache.org'
--subjectAlternativeNames '123.234.234.123'
-C 'CN=alopresto, OU=Apache NiFi'
-P password
-S password
-B password
-f ...conf/nifi.properties
-o ...conf/