如何连接到docker容器中的安全NiFi注册表?

如何连接到docker容器中的安全NiFi注册表?,docker,apache-nifi,apache-nifi-registry,Docker,Apache Nifi,Apache Nifi Registry,我在docker中有一个安全Nifi注册表的实例。我可以访问它的UI,但不能通过NiFi实例访问它。在注册表客户端部分添加注册表url并尝试访问其存储桶后,我看到以下错误: Unable to obtain listing of buckets: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address

我在docker中有一个安全Nifi注册表的实例。我可以访问它的UI,但不能通过NiFi实例访问它。在注册表客户端部分添加注册表url并尝试访问其存储桶后,我看到以下错误:

Unable to obtain listing of buckets: javax.net.ssl.SSLHandshakeException: java.security.cert.CertificateException: No subject alternative names matching IP address 172.17.0.5 found
172.17.0.5是docker网络中的Nifi注册表ip地址

我添加了一个对Nifi注册表具有完全权限的用户,其DN:
CN=localhost,OU=Nifi
,如本教程所述:

这是我用来运行容器的命令:

docker run --name nifi -v $(pwd):/opt/certs -p 8443:8443 \
-e AUTH=tls \
-e KEYSTORE_PATH=/opt/certs/keystore.jks \
-e KEYSTORE_TYPE=JKS \
-e KEYSTORE_PASSWORD='Ey0btN5duTeyBv1sVuy+1twPpYNgeoox47iwLwSSx5U' \
-e TRUSTSTORE_PATH=/opt/certs/truststore.jks \
-e TRUSTSTORE_PASSWORD='dSjZjfFQDVNG/p6U6ad7n90dZxd2EJK4W18JM02w9BM' \
-e TRUSTSTORE_TYPE=JKS -e INITIAL_ADMIN_IDENTITY='CN=AdminUser, OU=nifi' \
apache/nifi:latest
这是toolkit命令:

./tls-toolkit.sh standalone -n 'localhost' -C 'CN=AdminUser, OU=nifi' -o './target'
如何通过nifi实例访问安全注册表

无法获取存储桶列表:javax.net.ssl.SSLHandshakeException:java.security.cert.CertificateException:未找到与IP地址172.17.0.5匹配的主题替代名称

我已经有一段时间没有使用NiFi TLS工具包了,但是您生成了一个名为
localhost
的证书,并且在这里尝试对容器的IP地址执行SSL请求。您需要做的几件事:

  • 将两个容器放置在具有彼此已知的主机名的同一网络上。通过Docker Compose,只需声明两个容器并在注册表中添加一个指向nifi容器的
    链接,就很容易做到这一点
  • 为NiFi和使用docker主机名的注册表生成证书,就像您调用注册表“Registry”并可以在docker网络上对该主机名进行ping一样,“CN=Registry,OU=…”就足够了

  • NiFi和注册表是否使用同一组密钥库文件?是否使用docker compose?向我们展示配置。我建议看一下此视频:。为NiFi和NiFi注册表生成证书时,请注意设置与客户端(如NiFi)用于访问服务器(如NiFi注册表)的主机名或IP地址相匹配的使用者备选名称(SAN)。如果两者都在Docker网络上的容器中运行,则这可能是一个不同的主机名,而不是通过端口映射访问这些服务的主机名。可选名称和域名不应是ip地址,而应是主机名。NiFi不建议使用基于ip的证书。尝试使用您为服务器设置的任何主机名,并修改本地主机文件。AFAIK这是唯一的方法。可能有,但我不知道。很抱歉
    ./tls-toolkit.sh standalone -n 'localhost' -C 'CN=AdminUser, OU=nifi' -o './target'