NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)

官网连接:Apache NiFi 文档

概述-翻译官网

当发送数据从一个NIFI示例到另一个NIFI实例,此处可以使用很多不同的协议。这个首选协议,尽管,是NIFI 的点对点协议,“站点到站点(点对点)”使安全高效地将数据从一个NiFi实例或数据生成应用程序中的节点传输到另一个NiFi实例或其他消费应用程序中。

使用“站点到站点” 的好处如下:

  • 更容易配置

    • 输入远程NiFi实例/集群的URL后,将自动发现可用端口(端点)并在下拉列表中提供。
  • 安全性
    • “站点到站点”可以选择使用证书来加密数据并提供身份验证和授权。每个端口都可以配置为仅允许特定用户,只有这些用户才能看到端口是否存在。有关配置证书的信息,请参阅《系统管理员指南》的“安全配置”部分。
  • 可扩展性
    • 当远程集群中的节点发生变化时,这些变化会被自动检测到,并且数据会跨集群中的所有节点进行扩展。
  • 有效率性
    • “站点到站点”允许一次发送一批FlowFiles,以避免在对等端之间建立连接和进行多次往返请求的开销。
  • 可靠性
    • ReliableChecksum由发送方和接收方自动生成,并在数据传输后进行比较,以确保未发生损坏。如果校验和不匹配,交易将被取消并重试。
  • 自动负载平衡
    • 当节点联机或退出远程集群,或者节点的负载变重或变轻时,将自动调整指向该节点的数据量。
  • FlowFiles维护属性
    • 当通过此协议传输FlowFile时,FlowFile的所有属性都会随之自动传输。这在许多情况下都是非常有利的,因为NiFi的一个实例所确定的所有上下文和丰富性都会随数据一起传输,从而便于数据的路由,并允许用户轻松检查数据。
  • 适应性
    • 随着新技术和新思想的出现,处理站点到站点通信的协议可以随之改变。当连接到远程NiFi实例时,执行握手以协商将使用哪个协议和哪个版本的协议。这允许添加新功能,同时仍保持与所有旧实例的向后兼容性。此外,如果在协议中发现了漏洞或缺陷,则允许更新版本的NiFi禁止通过协议的受损版本进行通信。

“站点到站点” 在两个NIFI 实例之间传输数据,也可以NIFI单节点和NIFI 集群传输协议。在本节中,NiFi实例启动通信,称为“站点到站点”客户端NiFi,另一端为“站点到站点”服务器NiFi示例,以阐明每个NiFi服务器需要什么配置。

一个NIFI 实例即可作为“站点到站点”客户端也可作为“站点到站点”服务器,但是,它只能是特定站点到站点通信中的客户端或服务器。例如,如果有三个NiFi实例A、B和C。A将数据推送给B,B从C中提取数据。A — 推→ B← 拉 — C、 那么B不仅是a和B之间通信的服务器,也是B和C之间的客户端。

为了设计数据流并相应地配置每个实例,了解哪个NiFi实例将是客户端或服务器非常重要。以下是根据数据流方向在哪一侧运行的组件的摘要:

  • Push:客户端向远程进程组(Remote Process Group)发送数据,服务器通过输入端口( Input Port)接收数据
  • Pull:客户端接收来自远程进程组(Remote Process Group)的数据,服务器通过输出端口(Output Port)数据。

以上是说 Inport Port 和 Output Port

配置“站点到站点”客户端NIFI 实例-翻译官网

远程进程组(Remote Process Group):为了通过站点到站点与远程NiFi实例进行通信,只需将远程进程组拖到画布上并输入远程NiFi实例的URL(有关远程进程组组件的更多信息,请参阅本指南的远程进程组传输部分)。)该URL与用于访问该实例的用户界面的URL相同,如果是集群,则是集群节点的URL。此时,您可以将连接拖到远程进程组或从远程进程组拖到处理器或本地进程组的方式相同。拖动连接时,您将有机会选择要连接的端口。请注意,远程进程组可能需要一分钟的时间来确定哪些端口可用。

如果从远程进程组开始拖动连接,则显示的端口将是远程组的输出端口,因为这表明您将从远程实例中提取数据。如果连接在远程进程组上结束,则显示的端口将是远程组的输入端口,这意味着您将向远程实例推送数据。

如果远程实例被配置为使用安全数据传输,则您将只看到授权与之通信的端口。有关将NiFi配置为安全运行的信息,请参阅《系统管理员指南》。

传输协议:在远程进程组创建或配置对话框中,可以选择用于站点到站点通信的传输协议,如下图所示:

配置“站点到站点”服务器端NIFI 实例-翻译官网

检索站点到站点的详细信息:如果您的NiFi正在安全运行,为了让另一个NiFi实例从您的实例检索信息,需要将其添加到全局访问“检索站点到网站的详细信息”策略中。这将允许另一个实例查询您的实例的详细信息,例如名称、描述、可用对等节点(集群时的节点)、统计信息、OS端口信息以及可用的输入和输出端口。在安全实例中使用输入和输出端口需要额外的策略配置,如下所述。

输入端口:为了允许另一个NiFi实例将数据推送到本地实例,您只需将输入端口拖到画布的根进程组上。输入端口名称后,它将添加到流中。现在,您可以右键单击输入端口并选择Configure(配置),以调整端口使用的并发任务的名称和数量。

要在子进程组中为站点到站点创建输入端口,请输入端口名称,然后从“接收自”下拉菜单中选择“远程连接(站点到站点)”。

如果将站点到站点配置为安全运行,则需要管理输入端口的“通过站点到站点接收数据”组件访问策略。只有已添加到策略的用户才能与端口通信。

输出端口:与输入端口类似,DataFlow Manager可以选择将输出端口添加到根进程组。输出端口允许授权的NiFi实例远程连接到您的实例并从输出端口提取数据。将输出端口拖到画布上后,右键单击并选择“配置”以调整名称和允许的并发任务数。管理输出端口的“通过站点到站点接收数据”组件访问策略,以控制哪些用户有权从正在配置的实例中提取数据。

要在子进程组中为站点到站点创建输出端口,请输入端口名称,然后从发送到下拉菜单中选择“远程连接(站点到站点)”。

安全配置说明-翻译官网

