You can post them on a temporary file sharing service, post them in the Apache 
NiFi Slack [1], or email them to me directly at alopre...@apache.org 
<mailto:alopre...@apache.org>. The mailing list software tends to strip 
attachments. 

[1] https://apachenifi.slack.com <https://apachenifi.slack.com/>

Andy LoPresto
alopre...@apache.org
alopresto.apa...@gmail.com
PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69

> On Feb 26, 2020, at 12:21 PM, Joe Gresock <jgres...@gmail.com> wrote:
> 
> Good question -- I can't share these keystores and truststores, but I'll
> see if I can generate some test ones tomorrow.  How should I send them to
> you?
> 
> On Wed, Feb 26, 2020 at 8:01 PM Andy LoPresto <alopre...@apache.org> wrote:
> 
>> Joe,
>> 
>> Can you share the keystores and truststores you are using? I understand
>> the issue you’re encountering but we haven’t yet been able to reproduce it
>> locally running with certs that work on 1.11.1. Please DO NOT share actual
>> keystores if they contain real private keys, only if these are dev
>> instances you are comfortable sharing.
>> 
>> If you cannot share these, can you please try generating a new set using
>> the TLS Toolkit and verify that they also fail on 1.11.3 in your
>> environment?
>> 
>> 
>> Andy LoPresto
>> alopre...@apache.org
>> alopresto.apa...@gmail.com
>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69
>> 
>>> On Feb 26, 2020, at 11:07 AM, Joe Gresock <jgres...@gmail.com> wrote:
>>> 
>>> Ok, I added all the server certs and my administrator's client cert to
>> the
>>> trust store, and they all still got PKIX path building failed.  So I
>>> redeployed nifi 1.11.1, and now it works again.
>>> 
>>> Joe
>>> 
>>> On Wed, Feb 26, 2020 at 6:21 PM Joe Gresock <jgres...@gmail.com> wrote:
>>> 
>>>> Yes, on Kubernetes.
>>>> 
>>>> FWIW, I do see changes to
>>>> 
>> nifi-commons/nifi-security-utils/src/main/java/org/apache/nifi/security/util/SslContextFactory.java
>>>> involving a new function createTrustSslContextWithTrustManagers(), among
>>>> other related changes.
>>>> 
>>>> I'm going to try directly adding the client certs to my trust store to
>> see
>>>> if that works (instead of just adding the client certs' issuer).
>>>> 
>>>> On Wed, Feb 26, 2020 at 6:08 PM Joe Witt <joe.w...@gmail.com> wrote:
>>>> 
>>>>> on kubernetes is a key detail here too...
>>>>> 
>>>>> On Wed, Feb 26, 2020 at 10:01 AM Joe Gresock <jgres...@gmail.com>
>> wrote:
>>>>> 
>>>>>> Java 8
>>>>>> 
>>>>>> On Wed, Feb 26, 2020 at 5:59 PM Nathan Gough <thena...@gmail.com>
>>>>> wrote:
>>>>>> 
>>>>>>> Hi Joe,
>>>>>>> 
>>>>>>> I just set up a secure cluster with NiFi 1.11.3 and am not seeing any
>>>>>>> issues like you describe.
>>>>>>> 
>>>>>>> Are you running Java 8 or Java 11?
>>>>>>> 
>>>>>>> Nathan
>>>>>>> 
>>>>>>> On Wed, Feb 26, 2020 at 12:22 PM Joe Gresock <jgres...@gmail.com>
>>>>> wrote:
>>>>>>> 
>>>>>>>> Were there any changes with how the trust store is used in 1.11.3?
>>>>> I
>>>>>>> had a
>>>>>>>> 1.11.0 deployment working with the following settings, but when I
>>>>>>> deployed
>>>>>>>> 1.11.3, the cluster can't seem to replicate requests to itself:
>>>>>>>> 
>>>>>>>> nifi.remote.input.host=<redacted>
>>>>>>>> nifi.remote.input.secure=true
>>>>>>>> nifi.remote.input.socket.port=32440
>>>>>>>> nifi.remote.input.http.enabled=true
>>>>>>>> 
>>>>>>>> nifi.cluster.protocol.is.secure=true
>>>>>>>> nifi.cluster.is.node=true
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> nifi.cluster.node.address=nifi-3.nifi-headless.lizardspock.svc.cluster.local
>>>>>>>> nifi.cluster.node.protocol.port=6007
>>>>>>>> 
>>>>>>>> 
>>>>> nifi.web.https.host=nifi-3.nifi-headless.lizardspock.svc.cluster.local
>>>>>>>> nifi.web.https.port=8443
>>>>>>>> 
>>>>>>>> nifi.security.keystore=./conf/keystore.jks
>>>>>>>> nifi.security.keystoreType=jks
>>>>>>>> nifi.security.keystorePasswd=<password>
>>>>>>>> nifi.security.keyPasswd=
>>>>>>>> nifi.security.truststore=./conf/truststore.jks
>>>>>>>> nifi.security.truststoreType=jks
>>>>>>>> nifi.security.truststorePasswd=<password>
>>>>>>>> nifi.security.needClientAuth=true
>>>>>>>> 
>>>>>>>> A trusted client cert that worked against the old cluster is getting
>>>>>> the
>>>>>>>> same trust error (PKIX path building failed).  I've verified that
>>>>> the
>>>>>>>> client cert was issued by an issuer that is definitely in the
>>>>>>>> ./conf/truststore.jks as a trustedCertEntry.
>>>>>>>> 
>>>>>>>> 2020-02-26 17:11:09,573 WARN [Replicate Request Thread-7]
>>>>>>>> o.a.n.c.c.h.r.ThreadPoolRequestReplicator
>>>>>>>> javax.net.ssl.SSLHandshakeException:
>>>>>>>> sun.security.validator.ValidatorException: PKIX path building
>>>>> failed:
>>>>>>>> sun.security.provider.certpath.SunCertPathBuilderException: unable
>>>>> to
>>>>>>> find
>>>>>>>> valid certification path to r
>>>>>>>> equested target
>>>>>>>>       at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
>>>>>>>>       at
>>>>>> sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1946)
>>>>>>>>       at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:316)
>>>>>>>>       at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:310)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1639)
>>>>>>>>       at
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:223)
>>>>>>>>       at
>>>>>> sun.security.ssl.Handshaker.processLoop(Handshaker.java:1037)
>>>>>>>>       at
>>>>>>> sun.security.ssl.Handshaker.process_record(Handshaker.java:965)
>>>>>>>>       at
>>>>>>>> sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1064)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1367)
>>>>>>>>       at
>>>>>>>> 
>>>>> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1395)
>>>>>>>>       at
>>>>>>>> 
>>>>> sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1379)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.RealConnection.connectTls(RealConnection.java:302)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.RealConnection.establishProtocol(RealConnection.java:270)
>>>>>>>>       at
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.RealConnection.connect(RealConnection.java:162)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.StreamAllocation.findConnection(StreamAllocation.java:257)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.StreamAllocation.findHealthyConnection(StreamAllocation.java:135)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.StreamAllocation.newStream(StreamAllocation.java:114)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.connection.ConnectInterceptor.intercept(ConnectInterceptor.java:42)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
>>>>>>>>       at
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.cache.CacheInterceptor.intercept(CacheInterceptor.java:93)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.BridgeInterceptor.intercept(BridgeInterceptor.java:93)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RetryAndFollowUpInterceptor.intercept(RetryAndFollowUpInterceptor.java:126)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:147)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> okhttp3.internal.http.RealInterceptorChain.proceed(RealInterceptorChain.java:121)
>>>>>>>>       at
>>>>>>>> okhttp3.RealCall.getResponseWithInterceptorChain(RealCall.java:200)
>>>>>>>>       at okhttp3.RealCall.execute(RealCall.java:77)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> org.apache.nifi.cluster.coordination.http.replication.okhttp.OkHttpReplicationClient.replicate(OkHttpReplicationClient.java:143)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> org.apache.nifi.cluster.coordination.http.replication.okhttp.OkHttpReplicationClient.replicate(OkHttpReplicationClient.java:137)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> org.apache.nifi.cluster.coordination.http.replication.ThreadPoolRequestReplicator.replicateRequest(ThreadPoolRequestReplicator.java:647)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> org.apache.nifi.cluster.coordination.http.replication.ThreadPoolRequestReplicator$NodeHttpRequest.run(ThreadPoolRequestReplicator.java:839)
>>>>>>>>       at
>>>>>>>> 
>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>>>>>>>>       at java.util.concurrent.FutureTask.run(FutureTask.java:266)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
>>>>>>>>       at java.lang.Thread.run(Thread.java:748)
>>>>>>>> Caused by: sun.security.validator.ValidatorException: PKIX path
>>>>>> building
>>>>>>>> failed: sun.security.provider.certpath.SunCertPathBuilderException:
>>>>>>> unable
>>>>>>>> to find valid certification path to requested target
>>>>>>>>       at
>>>>>>>> sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:397)
>>>>>>>>       at
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:302)
>>>>>>>>       at
>>>>>> sun.security.validator.Validator.validate(Validator.java:262)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:330)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:237)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:132)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1621)
>>>>>>>>       ... 35 common frames omitted
>>>>>>>> Caused by:
>>>>> sun.security.provider.certpath.SunCertPathBuilderException:
>>>>>>>> unable to find valid certification path to requested target
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)
>>>>>>>>       at
>>>>>>>> 
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>> sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)
>>>>>>>>       at
>>>>>>>> java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)
>>>>>>>>       at
>>>>>>>> sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:392)
>>>>>>>>       ... 41 common frames omitted
>>>>>>>> 
>>>>>>>> Thanks,
>>>>>>>> Joe
>>>>>>>> 
>>>>>>> 
>>>>>> 
>>>>> 
>>>> 
>> 
>> 

Reply via email to