0

我们正在运行一个使用 ssl 配置的 Teiid 12.3 服务器。我们可以使用 pentaho etl、squirrel sql client、Tableau 等工具连接这个 teiid 服务器。我们使用 trustore 文件连接这些工具。但是我们无法在 Apache NIfi 中连接 Teiid 服务器。我们尝试了以下方法来包含 trustore –</p>

  1. 在运行 nifi.bat 中添加 trustore

    • 设置 JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.log.dir=%NIFI_LOG_DIR% -Dorg.apache.nifi.bootstrap.config.pid.dir=%NIFI_PID_DIR% -Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% -Djavax.net.ssl.trustStore=teiid-dummy.truststore -Djavax.net.ssl.trustStorePassword=1234
  2. 创建一个StandardSSLContextService但我们不能在ExecuteSQLQueryDatabaseTableRecord处理器中使用此服务

  3. 在 teiid 连接 url 中添加了 trustore 详细信息 --jdbc:teiid:VDB@mms://abc123.com:443;enableTLS=true;trustStorePath=E:/nifi-1.11.4-bin/nifi-1.11.4/bin/teiid_dummy.truststore;trustStorePassword=1234

    • 错误:TEIID 200020 建立到主机和端口的套接字时出错。Sun.security.validator.validatorException:PKIX 路径构建失败:
  4. 也在下面的文件中配置了信任,但没有用给出同样的错误。

文件名:Nifi.properties

nifi.security.truststore==E:\nifi-1.11.4-bin\nifi-1.11.4\bin\teiid-dummy.truststore
nifi.security.truststoreType=jks
nifi.security.truststorePasswd=1234

文件名:run_nifi.bat

set JAVA_ARGS=-Dorg.apache.nifi.bootstrap.config.log.dir=%NIFI_LOG_DIR% -Dorg.apache.nifi.bootstrap.config.pid.dir=%NIFI_PID_DIR% -Dorg.apache.nifi.bootstrap.config.file=%BOOTSTRAP_CONF_FILE% -Djavax.net.ssl.trustStore=teiid3-ssl.truststore -Djavax.net.ssl.trustStorePassword=1234

错误

4

2 回答 2

0

您是否验证了 Teiid 服务器在 TLS 协商期间提供了完整的证书链,并且完整的链存在于您配置的信任库中?PKIX 路径构建错误表明客户端 (NiFi) 无法将服务器 (Teiid) 提供的公共证书映射到其信任库中的受信任证书。请提供您的 Teiid 服务器的公共证书(必要时编辑主机名)以及您与 NiFi 关联的信任库的内容。

回复评论:

属性值nifi.security.truststore$NIFI_HOME/conf/nifi.properties设置 NiFi 应用程序信任库路径的位置。问题中未指定从 NiFi 到 Teiid 的通信机制。如果它是流中的一个组件(例如处理器或控制器服务),这些组件应该引用一个SSLContextService控制器服务并在那里指定一个信任库路径。如果组件不支持 SSL CS,则 DBCP JDBC 连接 URL 应包含启用 TLS 的设置,或者应提交功能请求 Jira。

于 2020-04-28T15:59:50.710 回答
0

非常感谢 daggett。非常感谢...您的解决方案有效(bootstrap.conf)

按照下面的步骤,它工作得很好。1)将Trustore“ssl-teiid.truststore”放在NiFi bin目录2)转到Nifi conf目录并打开文件bootstrap.conf 3)在其中添加两个参数,提及Trustore路径和密码。参考这个——java.arg.18=-Djavax.net.ssl.trustStore=E:/nifi-1.11.4-bin/nifi-1.11.4/bin/ssl-teiid.truststore

java.arg.19.=-Djavax.net.ssl.trustStorePassword=提及 Trustore 密码

4) 启动 NiFi 5) 为 DataVirtualization url 创建 DBConnectionPool 服务。6) 创建 ExecuteSQL 处理器,使用上面创建的 DBConnectionPool 服务并通过它查询任何 DataVirtualization 视图

非常感谢安迪的帮助。

于 2020-05-07T04:22:42.927 回答