这些属性与NiFi中的各种安全功能有关。本管理员指南的“安全配置”部分将更详细地介绍其中的许多属性。

  • nifi.sensitive.props.key:这是用于加密处理器中配置的任何敏感属性值的密码。默认情况下,它为空,但是统管理员应为其提供一个值。它可以是任何长度的字符串,尽管建议的最小长度为10个字符。请注意,一旦设置了此密码并且配置了一个或多个敏感处理器属性,就不应更改此密码。
  • nifi.sensitive.props.algorithm:用于加密敏感属性的算法。默认值为NIFI_PBKDF2_AES_GCM_256。
  • nifi.sensitive.props.additional.keys:除默认敏感属性外,nifi.properties中要加密的属性的逗号分隔列表(请参阅配置文件中的加密密码)。
  • nifi.security.autoreload.enabled:指定如果检测到密钥库和信任库的更新,是否应自动重新加载SSL上下文工厂。默认情况下,它设置为false。
  • nifi.security.autoreload.interval:指定检查密钥库和信任库更新的间隔。仅当nifi.security.autoreload.enabled设置为true时适用。默认值为10秒。
  • nifi.security.keystore*:密钥库的完整路径和名称。默认值为/conf/keystore.p12。
  • nifi.security.keystoreType:密钥库类型。默认为 PKCS12。
  • nifi.security.keystorePasswd:密钥库密码。默认为空。
  • nifi.security.keyPasswd:密钥密码。默认为空。
  • nifi.security.truststore*:信任库的完整路径和名称。默认值为/conf/truststore.p12。
  • nifi.security.truststoreType:信任存储类型。默认值为PKCS12。
  • nifi.security.truststorePasswd:信任库密码。默认为空。
  • nifi.security.user.authorizer:指定要使用Authorizers.xml文件中配置的授权器。默认情况下,它设置为单用户授权器。
  • nifi.security.allow.anonymous.authentication:在HTTPS上运行时是否允许匿名身份验证。如果设置为true,则无需客户端证书即可通过TLS进行连接。默认值为false。
  • nifi.security.user.login.identity.provider:站点到站点和反向代理示例这指示要使用的登录标识提供程序的类型。可以将其设置为nifi.login.identity.provider.configuration.file中指定的文件中提供程序的标识符。设置此属性将触发nifi以支持用户名/密码身份验证。默认值为单用户提供程序。
  • nifi.security.ocsp.responder.url:这是联机证书状态协议(OCSP)响应程序(如果正在使用)的URL。默认为空。
  • nifi.security.ocsp.responder.certificate:这是OCSP响应者证书(如果正在使用)的位置。默认为空。

一旦配置了下述属性,我们就可以通过HTTPS而不是HTTP访问用户界面。这是通过设置nifi.web.https.host和nifi.web.https.port属性来实现的。nifi.web.https.host属性指示服务器应在哪个主机名上运行。如果需要从所有网络接口访问https接口,则应使用值0.0.0.0。要允许管理员将应用程序配置为仅在特定网络接口上运行,可以指定nifi.web.http.network.interface或nifi.web.http.nework.interface属性。

nifi.security.keystore:包含服务器私钥的Keystore的文件名。

nifi.security.keystoreType:Keystore的类型。必须是PKCS12或JKS或BCFKS。JKS是首选类型,BCFKS和PKCS12文件将与BouncyCastle提供程序一起加载。

nifi.security.keystorePasswd:Keystore的密码。

nifi.security.keyPasswd:Keystore中证书的密码。如果未设置,将使用nifi.security.keyPasswd的值。

nifi.security.truststore:用于授权连接到NiFi的用户的Truststore的文件名。没有Truststore的安全实例将拒绝所有传入连接。

nifi.security.truststoreType:Truststore的类型。必须是PKCS12或JKS或BCFKS。JKS是首选类型,BCFKS和PKCS12文件将与BouncyCastle提供程序一起加载。

nifi.security.truststorePasswd:Truststore的密码。

注意:启用HTTPS时,必须取消设置nifi.web.http.port属性。NiFi仅支持在HTTP或HTTPS上运行,而不是同时运行。

如果未配置需要单向SSL(例如LDAP、OpenId Connect等)的替代身份验证机制,NiFi的web服务器将需要为访问用户界面的用户提供基于证书的客户端身份验证。启用另一种身份验证机制将配置web服务器以进行基于证书的客户端身份验证。这将允许它支持具有证书的用户,而没有证书的用户可能使用凭据登录。有关详细信息,请参阅用户身份验证。

现在,用户界面已经得到了保护,我们可以轻松地保护站点到站点的连接和内部集群通信。这是通过将nifi.remote.input.secure和nifi.cluster.protocol.is.secure属性分别设置为true来实现的。这些通信将始终需要双向SSL,因为节点将使用其配置的密钥库/信任库进行身份验证。

可以使用以下属性启用NiFi web SSL上下文工厂的自动刷新:

  • nifi.security.autoreload.enabled:指定如果检测到密钥库和信任库的更新,是否应自动重新加载SSL上下文工厂。默认情况下,它设置为false。
  • nifi.security.autoreload.interval:指定检查密钥库和信任库更新的间隔。仅当nifi.security.autoreload.enabled设置为true时适用。默认值为10秒。

一旦nifi.security.autoreload.enabled属性设置为true,对配置的密钥库和信任库的任何有效更改都将导致重新加载nifi的SSL上下文工厂,从而允许客户端获取更改。这是为了允许在密钥库中更新过期证书,并在信任库中添加新的受信任证书,而无需重新启动NiFi服务器。

对nifi.security.keystore或nifi.security.truststore属性的任何更改都不会被自动刷新逻辑获取,自动刷新逻辑假定密码和存储路径保持不变。

Apache NiFi Toolkit 简介

NiFi工具包包含几个命令行实用程序,用于在独立和集群环境中设置和支持NiFi。实用程序包括:

  • CLI

    cli工具使管理员能够与NiFi和NiFiRegistry实例交互,以自动化任务,如部署版本化的流和管理流程组和集群节点。

  • Encrypt Config

    加密配置工具对nifi.properties文件中的敏感密钥进行加密,以便于设置安全的nifi实例。

  • File Manager

    文件管理器工具使管理员能够从备份中备份、安装或还原NiFi安装。

  • Flow Analyzer

    流量分析器工具生成一份报告,帮助管理员了解给定流量的最大背压数据量。

  • Node Manager

    节点管理器工具使管理员能够对节点执行状态检查,并能够连接、断开或从集群中删除节点。

  • Notify

    通知工具使管理员能够向NiFi UI发送公告。

  • S2S

    s2s工具使管理员能够在站点间将数据发送到NiFi流或从NiFi流出。

  • TLS Toolkit

    tls工具包实用程序生成所需的密钥库、信任库和相关配置文件,以便于设置安全的NiFi实例。

  • ZooKeeper Migrator

    zk migrator工具使管理员能够:

    • 将ZooKeeper信息从一个ZooKeeber集群移动到另一个

    • 迁移ZooKeeper节点所有权

以上这些实用程序是使用NiFiToolkit安装的bin文件夹中的脚本执行的。

NiFi工具包与NiFi分开下载(请参阅Apache NiFi下载页面)。

在安全环境中运行的先决条件

对于安全节点和群集,应预先配置两个策略:

  • 访问控制器–应通过创建具有查看和修改权限的“访问控制器”策略(/controller),在NiFi中授权将访问这些实用程序的用户。
  • 代理用户请求–如果之前未设置,则应授权节点的身份(节点证书的DN值)代表用户代理请求。

在安全环境中执行Notify或Node Manager工具时,应使用proxyDN标志选项,以便正确识别授权执行这些命令的用户。在非安全环境中,或者如果在Node Manager工具上运行状态操作,则忽略该标志

TLS 生成工具包(TLS Toolkit)

为了方便NiFi的安全设置,您可以使用tls工具包命令行实用程序自动生成所需的密钥库、信任库和相关配置文件。这对于保护多个NiFi节点尤其有用,这可能是一个繁琐且容易出错的过程。有关详细信息,请参阅《NiFi工具包指南》中的TLS工具包部分。相关主题包括:

  • Wildcard Certificates

  • Operation Modes: Standalone and Client/Server

  • Using An Existing Intermediate Certificate Authority

  • Additional Certificate Commands

通配符证书

