Java 集群中的分布式 Java 应用程序
Distributed Java Application inside docker swarm
我的目标是 运行 docker 容器内的分布式 NIFI 集群 docker 集群。我对官方 NIFI docker 图像所做的配置以我能够 运行 集群的方式工作。
对于集群,我使用单个服务,每个副本都是一个单独的 NIFI 实例。由于这有效,我现在想继续安全。我首先使用秘密(移交信任库和密钥库)将公开签名的通配符证书应用到 java 应用程序。在我看来,对于大多数分布式 java 应用程序来说,这可能是一种可行的方法。但是对于 NIFI,我现在遇到了 NIFI 本身不支持通配符证书的问题。
我目前正在考虑如何以每个容器都有自己的证书的方式 运行 集群。我目前的想法是 运行 使用 NIFI JVM 可以信任的自管理内部 CA 在容器内自签名证书。由于我不是 100% 确定这是否是解决此问题的正确方法,我感谢您的提示和想法。
NIFI 使用一些端口进行通信,并使用 HTTP/S 协议发出请求。 NIFI 本身 运行 作为 java 在 nodes/containers 上的应用。
Apache NiFi 提供了一个 TLS Toolkit 可以为您自动完成大部分流程。它可以 运行 一个临时或长期存在的内部证书颁发机构 (CA),它生成内部密钥并使用它们创建自签名 CA 证书并签署传入的证书签名请求 (CSR)。每个上线的节点都可以访问 CA 服务并在其密钥库和信任库中安装正确配置的证书,并通过单个命令行调用自动将这些文件的位置和密码填充到 nifi.properties
文件中.这可以在部署时通过 Dockerfile、Ruby/Python/shell 脚本等配置为 运行。
HMAC/SHA-256 签名是使用共享秘密令牌值在 SPKI 上计算的,以确保 rogue/malicious 服务不会获得颁发的证书。所有证书都将由同一个 CA 证书签名,并且该证书已填充到信任库中,因此集群中的每个节点都将信任其他节点。请求的 CN 也填充在 SAN 条目中,并且支持其他 SAN 条目,因此这符合 RFC 6125。
如上所述,不支持也不推荐通配符证书,出于一连串的原因 (some enumerated here) but also because a more secure deployment of unique certificates is made easy using the provided toolkit. There are ongoing efforts (NIFI-5443, NIFI-5398) 修改一些内部集群通信以在面对通配符证书时具有弹性,但这些不是目前可用。
我的目标是 运行 docker 容器内的分布式 NIFI 集群 docker 集群。我对官方 NIFI docker 图像所做的配置以我能够 运行 集群的方式工作。
对于集群,我使用单个服务,每个副本都是一个单独的 NIFI 实例。由于这有效,我现在想继续安全。我首先使用秘密(移交信任库和密钥库)将公开签名的通配符证书应用到 java 应用程序。在我看来,对于大多数分布式 java 应用程序来说,这可能是一种可行的方法。但是对于 NIFI,我现在遇到了 NIFI 本身不支持通配符证书的问题。
我目前正在考虑如何以每个容器都有自己的证书的方式 运行 集群。我目前的想法是 运行 使用 NIFI JVM 可以信任的自管理内部 CA 在容器内自签名证书。由于我不是 100% 确定这是否是解决此问题的正确方法,我感谢您的提示和想法。
NIFI 使用一些端口进行通信,并使用 HTTP/S 协议发出请求。 NIFI 本身 运行 作为 java 在 nodes/containers 上的应用。
Apache NiFi 提供了一个 TLS Toolkit 可以为您自动完成大部分流程。它可以 运行 一个临时或长期存在的内部证书颁发机构 (CA),它生成内部密钥并使用它们创建自签名 CA 证书并签署传入的证书签名请求 (CSR)。每个上线的节点都可以访问 CA 服务并在其密钥库和信任库中安装正确配置的证书,并通过单个命令行调用自动将这些文件的位置和密码填充到 nifi.properties
文件中.这可以在部署时通过 Dockerfile、Ruby/Python/shell 脚本等配置为 运行。
HMAC/SHA-256 签名是使用共享秘密令牌值在 SPKI 上计算的,以确保 rogue/malicious 服务不会获得颁发的证书。所有证书都将由同一个 CA 证书签名,并且该证书已填充到信任库中,因此集群中的每个节点都将信任其他节点。请求的 CN 也填充在 SAN 条目中,并且支持其他 SAN 条目,因此这符合 RFC 6125。
如上所述,不支持也不推荐通配符证书,出于一连串的原因 (some enumerated here) but also because a more secure deployment of unique certificates is made easy using the provided toolkit. There are ongoing efforts (NIFI-5443, NIFI-5398) 修改一些内部集群通信以在面对通配符证书时具有弹性,但这些不是目前可用。