【问题标题】:Generating self-signed certificates for NiFi over HTTPS通过 HTTPS 为 NiFi 生成自签名证书
【发布时间】:2019-11-23 17:30:52
【问题描述】:

我一直在关注这两个资源来生成我的证书:
https://nifi.apache.org/docs/nifi-docs/html/toolkit-guide.html#tls_operation_modes https://community.cloudera.com/t5/Community-Articles/Setting-Up-a-Secure-NiFi-to-Integrate-with-a-Secure-NiFi/ta-p/247765

两者看起来都非常简单。请注意,我在远程服务器(无域)上运行 NiFi 1.10.0,使用 java8 的 Debian 9(新实例)。我没有与服务器关联的域名,只是一个公共 IP 地址。

在服务器上,我尝试使用以下命令生成证书:

bin/tls-toolkit.sh standalone -n 'localhost' -C 'CN=sys_admin,OU=NIFI'
bin/tls-toolkit.sh standalone -n '0.0.0.0' -C 'CN=sys_admin,OU=NIFI'
bin/tls-toolkit.sh standalone -n 'my.server.ip.address' -C 'CN=sys_admin,OU=NIFI'
bin/tls-toolkit.sh standalone -n 'my.server.ip.address:9443' -C 'CN=sys_admin,OU=NIFI'

我相应地更新了我的授权人文件。但是我总是收到NET::ERR_CERT_REVOKED 错误。

跑步:

sudo openssl s_client -connect 0.0.0.0:9443 -showcerts -state -debug

我得到错误:

验证错误:证书链中的自签名证书

【问题讨论】:

  • 尝试使用一些自定义域而不是 ip。
  • @Lamanus 但我没有可用的自定义域:/
  • 也许修改你的主机文件?

标签: openssl ssl-certificate apache-nifi


【解决方案1】:

我不知道证书可以绑定到一个 IP 地址。

但这听起来不是最好的主意。

这是一个相关的问题How to Generate a Self Signed SSL Certificate Bound to IP Address,它放弃了将证书绑定到 IP 地址。

我知道它并不能真正回答您的问题,但听起来您最好获得一个域名并将您的自签名证书绑定到该域名。或者,您可以获得一个真实的域。我使用Namecheap。它真的不是很贵。特别是如果您选择了一个不受欢迎的顶级域名。另外我建议使用 Let's Encrypt 和 Certbot 来生成真正的公共证书。它是免费的,您不必担心将您的假 CA 或中间证书添加到您想要信任您的站点的每台机器上。 Certbot 几乎可以让生成公共证书变得尽可能简单。

【讨论】:

    【解决方案2】:

    我假设您已经知道什么是 OpenSSL。所以试试下面的命令来做吧。

    1. openssl req -x509 -newkey rsa:4096 -keyout key1.pem -out cert1.pem -days 3650 -subj "/C=US/ST=NAME_OF_STATE/L=NAME_OF_CITY/O=NAME_OF_ORGANIZATION/OU=NAME_OF_ORGANIZATION_UNIT/CN=*.nifi.apache.org/emailAddress=sample@example.com"

    2. openssl x509 -outform der -in cert1.pem -out cert1.crt



    命令一解释:你会得到2个输出文件。一个是 key1.pem,第二个是使用 -out 选项生成的 cert1.pem。如果您仔细查看 -subj 选项,您会发现引用的选项数量

    • /C 指定国家名称(2 个字母代码)。例如,IN 和 US。这是强制性的。
    • /ST 指定州或省名称(全名)。例如,俄亥俄州和北方邦。这是强制性的。
    • /L 指定区域名称(例如,城市)。例如,克利夫兰和诺伊达。这是强制性的。
    • /O 指定组织名称(例如,公司)。例如,谷歌和雅虎。这是强制性的。
    • /OU 指定组织单位名称(例如,部分)。例如,工程。这是强制性的。
    • /CN 指定通用名称(例如服务器 FQDN 或您的名称)。例如,localhost127.0.0.1。这是强制性的。
    • /emailAddress 指定电子邮件地址。例如,sample@example.com。这不是强制性的。


    命令二说明:需要将cert1.pem转成.CRT文件,通过邮件链中的help命令导入到信任库中。

    【讨论】:

      猜你喜欢
      • 2021-05-08
      • 2016-11-03
      • 1970-01-01
      • 1970-01-01
      • 2019-04-18
      • 2014-06-22
      • 2017-02-19
      • 2014-04-09
      • 1970-01-01
      相关资源
      最近更新 更多