通配符证书通配符证书(即两个节点node1.nifi.apache.org和node2.nifi.acche.org被分配了相同的证书,其CN或SAN条目为*.nifi.aapache.org)不受官方支持,也不建议使用。使用通配符证书有很多缺点,在以前的版本中,使用通配符证书的集群是出于幸运的意外,而不是有意支持。如果每个证书都维护一个额外的唯一SAN条目和CN条目,则可以接受通配符SAN条目。

通配符证书的潜在问题

  • 在整个代码库的许多地方,集群通信多次使用证书标识来标识节点,如果证书只是提供了一个通配符DN,则无法解析到特定节点
  • 管理员可能需要在authorizers.xml中为*.nifi.apache.org提供自定义节点标识,因为所有代理操作都只能解析为证书DN(有关详细信息,请参阅《系统管理员指南》中的“用户身份验证”部分)
  • 管理员无法跟踪哪个节点执行了操作,因为他们都解析为相同的DN
  • 在同一台机器上运行多个实例的管理员使用不同的端口来标识它们,可能会意外地将node1主机名与node2端口放在一起,因为它使用的是同一个证书,所以地址会很好地解析,但是主机头处理程序会阻止它,因为node1主机名称(正确地)没有列为node2实例的可接受主机
  • 如果通配符证书被破坏,则所有节点都被破坏

建议将JKS密钥库和信任库用于NiFi。此工具允许在命令行上指定其他密钥库类型,但将忽略用作信任库的PKCS12类型,因为该格式在BouncyCastle和Oracle实现之间存在一些兼容性问题。

操作模式(Operation Modes)

tls工具包命令行工具有两种主要操作模式:

  • 独立 — 在一个命令中生成证书颁发机构、密钥库、信任库和nifi.properties文件。
  • 客户端/服务器 — 使用证书颁发机构服务器,该服务器接受来自客户端的证书签名请求,对其进行签名,并将生成的证书发送回。客户端和服务器都通过共享密钥验证对方的身份。

Standalone(独立模式)

通过运行调用独立模式/bin/tls-tooolkit.sh单机版或bin\tls-tooolKit.sh单机版。

Usage

显示帮助:

./bin/tls-toolkit.sh standalone -h

以下是可用选项:

  • -a、 --keyAlgorithm用于生成密钥的算法(默认值:RSA)
  • –additionalCACertificate<arg>PEM格式的附加CA证书(用于签署工具包CA证书)的路径(如果需要)
  • -B、 --clientCertPassword<arg>客户端证书的密码。每个客户端DN必须为一个值或一个值(如果未指定,则自动生成)
  • -c、 --certificateAuthorityHostname<arg>NiFi证书颁发机构的主机名(默认值:localhost)
  • -C、 --clientCertDn<arg>生成适合在具有指定DN的浏览器中使用的客户端证书(可以多次指定)
  • -d、 --days<arg>颁发证书的有效天数(默认值:825)
  • -f、 --nifi.propertiesFile<arg>要更新的基本nifi.properties文件(如果未指定,将使用与默认nifi安装中相同的嵌入文件)
  • -g、 --differentKeyAndKeystorePasswords为密钥和密钥库使用不同的生成密码
  • -G、 --globalPortSequence<arg>使用根据提供的主机名表达式为所有主机计算的顺序端口(可以多次指定,从运行到运行必须相同)
  • -h、 --help打印帮助并退出。
  • -k、 --keySize生成密钥的位数(默认值:2048)
  • -K、 --keyPassword要使用的密钥密码。必须为一个值或每个主机一个(如果未指定,则自动生成)
  • -n、 --主机名以逗号分隔的主机名列表
  • –nifiDnPrefix<arg>在确定DN(默认值:CN=)时附加到主机名的字符串
  • –nifiDnSufffix<arg>确定DN时要附加到主机名的字符串(默认值:,OU=NIFI)
  • -o、 --outputDirectory输出密钥库、信任库和配置文件的目录(默认值:…/bin)
  • -O、 --isOverwrite覆盖现有主机输出
  • -P、 --trustStorePassword要使用的密钥存储密码。必须为一个值或每个主机一个(如果未指定,则自动生成)
  • -s、 --signingAlgorithm<arg>用于签名证书的算法(默认值:SHA256WITHRSA)
  • -S、 --keyStorePassword要使用的密钥存储密码。必须为一个值或每个主机一个(如果未指定,则自动生成)
  • –subjectAlternativeNames<arg>在证书中用作主题替代名称的域的逗号分隔列表
  • -T、 --keyStoreType要生成的密钥库类型(默认值:jks)

“Hostname”和“Subject Alternative Name”模式:

  • 可以使用方括号方便地指定主机名或主题替代名称的范围。示例:[01-20]
  • 可以使用括号指定在给定主机上运行多个NiFi实例。示例:(5)

例子:

为localhost创建4组密钥库、信任库和nifi.properties,以及具有给定DN的客户端证书:

bin/tls-toolkit.sh standalone -n 'localhost(4)' -C 'CN=username,OU=NIFI'## windows 系统
.\tls-toolkit.bat standalone -n 'localhost(4)' -C 'CN=username,OU=NIFI'

为4个子域中的每个子域中的10个nifi主机名创建密钥库、信任库和nifi.properties:

bin/tls-toolkit.sh standalone -n 'nifi[01-10].subdomain[1-4].domain'
## windows 系统,在命令行中执行.\tls-toolkit.bat standalone -n 'nifi[01-10].subdomain[1-4].domain'

为4个子域中的每个子域中的10个nifi主机名创建2组密钥库、信任库和nifi.properties,以及具有给定DN的客户端证书:

bin/tls-toolkit.sh standalone -n 'nifi[01-10].subdomain[1-4].domain(2)' -C 'CN=username,OU=NIFI'## windows,在命令行中执行
.\tls-toolkit.bat standalone -n 'nifi[01-10].subdomain[1-4].domain(2)' -C 'CN=username,OU=NIFI'

具有一系列主题替换名称的同一命令:

bin/tls-toolkit.sh standalone -n 'nifi[01-10].subdomain[1-4].domain(2)' -C 'CN=username,OU=NIFI' --subjectAlternativeNames 'nifi[21-30].other[2-5].example.com(2)'## windows,在命令行中执行
.\tls-toolkit.bat standalone -n 'nifi[01-10].subdomain[1-4].domain(2)' -C 'CN=username,OU=NIFI' --subjectAlternativeNames 'nifi[21-30].other[2-5].example.com(2)'

Client/Server(客户端/服务器)

客户端/服务器模式依赖于长时间运行的证书颁发机构(CA)来颁发证书。当您没有将节点联机时,可以停止CA。

Server(服务器)

CA服务器模式通过运行来调用/bin/tls-tooolkit.sh服务器或bin\tls-tooolKit.sh服务器。

使用(Usage)

帮助脚本

./bin/tls-toolkit.sh server -h

