Apache NiFi LDAPS配置问题

时间:2016-07-28 04:29:11

标签: security ldap apache-nifi

我花了一整天的时间试图找出这个奇怪的问题。我让我的NiFi实例站在Linux服务器上。我在login-identity-providers.xml中配置了ldap-provider,如下所示

<provider>
<identifier>ldap-provider</identifier>
<class>org.apache.nifi.ldap.LdapProvider</class>
<property name="Authentication Strategy">SIMPLE</property>

<property name="Manager DN"></property>
<property name="Manager Password"></property>

<property name="TLS - Keystore">/Data/ssl/server_keystore.jks</property>
<property name="TLS - Keystore Password">changeit</property>
<property name="TLS - Keystore Type">JKS</property>
<property name="TLS - Truststore">/Data/ssl/server_truststore.jks</property>
<property name="TLS - Truststore Password">changeit</property>
<property name="TLS - Truststore Type">JKS</property>
<property name="TLS - Client Auth"></property>
<property name="TLS - Protocol">TLSv1.2</property>
<property name="TLS - Shutdown Gracefully"></property>

<property name="Referral Strategy">FOLLOW</property>
<property name="Connect Timeout">10 secs</property>
<property name="Read Timeout">10 secs</property>

<property name="Url">ldaps://myserver.hostname:636</property>
<property name="User Search Base">ou=people,dc=xxx,dc=net</property>
<property name="User Search Filter">cn={0}</property>

<property name="Authentication Expiration">12 hours</property>

当我开始使用nifi时,我首先提示登录页面。但是,我一直在

2016-07-28 00:17:43,527 ERROR [NiFi Web Server-64] org.apache.nifi.ldap.LdapProvider myserver.hostname:636; nested exceptin is javax.naming.CommunicationException: myserver.hostname:636; [Root exception is javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target]

然后我尝试在bootstrap.conf中使用jvm参数作为

java.arg.15=-Djavax.net.ssl.trustStore=/Data/ssl/server_truststore.jks

它工作得很好。

我也尝试使用相同的truststore vm参数的SSLPoke.class,它也运行良好。

java -Djavax.net.ssl.trustStore=/Data/ssl/server_truststore.jks SSLPoke myserver.hostname 636
"Successfully connected"

现在我的问题是为什么我在NiFi login-identity-providers.xml中的配置不起作用?

2 个答案:

答案 0 :(得分:3)

不幸的是,NiFi目前不支持LDAPS。有一个JIRA [1]来构建这个功能。 SIMPLE(纯文本)或START_TLS是唯一有效的选项。此外,仅在身份验证策略为START_TLS时才考虑SSL上下文配置选项。

[1] https://issues.apache.org/jira/browse/NIFI-2325

答案 1 :(得分:1)

@davy_wei,

虽然Matt的评论是正确的,如果由于某种原因限制使用LDAP到您的LDAP / AD服务器(例如防火墙规则),一个选项是使用stunnel或socat在受保护的LDAP和NiFi的LDAP客户端。

示例stunnel配置看起来像:

...
[ldap2ldaps]
accept = 127.0.0.1:whatever_port_you_want
client = yes
connect = your.real.ldaps.fqdn.or.ip:636
...

请记住这是基本配置。您可能希望微调您的stunnel以符合您的安全要求(例如,限制为特定密码,TLS版本等)