以下是可用选项:

  • -a、 --keyAlgorithm用于生成密钥的算法(默认值:RSA)
  • –configJsonIn<arg>从中读取配置信息的位置(默认为configJson的值),表示如果设置了,则使用configJson(默认值:configJson值)
  • -d、 --days<arg>颁发证书的有效天数(默认值:825)
  • -D、 --dn<arg>用于CA证书的dn(默认值:CN=YOUR_CA_HOSTNAME,OU=NIFI)
  • -f、 --configJson<arg>写入配置信息的位置(默认值:config.json)
  • -F、 --useConfigJson标志,指定从configJson中读取所有配置以便于自动使用(否则将只写入configJson)
  • -g、 --differentKeyAndKeystorePasswords为密钥和密钥库使用不同的生成密码
  • -h、 --help打印帮助并退出
  • -k、 --keySize生成密钥的位数(默认值:2048)
  • p、 --PORT证书颁发机构侦听的端口(默认值:9443)
  • -s、 --signingAlgorithm<arg>用于签名证书的算法(默认值:SHA256WITHRSA)
  • -T、 --keyStoreType要生成的密钥库类型(默认值:jks)
  • -t、 --token<arg>用于防止MITM的令牌(必需,并且必须与客户端使用的令牌相同)
Client(客户端)

客户端可用于从CA请求新证书。客户端实用程序生成密钥对和证书签名请求(CSR),并将CSR发送到证书颁发机构。CA客户端模式通过运行来调用/bin/tls-toolkit.sh客户端或bin\tls-toolKit.sh客户端。

使用(Usage)

帮助

./bin/tls-toolkit.sh client -h

以下是可用选项:

  • -a、 --keyAlgorithm用于生成密钥的算法(默认值:RSA)
  • -c、 --certificateAuthorityHostname<arg>NiFi证书颁发机构的主机名(默认值:localhost)
  • -C、 --certificateDirectory写入CA证书的目录(默认值:.)
  • –configJsonIn<arg>从中读取配置信息的位置,表示如果已设置,则使用configJson(默认值:configJson值)
  • -D、 --dn<arg>用于客户端证书的dn(默认值:CN=<localhost name>,OU=NIFI)(由工具自动填充)
  • -f、 --configJson<arg>写入配置信息的位置(默认值:config.json)
  • -F、 --useConfigJson标志,指定从configJson中读取所有配置以便于自动使用(否则将只写入configJson)
  • -g、 --differentKeyAndKeystorePasswords为密钥和密钥库使用不同的生成密码
  • -h、 --help打印帮助并退出
  • -k、 --keySize生成密钥的位数(默认值:2048)
  • -p、 --PORT用于与证书颁发机构通信的端口(默认值:9443)
  • –subjectAlternativeNames<arg>在证书中用作主题替代名称的域的逗号分隔列表
  • -T、 --keyStoreType要生成的密钥库类型(默认值:jks)
  • -t、 --token<arg>用于防止MITM的令牌(必需,并且必须与CA使用的令牌相同)

运行客户机后,您将拥有CA的证书、密钥库、信任库和config.json,其中包含有关它们的信息及其密码。

对于可以轻松导入浏览器的客户端证书,请指定:-T PKCS12。

使用现有的中间证书颁发机构(CA)

在某些企业场景中,安全/IT团队可能会提供已由组织的证书颁发机构(CA)签名的签名证书。此中间CA可用于签署将安装在每个NiFi节点上的节点(有时称为叶)证书,或用于标识用户的客户端证书。要将现有的签名证书注入工具包流程,请执行以下步骤:

  1. PEM格式的公共证书:nifi-cert.pem
  2. PEM格式的私有证书:nifi-key.key

将文件放在toolkit工作目录中。这是配置工具以输出签名证书的目录。这不一定是二进制文件所在或调用的目录。

  • 例如,给定以下场景,只要输出目录-o为…,就可以从其位置运行toolkit命令/硬编码/,并且将使用现有的nifi-cert.pem和nifi-key.key。

    • e、 g.美元/toolkit/bin/tls-tooolkit.sh独立-o/硬编码/-n’node4.nifi.apache.org’-P thisIsABadPassword-S thisIsABadPassword-O将在处生成一个新目录/硬编码/node4.nifi.apache.org,其中包含密钥库和信任库,其中包含由签名的证书/硬编码/nifi-key.key
  • 如果未提供-o参数,则默认工作目录(.)必须包含nifi-cert.pem和nifi-key.key

    • e、 g.$cd/硬编码/&&/toolkit/bin/tls-tooolkit.sh standalone-n“node5.nifi.apache.org”-P thisIsABadPassword-S thisIsAABadPassword-O

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pjgKoh3N-1675051648585)(C:\Users\XiYang\AppData\Roaming\Typora\typora-user-images\image-20230128102645176.png)]

nifi-cert.pem和nifi-key.key文件应为ASCII铠装(Base64编码ASCII)文件,分别包含CA公钥和私钥。以下是每种格式的示例文件,以显示预期格式:

有对应的密码样例在官网。

nifi-cert.pem

# The first command shows the actual content of the encoded file, and the second parses it and shows the internal values.../certs $ more nifi-cert.pem
-----BEGIN CERTIFICATE-----
MIIDZTCCAk2gAwIBAgIKAWTeM3kDAAAAADANBgkqhkiG9w0BAQsFADAxMQ0wCwYD
VQQLDAROSUZJMSAwHgYDVQQDDBduaWZpLWNhLm5pZmkuYXBhY2hlLm9yZzAeFw0x
ODA3MjgwMDA0MzJaFw0yMTA3MjcwMDA0MzJaMDExDTALBgNVBAsMBE5JRkkxIDAe
BgNVBAMMF25pZmktY2EubmlmaS5hcGFjaGUub3JnMIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEAqkVrrC+AkFbjnCpupSy84tTFDsRVUIWYj/k2pVwC145M
3bpr0pRCzLuzovAjFCmT5L+isTvNjhionsqif07Ebd/M2psYE/Rih2MULsX6KgRe
1nRUiBeKF08hlmSBMGDFPj39yDzE/V9edxV/KGjRqVgw/Qy0vwaS5uWdXnLDhzoV
4/Mz7lGmYoMasZ1uexlH93jjBl1+EFL2Xoa06oLbEojJ9TKaWhpG8ietEedf7WM0
zqBEz2kHo9ddFk9yxiCkT4SUKnDWkhwc/o6us1vEXoSw+tmufHY/A3gVihjWPIGz
qyLFl9JuN7CyJepkVVqTdskBG7S85G/kBlizUj5jOwIDAQABo38wfTAOBgNVHQ8B
Af8EBAMCAf4wDAYDVR0TBAUwAwEB/zAdBgNVHQ4EFgQUKiWBKbMMQ1zUabD4gI7L
VOWOcy0wHwYDVR0jBBgwFoAUKiWBKbMMQ1zUabD4gI7LVOWOcy0wHQYDVR0lBBYw
FAYIKwYBBQUHAwIGCCsGAQUFBwMBMA0GCSqGSIb3DQEBCwUAA4IBAQAxfHFIZLOw
mwIqnSI/ir8f/uzDMq06APHGdhdeIKV0HR74BtK95KFg42zeXxAEFeic98PC/FPV
tKpm2WUa1slMB+oP27cRx5Znr2+pktaqnM7f2JgMeJ8bduNH3RUkr9jwgkcJRwyC
I4fwHC9k18aizNdOf2q2UgQXxNXaLYPe17deuNVwwrflMgeFfVrwbT2uPJTMRi1D
FQyc6haF4vsOSSRzE6OyDoc+/1PpyPW75OeSXeVCbc3AEAvRuTZMBQvBQUqVM51e
MDG+K3rCeieSBPOnGNrEC/PiA/CvaMXBEog+xPAw1SgYfuCz4rlM3BdRa54z3+oO
lc8xbzd7w8Q3
-----END CERTIFICATE-----
.../certs $ openssl x509 -in nifi-cert.pem -text -noout
Certificate:Data:Version: 3 (0x2)Serial Number:01:64:de:33:79:03:00:00:00:00Signature Algorithm: sha256WithRSAEncryptionIssuer: OU=NIFI, CN=nifi-ca.nifi.apache.orgValidityNot Before: Jul 28 00:04:32 2018 GMTNot After : Jul 27 00:04:32 2021 GMTSubject: OU=NIFI, CN=nifi-ca.nifi.apache.orgSubject Public Key Info:Public Key Algorithm: rsaEncryptionPublic-Key: (2048 bit)Modulus:00:aa:45:6b:ac:2f:80:90:56:e3:9c:2a:6e:a5:2c:bc:e2:d4:c5:0e:c4:55:50:85:98:8f:f9:36:a5:5c:02:d7:8e:4c:dd:ba:6b:d2:94:42:cc:bb:b3:a2:f0:23:14:29:93:e4:bf:a2:b1:3b:cd:8e:18:a8:9e:ca:a2:7f:4e:c4:6d:df:cc:da:9b:18:13:f4:62:87:63:14:2e:c5:fa:2a:04:5e:d6:74:54:88:17:8a:17:4f:21:96:64:81:30:60:c5:3e:3d:fd:c8:3c:c4:fd:5f:5e:77:15:7f:28:68:d1:a9:58:30:fd:0c:b4:bf:06:92:e6:e5:9d:5e:72:c3:87:3a:15:e3:f3:33:ee:51:a6:62:83:1a:b1:9d:6e:7b:19:47:f7:78:e3:06:5d:7e:10:52:f6:5e:86:b4:ea:82:db:12:88:c9:f5:32:9a:5a:1a:46:f2:27:ad:11:e7:5f:ed:63:34:ce:a0:44:cf:69:07:a3:d7:5d:16:4f:72:c6:20:a4:4f:84:94:2a:70:d6:92:1c:1c:fe:8e:ae:b3:5b:c4:5e:84:b0:fa:d9:ae:7c:76:3f:03:78:15:8a:18:d6:3c:81:b3:ab:22:c5:97:d2:6e:37:b0:b2:25:ea:64:55:5a:93:76:c9:01:1b:b4:bc:e4:6f:e4:06:58:b3:52:3e:63:3bExponent: 65537 (0x10001)X509v3 extensions:X509v3 Key Usage: criticalDigital Signature, Non Repudiation, Key Encipherment, Data Encipherment, Key Agreement, Certificate Sign, CRL SignX509v3 Basic Constraints:CA:TRUEX509v3 Subject Key Identifier:2A:25:81:29:B3:0C:43:5C:D4:69:B0:F8:80:8E:CB:54:E5:8E:73:2DX509v3 Authority Key Identifier:keyid:2A:25:81:29:B3:0C:43:5C:D4:69:B0:F8:80:8E:CB:54:E5:8E:73:2DX509v3 Extended Key Usage:TLS Web Client Authentication, TLS Web Server AuthenticationSignature Algorithm: sha256WithRSAEncryption31:7c:71:48:64:b3:b0:9b:02:2a:9d:22:3f:8a:bf:1f:fe:ec:c3:32:ad:3a:00:f1:c6:76:17:5e:20:a5:74:1d:1e:f8:06:d2:bd:e4:a1:60:e3:6c:de:5f:10:04:15:e8:9c:f7:c3:c2:fc:53:d5:b4:aa:66:d9:65:1a:d6:c9:4c:07:ea:0f:db:b7:11:c7:96:67:af:6f:a9:92:d6:aa:9c:ce:df:d8:98:0c:78:9f:1b:76:e3:47:dd:15:24:af:d8:f0:82:47:09:47:0c:82:23:87:f0:1c:2f:64:d7:c6:a2:cc:d7:4e:7f:6a:b6:52:04:17:c4:d5:da:2d:83:de:d7:b7:5e:b8:d5:70:c2:b7:e5:32:07:85:7d:5a:f0:6d:3d:ae:3c:94:cc:46:2d:43:15:0c:9c:ea:16:85:e2:fb:0e:49:24:73:13:a3:b2:0e:87:3e:ff:53:e9:c8:f5:bb:e4:e7:92:5d:e5:42:6d:cd:c0:10:0b:d1:b9:36:4c:05:0b:c1:41:4a:95:33:9d:5e:30:31:be:2b:7a:c2:7a:27:92:04:f3:a7:18:da:c4:0b:f3:e2:03:f0:af:68:c5:c1:12:88:3e:c4:f0:30:d5:28:18:7e:e0:b3:e2:b9:4c:dc:17:51:6b:9e:33:df:ea:0e:95:cf:31:6f:37:7b:c3:c4:37

nifi-key.key

# The first command shows the actual content of the encoded file, and the second parses it and shows the internal values.../certs $ more nifi-key.key
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAqkVrrC+AkFbjnCpupSy84tTFDsRVUIWYj/k2pVwC145M3bpr
0pRCzLuzovAjFCmT5L+isTvNjhionsqif07Ebd/M2psYE/Rih2MULsX6KgRe1nRU
iBeKF08hlmSBMGDFPj39yDzE/V9edxV/KGjRqVgw/Qy0vwaS5uWdXnLDhzoV4/Mz
7lGmYoMasZ1uexlH93jjBl1+EFL2Xoa06oLbEojJ9TKaWhpG8ietEedf7WM0zqBE
z2kHo9ddFk9yxiCkT4SUKnDWkhwc/o6us1vEXoSw+tmufHY/A3gVihjWPIGzqyLF
l9JuN7CyJepkVVqTdskBG7S85G/kBlizUj5jOwIDAQABAoIBAAdWRnV89oVBuT0Z
dvsXGmyLzpH8U9DMcO6DRp+Jf3XaY+WKCutgCCDaVbtHrbtIr17EAzav5QOifGGb
SbVCp6Q0aJdi5360oSpEUrJRRZ5Z4dxL1vimSwUGG+RnIEn9YYJ1GWJve+2PFnr7
KieLnL03V6UPzxoMJnhcnJNdTp+dBwzSazVQwye2csSJlVMk49t2lxBwce7ohuh+
9fL7G3HU5S9d08QT1brknMHahcw1SYyJd0KSjRJCB6wAxnAZmJYJ1jQCI8YICq0j
RX2rhxEXuEMXQcaiFQXzCrmQEXreKUISDvNeu/h7YU9UvJWPZSFGnEGgnMP2XvQm
EjK3rQECgYEA5+OkpLsiLNMHGzj72PiBkq82sTLQJ2+8udYp6PheOGkhjjXoBse5
YynyHlQt6CnVpJQ33mQUkJ+3ils0SMFtmI3rz3udzleek1so2L2J3+CI4kt7fFCb
FFbVXv+dLNrm+tOw68J48asyad8kEnHYq9Us+/3MLDmFJYTthkgzCpECgYEAu/ml
lQaWaZAQcQ8UuVeasxMYoN8zMmzfrkxc8AfNwKxF9nc44ywo4nJr+u/UVRGYpRgM
rdll5vz0Iq68qk03spaW7vDJn8hJQhkReQw1it9Fp/51r9MHzGTVarORJGa2oZ0g
iNe8LNizD3bQ19hEvju9mn0x9Q62Q7dapVpffwsCgYEAtC1TPpQQ59dIjERom5vr
wffWfTTIO/w8HgFkKxrgyuAVLJSCJtKFH6H1+M7bpKrsz6ZDCs+kkwMm76ASLf3t
lD2h3mNkqHG4SzLnuBD90jB666pO1rci6FjYDap7i+DC3F4j9+vxYYXt9Aln09UV
z94hx+LaA/rlk9OHY3EyB6ECgYBA/cCtNNjeaKv2mxM8PbjD/289d85YueHgfpCH
gPs3iZiq7W+iw8ri+FKzMSaFvw66zgTcOtULtxulviqG6ym9umk29dOQRgxmKQqs
gnckq6uGuOjxwJHqrlZHjQw6vLSaThxIk+aAzu+iAh+U8TZbW4ZjmrOiGdMUuJlD
oGpyHwKBgQCRjfqQjRelYVtU7j6BD9BDbCfmipwaRNP0CuAGOVtS+UnJuaIhsXFQ
QGEBuOnfFijIvb7YcXRL4plRYPMvDqYRNObuI6A+1xNtr000nxa/HUfzKVeI9Tsn
9AKMWnXS8ZcfStsVf3oDFffXYRqCaWeuhpMmg9TwdXoAuwfpE5GCmw==
-----END RSA PRIVATE KEY-----
.../certs $ openssl rsa -in nifi-key.key -text -noout
Private-Key: (2048 bit)
modulus:00:aa:45:6b:ac:2f:80:90:56:e3:9c:2a:6e:a5:2c:bc:e2:d4:c5:0e:c4:55:50:85:98:8f:f9:36:a5:5c:02:d7:8e:4c:dd:ba:6b:d2:94:42:cc:bb:b3:a2:f0:23:14:29:93:e4:bf:a2:b1:3b:cd:8e:18:a8:9e:ca:a2:7f:4e:c4:6d:df:cc:da:9b:18:13:f4:62:87:63:14:2e:c5:fa:2a:04:5e:d6:74:54:88:17:8a:17:4f:21:96:64:81:30:60:c5:3e:3d:fd:c8:3c:c4:fd:5f:5e:77:15:7f:28:68:d1:a9:58:30:fd:0c:b4:bf:06:92:e6:e5:9d:5e:72:c3:87:3a:15:e3:f3:33:ee:51:a6:62:83:1a:b1:9d:6e:7b:19:47:f7:78:e3:06:5d:7e:10:52:f6:5e:86:b4:ea:82:db:12:88:c9:f5:32:9a:5a:1a:46:f2:27:ad:11:e7:5f:ed:63:34:ce:a0:44:cf:69:07:a3:d7:5d:16:4f:72:c6:20:a4:4f:84:94:2a:70:d6:92:1c:1c:fe:8e:ae:b3:5b:c4:5e:84:b0:fa:d9:ae:7c:76:3f:03:78:15:8a:18:d6:3c:81:b3:ab:22:c5:97:d2:6e:37:b0:b2:25:ea:64:55:5a:93:76:c9:01:1b:b4:bc:e4:6f:e4:06:58:b3:52:3e:63:3b
publicExponent: 65537 (0x10001)
privateExponent:07:56:46:75:7c:f6:85:41:b9:3d:19:76:fb:17:1a:6c:8b:ce:91:fc:53:d0:cc:70:ee:83:46:9f:89:7f:75:da:63:e5:8a:0a:eb:60:08:20:da:55:bb:47:ad:bb:48:af:5e:c4:03:36:af:e5:03:a2:7c:61:9b:49:b5:42:a7:a4:34:68:97:62:e7:7e:b4:a1:2a:44:52:b2:51:45:9e:59:e1:dc:4b:d6:f8:a6:4b:05:06:1b:e4:67:20:49:fd:61:82:75:19:62:6f:7b:ed:8f:16:7a:fb:2a:27:8b:9c:bd:37:57:a5:0f:cf:1a:0c:26:78:5c:9c:93:5d:4e:9f:9d:07:0c:d2:6b:35:50:c3:27:b6:72:c4:89:95:53:24:e3:db:76:97:10:70:71:ee:e8:86:e8:7e:f5:f2:fb:1b:71:d4:e5:2f:5d:d3:c4:13:d5:ba:e4:9c:c1:da:85:cc:35:49:8c:89:77:42:92:8d:12:42:07:ac:00:c6:70:19:98:96:09:d6:34:02:23:c6:08:0a:ad:23:45:7d:ab:87:11:17:b8:43:17:41:c6:a2:15:05:f3:0a:b9:90:11:7a:de:29:42:12:0e:f3:5e:bb:f8:7b:61:4f:54:bc:95:8f:65:21:46:9c:41:a0:9c:c3:f6:5e:f4:26:12:32:b7:ad:01
prime1:00:e7:e3:a4:a4:bb:22:2c:d3:07:1b:38:fb:d8:f8:81:92:af:36:b1:32:d0:27:6f:bc:b9:d6:29:e8:f8:5e:38:69:21:8e:35:e8:06:c7:b9:63:29:f2:1e:54:2d:e8:29:d5:a4:94:37:de:64:14:90:9f:b7:8a:5b:34:48:c1:6d:98:8d:eb:cf:7b:9d:ce:57:9e:93:5b:28:d8:bd:89:df:e0:88:e2:4b:7b:7c:50:9b:14:56:d5:5e:ff:9d:2c:da:e6:fa:d3:b0:eb:c2:78:f1:ab:32:69:df:24:12:71:d8:ab:d5:2c:fb:fd:cc:2c:39:85:25:84:ed:86:48:33:0a:91
prime2:00:bb:f9:a5:95:06:96:69:90:10:71:0f:14:b9:57:9a:b3:13:18:a0:df:33:32:6c:df:ae:4c:5c:f0:07:cd:c0:ac:45:f6:77:38:e3:2c:28:e2:72:6b:fa:ef:d4:55:11:98:a5:18:0c:ad:d9:65:e6:fc:f4:22:ae:bc:aa:4d:37:b2:96:96:ee:f0:c9:9f:c8:49:42:19:11:79:0c:35:8a:df:45:a7:fe:75:af:d3:07:cc:64:d5:6a:b3:91:24:66:b6:a1:9d:20:88:d7:bc:2c:d8:b3:0f:76:d0:d7:d8:44:be:3b:bd:9a:7d:31:f5:0e:b6:43:b7:5a:a5:5a:5f:7f:0b
exponent1:00:b4:2d:53:3e:94:10:e7:d7:48:8c:44:68:9b:9b:eb:c1:f7:d6:7d:34:c8:3b:fc:3c:1e:01:64:2b:1a:e0:ca:e0:15:2c:94:82:26:d2:85:1f:a1:f5:f8:ce:db:a4:aa:ec:cf:a6:43:0a:cf:a4:93:03:26:ef:a0:12:2d:fd:ed:94:3d:a1:de:63:64:a8:71:b8:4b:32:e7:b8:10:fd:d2:30:7a:eb:aa:4e:d6:b7:22:e8:58:d8:0d:aa:7b:8b:e0:c2:dc:5e:23:f7:eb:f1:61:85:ed:f4:09:67:d3:d5:15:cf:de:21:c7:e2:da:03:fa:e5:93:d3:87:63:71:32:07:a1
exponent2:40:fd:c0:ad:34:d8:de:68:ab:f6:9b:13:3c:3d:b8:c3:ff:6f:3d:77:ce:58:b9:e1:e0:7e:90:87:80:fb:37:89:98:aa:ed:6f:a2:c3:ca:e2:f8:52:b3:31:26:85:bf:0e:ba:ce:04:dc:3a:d5:0b:b7:1b:a5:be:2a:86:eb:29:bd:ba:69:36:f5:d3:90:46:0c:66:29:0a:ac:82:77:24:ab:ab:86:b8:e8:f1:c0:91:ea:ae:56:47:8d:0c:3a:bc:b4:9a:4e:1c:48:93:e6:80:ce:ef:a2:02:1f:94:f1:36:5b:5b:86:63:9a:b3:a2:19:d3:14:b8:99:43:a0:6a:72:1f
coefficient:00:91:8d:fa:90:8d:17:a5:61:5b:54:ee:3e:81:0f:d0:43:6c:27:e6:8a:9c:1a:44:d3:f4:0a:e0:06:39:5b:52:f9:49:c9:b9:a2:21:b1:71:50:40:61:01:b8:e9:df:16:28:c8:bd:be:d8:71:74:4b:e2:99:51:60:f3:2f:0e:a6:11:34:e6:ee:23:a0:3e:d7:13:6d:af:4d:34:9f:16:bf:1d:47:f3:29:57:88:f5:3b:27:f4:02:8c:5a:75:d2:f1:97:1f:4a:db:15:7f:7a:03:15:f7:d7:61:1a:82:69:67:ae:86:93:26:83:d4:f0:75:7a:00:bb:07:e9:13:91:82:9b

使用外部签名的CA证书签名

要使用TLS工具包外部生成的证书颁发机构(CA)签署生成的证书,请确保所需文件的格式和位置正确(请参阅其他证书命令)。例如,一个组织大型组织有一个内部CA(CN=CA.Large.org,OU=证书颁发机构)。此根CA处于脱机状态,仅用于签署其他内部CA。大型IT团队生成一个中间CA(CN=nifi_CA.Large.org,OU=nifi,OU=Certificate Authority),用于签署所有nifi节点证书(CN=node1.nifi.loge.org,OU=nifi,CN=node2.nifi.loage.org,OU=nifi等)。

要使用工具包生成这些证书并使用中间CA对其进行签名,请确保存在以下文件(请参阅其他证书命令):

  • nifi证书.pem (nifi-cert.pem)— PEM格式的中间CA的公共证书

  • nifi-key.key— PKCS#1 PEM格式的中间CA的Base64编码私钥

如果中间CA是根CA,它将是自签名的 — 证书上的签名将由同一密钥发出。在这种情况下(与工具箱生成的CA相同),不需要额外的参数。但是,因为中间CA由根CA签名,所以也需要提供根CA的公共证书来验证签名。–additionalCACertificate参数用于指定签名公共证书的路径。该值应该是根CA公共证书的绝对路径

例子:

# Generate cert signed by intermediate CA (which is signed by root CA) -- WILL FAIL$ ./bin/tls-toolkit.sh standalone -n 'node1.nifi.apache.org' \
-P passwordpassword \
-S passwordpassword \
-o /opt/certs/externalCA \
-O2018/08/02 18:48:11 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandaloneCommandLine: No nifiPropertiesFile specified, using embedded one.
2018/08/02 18:48:12 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: Running standalone certificate generation with output directory /opt/certs/externalCA
2018/08/02 18:48:12 INFO [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Verifying the certificate signature for CN=nifi_ca.large.org, OU=Certificate Authority
2018/08/02 18:48:12 INFO [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Attempting to verify certificate CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority signature with CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority
2018/08/02 18:48:12 WARN [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Certificate CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority not signed by CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority [certificate does not verify with supplied key]
Error generating TLS configuration. (The signing certificate was not signed by any known certificates)# Provide additional CA certificate path for signature verification of intermediate CA$ ./bin/tls-toolkit.sh standalone -n 'node1.nifi.apache.org' \
-P passwordpassword \
-S passwordpassword \
-o /opt/certs/externalCA \
--additionalCACertificate /opt/certs/externalCA/root.pem \
-O2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandaloneCommandLine: No nifiPropertiesFile specified, using embedded one.
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: Running standalone certificate generation with output directory /opt/certs/externalCA
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Verifying the certificate signature for CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Attempting to verify certificate CN=nifi_ca.large.org, OU=NiFi, OU=Certificate Authority signature with CN=ca.large.org, OU=Certificate Authority
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.util.TlsHelper: Certificate was signed by CN=ca.large.org, OU=Certificate Authority
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: Using existing CA certificate /opt/certs/externalCA/nifi-cert.pem and key /opt/certs/externalCA/nifi-key.key
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: Writing new ssl configuration to /opt/certs/externalCA/node1.nifi.apache.org
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: Successfully generated TLS configuration for node1.nifi.apache.org 1 in /opt/certs/externalCA/node1.nifi.apache.org
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: No clientCertDn specified, not generating any client certificates.
2018/08/02 18:48:44 INFO [main] org.apache.nifi.toolkit.tls.standalone.TlsToolkitStandalone: tls-toolkit standalone completed successfully

其他证书命令

  1. 要从DER编码的公共证书(cert.DER)转换为PEM编码的(cert.PEM):

    • 如果DER文件同时包含公钥和私钥,请使用以下命令删除私钥:

      • perl -pe 'BEGIN{undef $/;} s|-----BEGIN PRIVATE KEY-----.*?-----END PRIVATE KEY-----|Removed private key|gs' cert.der > cert.pem
    • 如果DER文件仅包含公共证书,请使用以下命令:
      • openssl x509 -inform der -in cert.der -out cert.pem
  2. 要将包含公钥和私钥的PKCS12密钥库(keystore.p12)转换为PEM编码文件($PASSWORD是密钥库密码):
    • openssl pkcs12 -in keystore.p12 -nodes -clcerts -nokeys -out cert.pem -password "pass:$PASSWORD"
    • openssl pkcs12 -in keystore.p12 -nodes -nocerts -out key.key -password "pass:$PASSWORD"
  3. 要将包含私钥的Java密钥库(Keystore.jks)转换为PEM编码文件( P 1 2 P A S S W O R D 是 P K C S 12 密钥库密码, P12_PASSWORD是PKCS12密钥库密码, P12PASSWORDPKCS12密钥库密码,jks_PASSWORD为要设置的Java密钥存储密码,$ALIAS可以是任何值 — NiFi默认为NiFi键):
    • keytool -importkeystore -srckeystore keystore.jks -destkeystore keystore.p12 -srcstoretype JKS -deststoretype PKCS12 -destkeypass "$P12_PASSWORD" -deststorepass "$P12_PASSWORD" -srcstorepass "$JKS_PASSWORD" -srcalias "$ALIAS" -destalias "$ALIAS"
    • 按照上面的步骤将keystore.p12转换为cert.pem和key.key
  4. 要从PKCS#8PEM格式转换为PKCS#1 PEM格式,请执行以下操作:
    • 如果私钥是以PKCS#8格式提供的(文件以-----BEGIN private key-----而不是-----BEGINRSA private key-----开头),则以下命令将其转换为PKCS#1格式,将原始密钥移动到nifi-key-pkcs8.key,并将PKCS#1版本重命名为nifi-kkey.key:

      • openssl rsa -in nifi-key.key -out nifi-key-pkcs1.key && mv nifi-key.key nifi-key-pkcs8.key && mv nifi-key-pkcs1.key nifi-key.key
  5. 要将PEM格式的私钥(private.key)和PEM格式(certificate.PEM)的公钥组合到PKCS12密钥库中,请执行以下操作:
    • 以下命令将从两个独立文件创建PKCS12密钥库(keystore.p12)。不能直接从PEM文件形成Java密钥库(JKS):

      • openssl pkcs12 -export -out keystore.p12 -inkey private.key -in certificate.pem
  6. 要将PKCS12密钥库(keystore.p12)转换为JKS密钥库(key store.JKS),请执行以下操作:
    • 以下命令将创建JKS密钥库(keystore.JKS)。-destaalias标志是可选的,因为NiFi当前不会从密钥库中的特定别名读取。系统将提示用户输入密钥库密码,该密码必须设置并至少包含8个字符,以及密钥密码,该密钥密码可以与密钥库密码相同,也可以不同:

      • keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks -destalias nifi-key

nifi-key.key -out nifi-key-pkcs1.key && mv nifi-key.key nifi-key-pkcs8.key && mv nifi-key-pkcs1.key nifi-key.key`
5. 要将PEM格式的私钥(private.key)和PEM格式(certificate.PEM)的公钥组合到PKCS12密钥库中,请执行以下操作:

  • 以下命令将从两个独立文件创建PKCS12密钥库(keystore.p12)。不能直接从PEM文件形成Java密钥库(JKS):

    • openssl pkcs12 -export -out keystore.p12 -inkey private.key -in certificate.pem
  1. 要将PKCS12密钥库(keystore.p12)转换为JKS密钥库(key store.JKS),请执行以下操作:

    • 以下命令将创建JKS密钥库(keystore.JKS)。-destaalias标志是可选的,因为NiFi当前不会从密钥库中的特定别名读取。系统将提示用户输入密钥库密码,该密码必须设置并至少包含8个字符,以及密钥密码,该密钥密码可以与密钥库密码相同,也可以不同:

      • keytool -importkeystore -srckeystore keystore.p12 -srcstoretype pkcs12 -destkeystore keystore.jks -deststoretype jks -destalias nifi-key

NIFI Site to Site 安全模式资料学习整合(均来自官网翻译)相关推荐

  1. Git学习二、GitLab官网,安装自己的一个私有Gitlab代码管理库

    Git学习一.TortoiseGit 安装后,文件夹前面不显示相关状态图标解决办法 Git学习二.GitLab官网,安装自己的一个私有Gitlab代码管理库 Git学习三.Git与SVN的差异,Git ...

  2. RHEL8 学习记录 #1 从官网下载 RHEL 8 镜像真的很快

    开始学RHEL 8,系统可以上RedHat官网下载,真的比大家通过网盘分享的下载速度快!! 通过此方法下载的RHEL系统仅可用于个人学习,禁止用于商业用途,以免产生不必要的麻烦. 如有商业需要,需通过 ...

  3. Python+Selenium学习笔记5 - python官网的tutorial - 交互模式下的操作

    这篇笔记主要是从Python官网的Tutorial上截取下来,再加上个人理解 1. 在交互模式下,下划线'_'还可以表示上一步的计算结果 2.引号转义问题. 从下图总结的规律是,字符串里的引号如果和引 ...

  4. 前端学习之仿小米官网HTML+CSS

    一个简单的仿小米官网 index.css /* 主页index.html样式表 */ .topbar-wrapper{width: 100%;background-color:#333;height: ...

  5. TM4C 123GXL上手简介(一) 如何下载从官网下载和使用相关资料

    TM4C 123GXL上手简介(一) 如何下载从官网下载和使用相关资料 相关网站介绍 TI官网:http://www.ti.com.cn/ TI中文社区:https://e2echina.ti.com ...

  6. Android学习 多读官网,有益健康--Activity状态 onPause()

    今天抽空学习了下安卓官网,对安卓的Activity的生命周期有了更深的理解.http://developer.android.com/training/basics/activity-lifecycl ...

  7. 华为防火墙基础自学系列 | Site to Site IPSec VdPdNd

    视频来源:B站<乾颐堂HCIP-HCIE-security安全 2019年录制> 一边学习一边整理老师的课程内容及试验笔记,并与大家分享,侵权即删,谢谢支持! 附上汇总贴:华为防火墙基础自 ...

  8. SharePoint 2013 Step by Step——How to Create a Lookup Column to Another Site(Cross Site) 阅读目录...

    阅读目录 OverView Step by Step-> Create Lookup Site Column in a parent site(root website) 回到顶部 OverVi ...

  9. 简单的Site to site ipsec ×××实验

    简单的Site to site ipsec ***实验配置 朋友的网店:http://shop65521679.taobao.com/,在此做个广告,需要购买美的电器的朋友,请多多支持一下,比市场上便 ...

最新文章

  1. 第36章 网络管理
  2. [考试]20151019图论
  3. 可以获得索引值码_SEO优化可以为网站带来更高的业务销售额
  4. @configurationproperties注解的使用_SpringBoot常用注解的简单理解
  5. C——用冒泡排序法、选择排序法对随机输入的10个整数从小到大排序
  6. python学习笔记2018-9-18
  7. Altium AD20更改原理图的连接节点颜色和连线颜色(结点颜色)
  8. apktool+dex2jar+xjad反编译android程序
  9. 大白用html5制作,暖心大白纸雕灯的制作过程 给圣诞节礼物助力啦
  10. python爬裁判文书网_对爬取中国裁判文书网的分析
  11. otl连接mysql数据库_OTL--c++中连接数据库的方法
  12. ie不支持includes_IE11 – 对象不支持属性或方法“includes” – javascript window.location.hash...
  13. python 什么是鸭子类型
  14. 研究所北航计算机录取分数线,收藏!2020年北京航空航天大学录取分数线大汇总...
  15. ECUG Con 2018 早鸟票热卖中 | 大咖聚首 探索云计算下一个十年
  16. jsTree插件简介(四)
  17. Python把mp4视频转化成gif动图
  18. 并查集——NUIST OJ P1648 炼丹术为例
  19. 【方案分享】自助彩票终端布局商场,彩票行业智能营销新模式
  20. python爬网页统计数据_Python爬取阿拉丁统计信息过程图解

热门文章

  1. 女生学化工工艺好和计算机,哪些艺术型专业适合理科女生报考
  2. 小蜜蜂网络电话 bt
  3. Latex Package fontspec Warning Font FandolSong-Regular does not contain requested Script CJK
  4. 关于火狐浏览器主页被毒霸恶意绑定
  5. Telnet暴力破解
  6. 【C 语言】文件操作 (fscanf、fprintf 函数)
  7. 亚马逊儿童学习用品CPC认证
  8. 新国标家用和类似用途插头插座品质检验
  9. 计算机b级和c级哪个更好,b级锁芯和c级锁芯哪个会更好?b级锁芯防盗性能怎么样?...
  10. 专科生逆袭字节跳动,只因为他做对了这件事