Peter,

Looks like this won't make it into 1.10, but it's a simple patch to apply
if you download the source code for 1.10 and apply it manually.

Mike

On Tue, Oct 22, 2019 at 2:46 PM Matt Burgess <mattyb...@gmail.com> wrote:

> For saving space (if you want to run from the assembly/target directory)
> you can add a -Ddir-only and it won’t build the tar.gz.
>
>
>
>
> Sent from my iPhone
>
> On Oct 22, 2019, at 2:25 PM, Mike Thomsen <mikerthom...@gmail.com> wrote:
>
> 
> If you run `mvn clean install -DskipTests=true` from the root of the
> source folder, you'll get a tar.gz build in $ROOT/nifi-assembly/target. I'd
> recommend testing against that as it'll be faster.
>
> On Tue, Oct 22, 2019 at 1:56 PM Peter Moberg <peter.mob...@gmail.com>
> wrote:
>
>> Mike,
>>
>> thanks for putting together that PR. I have built everything successfully
>> but I haven't been able to test this yet since I haven't built the new
>> Docker image.
>>
>> I assume you guys just use the ‘dockermaven’  folder to build the
>> Dockerfile with src artifacts?
>>
>> My current dev machine is running out of disk space so I am spending some
>> time trying to get it back to a runnable state. Hopefully I can build the
>> PR and test it in Kubernetes this week sometime.
>>
>> Thanks,
>>
>> Peter
>> On Oct 20, 2019, 7:11 AM -0500, Mike Thomsen <mikerthom...@gmail.com>,
>> wrote:
>>
>> As a compromise, I upgraded to the latest 5.X client and manually
>> incremented Apache HttpClient to 4.5.10. PR is here:
>>
>> https://github.com/apache/nifi/pull/3828
>>
>> There are integration tests for that package that automatically startup
>> and provision an ES node, and they all passed with this configuration.
>> Hopefully this PR will fix your issue since it appears to be an external
>> dependency causing it.
>>
>> On Sun, Oct 20, 2019 at 5:26 AM Mike Thomsen <mikerthom...@gmail.com>
>> wrote:
>>
>>> There's no hard and fast reason to stay with 5.X there, so you can build
>>> your own copy of 1.9.2 with that dependency upgraded if you want to try it
>>> out. I'll try to find time to test that change on 1.10.0-SNAPSHOT.
>>>
>>> On Sun, Oct 20, 2019 at 1:52 AM Peter Moberg <peter.mob...@gmail.com>
>>> wrote:
>>>
>>>> The certs in the TrustStore are marked as trusted.
>>>>
>>>> The host name specified in the ClientServiceImpl is:
>>>> https://quickstart-es-http.es-cluster:9200
>>>>
>>>> The CN field of the server certificate is:
>>>> https://quickstart-es-http.es-cluster.es.local
>>>>
>>>> So at first glance it looks like the issue would be that the CN field
>>>> differs from the host name. However, Im not getting an error message saying
>>>> that the HostName doesn’t match the CN. According to the RFC spec first
>>>> mentioned by Andy the CN field should only be used if the
>>>> SubjectiveAlternativeName is empty.
>>>>
>>>> The Server Cert has the SAN set to:  quickstart-es-http.es-cluster
>>>>
>>>> What is really strange to me is why I can connect using the
>>>> QueryElasticSearch processor with the same SSLContextService and hostname
>>>> but when I use the ClientServicesImpl it will not work.
>>>>
>>>> So I did some more investigation and it looks like the QueryES
>>>> processor uses the okHTTP library and ClientServicesImpl uses the Elastic
>>>> Search RestClient which in turn uses the HTTPClient from Apache.
>>>>
>>>> There was an issue with the HTTPClient library in v4.5.2 (
>>>> https://issues.apache.org/jira/browse/HTTPCLIENT-1802) where it didn’t
>>>> do the right hostname verification.
>>>>
>>>> The version of Apache Nifi that Im using is 1.9.2 and it seems to use
>>>> v.5.6.8 of Elastic Search client libraries and that in turn uses v4.5.2 of
>>>> Apache HTTPClient.
>>>>
>>>>
>>>> https://github.com/elastic/elasticsearch/blob/v5.6.8/buildSrc/version.properties
>>>>
>>>> But again if it was a HostName validation issue the error message
>>>> should read more like: “Certificate for <host> doesn’t match common name of
>>>> certificate subject…”
>>>>
>>>> On Oct 19, 2019, 7:39 AM -0500, Mike Thomsen <mikerthom...@gmail.com>,
>>>> wrote:
>>>>
>>>> I'm far from a SSL/TLS expert, but let's get these out of the way:
>>>>
>>>> 1. Did you mark the server's cert as "trusted" when you created the
>>>> trust store with keytool?
>>>> 2. Are you sure that you're specifying the same hostname in the client
>>>> service that is in the CN field in the server's cert?
>>>>
>>>> FWIW, if you grab the NiFi TLS Toolkit from nifi.apache.org, you can
>>>> use it to generate valid certificates. It's meant for NiFi, but the certs
>>>> it generates should be a solid step up from self-signed certs if you're not
>>>> able to access a company CA.
>>>>
>>>> On Sat, Oct 19, 2019 at 2:06 AM Peter Moberg <peter.mob...@gmail.com>
>>>> wrote:
>>>>
>>>>> Nope. No good. I even dump the network traffic and analyzed it in
>>>>> Wireshark. The ES server sends back two certificates (server + self-signed
>>>>> one) and both of them are present in my TrustStore. I am specifying both a
>>>>> TrustStore and a Keystore now but it still gives the error that it can’t
>>>>> find the certificate.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Peter
>>>>> On Oct 18, 2019, 4:44 PM -0500, Peter Moberg <peter.mob...@gmail.com>,
>>>>> wrote:
>>>>>
>>>>> Think I might have found the issue. Will report tonight.
>>>>>
>>>>> Mike, please don’t spend any time debugging this because I think it
>>>>> might be an issue on my side. Appreciate all the help so far.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Peter
>>>>> On Oct 18, 2019, 2:21 PM -0500, Peter Moberg <peter.mob...@gmail.com>,
>>>>> wrote:
>>>>>
>>>>> Here it is:
>>>>>
>>>>>
>>>>> 2019-10-18 18:47:02,548 ERROR [Timer-Driven Process Thread-7]
>>>>> o.a.n.processors.standard.LookupRecord
>>>>> LookupRecord[id=df596687-016d-1000-0000-000065536eb2] Failed to process
>>>>> StandardFlowFileRecord[uuid=64d0d1f4-1960-4a91-9394-39edc9d6c9c7,claim=StandardContentClaim
>>>>> [resourceClaim=StandardResourceClaim[id=1571410822200-1, 
>>>>> container=default,
>>>>> section=1], offset=7180,
>>>>> length=20],offset=0,name=64d0d1f4-1960-4a91-9394-39edc9d6c9c7,size=20]:
>>>>> org.apache.nifi.processor.exception.ProcessException: Failed to lookup
>>>>> coordinates {key=test} in Lookup Service
>>>>> org.apache.nifi.processor.exception.ProcessException: Failed to lookup
>>>>> coordinates {key=test} in Lookup Service
>>>>> at
>>>>> org.apache.nifi.processors.standard.LookupRecord.route(LookupRecord.java:300)
>>>>> at
>>>>> org.apache.nifi.processors.standard.LookupRecord.route(LookupRecord.java:68)
>>>>> at
>>>>> org.apache.nifi.processors.standard.AbstractRouteRecord$1.process(AbstractRouteRecord.java:134)
>>>>> at
>>>>> org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2212)
>>>>> at
>>>>> org.apache.nifi.controller.repository.StandardProcessSession.read(StandardProcessSession.java:2180)
>>>>> at
>>>>> org.apache.nifi.processors.standard.AbstractRouteRecord.onTrigger(AbstractRouteRecord.java:121)
>>>>> at
>>>>> org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)
>>>>> at
>>>>> org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1162)
>>>>> at
>>>>> org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:209)
>>>>> at
>>>>> org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:117)
>>>>> at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)
>>>>> at
>>>>> java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
>>>>> at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
>>>>> at
>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
>>>>> at
>>>>> java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
>>>>> 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: org.apache.nifi.lookup.LookupFailureException:
>>>>> org.apache.nifi.lookup.LookupFailureException:
>>>>> javax.net.ssl.SSLHandshakeException: General SSLEngine problem
>>>>> at
>>>>> org.apache.nifi.elasticsearch.ElasticSearchLookupService.lookup(ElasticSearchLookupService.java:175)
>>>>> at sun.reflect.GeneratedMethodAccessor746.invoke(Unknown Source)
>>>>> at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
>>>>> at java.lang.reflect.Method.invoke(Method.java:498)
>>>>> at
>>>>> org.apache.nifi.controller.service.StandardControllerServiceInvocationHandler.invoke(StandardControllerServiceInvocationHandler.java:87)
>>>>> at com.sun.proxy.$Proxy136.lookup(Unknown Source)
>>>>> at
>>>>> org.apache.nifi.processors.standard.LookupRecord.route(LookupRecord.java:298)
>>>>> ... 17 common frames omitted
>>>>> Caused by: org.apache.nifi.lookup.LookupFailureException:
>>>>> javax.net.ssl.SSLHandshakeException: General SSLEngine problem
>>>>> at
>>>>> org.apache.nifi.elasticsearch.ElasticSearchLookupService.getByQuery(ElasticSearchLookupService.java:288)
>>>>> at
>>>>> org.apache.nifi.elasticsearch.ElasticSearchLookupService.lookup(ElasticSearchLookupService.java:169)
>>>>> ... 23 common frames omitted
>>>>> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine
>>>>> problem
>>>>> at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1529)
>>>>> at
>>>>> sun.security.ssl.SSLEngineImpl.checkTaskThrown(SSLEngineImpl.java:535)
>>>>> at
>>>>> sun.security.ssl.SSLEngineImpl.writeAppRecord(SSLEngineImpl.java:1214)
>>>>> at sun.security.ssl.SSLEngineImpl.wrap(SSLEngineImpl.java:1186)
>>>>> at javax.net.ssl.SSLEngine.wrap(SSLEngine.java:469)
>>>>> at
>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doWrap(SSLIOSession.java:265)
>>>>> at
>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:305)
>>>>> at
>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.isAppInputReady(SSLIOSession.java:509)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.AbstractIODispatch.inputReady(AbstractIODispatch.java:120)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.BaseIOReactor.readable(BaseIOReactor.java:162)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvent(AbstractIOReactor.java:337)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.AbstractIOReactor.processEvents(AbstractIOReactor.java:315)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:276)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104)
>>>>> at
>>>>> org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:588)
>>>>> ... 1 common frames omitted
>>>>> Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine
>>>>> problem
>>>>> at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
>>>>> at sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728)
>>>>> at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:330)
>>>>> at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322)
>>>>> at
>>>>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1633)
>>>>> at
>>>>> sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
>>>>> at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052)
>>>>> at sun.security.ssl.Handshaker$1.run(Handshaker.java:992)
>>>>> at sun.security.ssl.Handshaker$1.run(Handshaker.java:989)
>>>>> at java.security.AccessController.doPrivileged(Native Method)
>>>>> at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1467)
>>>>> at
>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:283)
>>>>> at
>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:353)
>>>>> ... 9 common frames omitted
>>>>> 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:324)
>>>>> at
>>>>> sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281)
>>>>> at
>>>>> sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
>>>>> at
>>>>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1620)
>>>>> ... 17 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)
>>>>> ... 23 common frames omitted
>>>>>
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Peter
>>>>> On Oct 18, 2019, 2:15 PM -0500, Mike Thomsen <mikerthom...@gmail.com>,
>>>>> wrote:
>>>>>
>>>>> Can you share the stacktrace from the logs?
>>>>>
>>>>> On Fri, Oct 18, 2019 at 2:38 PM Peter Moberg <peter.mob...@gmail.com>
>>>>> wrote:
>>>>>
>>>>>> Mike,
>>>>>>
>>>>>> The SSLContextService only had the Trust store configured. I think I
>>>>>> seen that ticket before but didn’t pay attention to the fact it wasn’t
>>>>>> merged in to the code I am running.
>>>>>>
>>>>>> However, I configured the service to have a KeyStore now but I am
>>>>>> getting the same errors…
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Peter
>>>>>> On Oct 18, 2019, 11:39 AM -0500, Mike Thomsen <mikerthom...@gmail.com>,
>>>>>> wrote:
>>>>>>
>>>>>> Peter,
>>>>>>
>>>>>> Are you configuring the service as a trust-only configuration? If so,
>>>>>> that's been addressed in the 1.10 which is due for release in the 
>>>>>> near(ish)
>>>>>> future.
>>>>>>
>>>>>> https://issues.apache.org/jira/browse/NIFI-6228
>>>>>>
>>>>>> Thanks,
>>>>>>
>>>>>> Mike
>>>>>>
>>>>>> On Fri, Oct 18, 2019 at 11:06 AM Peter Moberg <peter.mob...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> As a follow-up.
>>>>>>>
>>>>>>> On the Nifi node I am able to do a GET to Elastic Search using curl.
>>>>>>> I specify the —cacert option giving it the self-signed root certificate.
>>>>>>>
>>>>>>> Of course, this isn’t using the TrustStore but I am able to use the
>>>>>>> TrustStore if I use other ES processors… just not the
>>>>>>> ElasticSearchClientServicesImpl.
>>>>>>>
>>>>>>> On Oct 18, 2019, 12:48 AM -0500, Peter Moberg <
>>>>>>> peter.mob...@gmail.com>, wrote:
>>>>>>>
>>>>>>> Hi Andy,
>>>>>>>
>>>>>>> thanks for your suggestions. Here is what I have tried so far (still
>>>>>>> no luck).
>>>>>>>
>>>>>>> Connecting with openssl and viewing the certs it presents
>>>>>>>
>>>>>>> *openssl s_client -connect quickstart-es-http.es
>>>>>>> <http://quickstart-es-http.es>-cluster -showcerts*
>>>>>>>
>>>>>>> If I then look inside the server cert I can find this
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Server Cert: Issuer: OU = quickstart, CN = quickstart-http X509v3
>>>>>>> Subject Alternative Name: DNS:quickstart-es-http.es
>>>>>>> <http://quickstart-es-http.es>-cluster.es.local, DNS:quickstart-es-http,
>>>>>>> DNS:quickstart-es-http.es <http://quickstart-es-http.es>-cluster.svc,
>>>>>>> DNS:quickstart-es-http.es <http://quickstart-es-http.es>-cluster*
>>>>>>>
>>>>>>>
>>>>>>> If I look in to the self-signed root cert I find this:
>>>>>>>
>>>>>>>
>>>>>>> *Root Cert: Subject: OU = quickstart, CN = quickstart-http*
>>>>>>>
>>>>>>>
>>>>>>> I now double check  my trust store to make sure the Root Cert is
>>>>>>> there.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Trust store content Your keystore contains 1 entry Alias name:
>>>>>>> ca_elastic Creation date: Oct 16, 2019 Entry type: trustedCertEntry 
>>>>>>> Owner:
>>>>>>> CN=quickstart-http, OU=quickstart Issuer: CN=quickstart-http, 
>>>>>>> OU=quickstart
>>>>>>> Serial number: 5aa50b6806d2394fff6f98d2b7d4c287 Valid from: Fri Oct 11
>>>>>>> 14:35:01 UTC 2019 until: Sat Oct 10 14:36:01 UTC 2020 Certificate
>>>>>>> fingerprints: MD5: 1E:E3:33:13:EA:AC:B5:61:23:DE:2E:1A:D7:9C:AA:F0 SHA1:
>>>>>>> 62:EC:5B:EB:32:6A:38:3D:6A:6B:F7:10:5A:DE:E6:F1:F0:5B:07:99 SHA256:
>>>>>>> B4:B5:06:9C:50:5F:E8:A1:58:7C:C7:2C:37:52:2F:E0:CF:32:18:18:68:E4:C7:37:F8:82:B3:BC:61:EB:5B:CF
>>>>>>> Signature algorithm name: SHA256withRSA Subject Public Key Algorithm:
>>>>>>> 2048-bit RSA key Version: 3 Extensions: #1: ObjectId: 2.5.29.19
>>>>>>> Criticality=true BasicConstraints:[ CA:true PathLen:2147483647 ] #2:
>>>>>>> ObjectId: 2.5.29.37 Criticality=false ExtendedKeyUsages [ serverAuth
>>>>>>> clientAuth ] #3: ObjectId: 2.5.29.15 Criticality=true KeyUsage [
>>>>>>> DigitalSignature Key_CertSign ]*
>>>>>>>
>>>>>>> So everything looks Ok. But when I run the
>>>>>>> ElasticSearchClientServicesImpl with a SSLContext pointing to my trust
>>>>>>> store I still get the following output in the log.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> *Caused by: javax.net.ssl.SSLHandshakeException: General SSLEngine
>>>>>>> problem at sun.security.ssl.Alerts.getSSLException(Alerts.java:192) at
>>>>>>> sun.security.ssl.SSLEngineImpl.fatal(SSLEngineImpl.java:1728) at
>>>>>>> sun.security.ssl.Handshaker.fatalSE(Handshaker.java:330) at
>>>>>>> sun.security.ssl.Handshaker.fatalSE(Handshaker.java:322) at
>>>>>>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1633)
>>>>>>> at
>>>>>>> sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:216)
>>>>>>> at sun.security.ssl.Handshaker.processLoop(Handshaker.java:1052) at
>>>>>>> sun.security.ssl.Handshaker$1.run(Handshaker.java:992) at
>>>>>>> sun.security.ssl.Handshaker$1.run(Handshaker.java:989) at
>>>>>>> java.security.AccessController.doPrivileged(Native Method) at
>>>>>>> sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1467) at
>>>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doRunTask(SSLIOSession.java:283)
>>>>>>> at
>>>>>>> org.apache.http.nio.reactor.ssl.SSLIOSession.doHandshake(SSLIOSession.java:353)
>>>>>>> ... 9 common frames omitted 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:324)
>>>>>>> at
>>>>>>> sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:281)
>>>>>>> at
>>>>>>> sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:136)
>>>>>>> at
>>>>>>> sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1620)
>>>>>>> ... 17 common frames omitted*
>>>>>>>
>>>>>>> Both the Nifi install and Elastic Search install is running in
>>>>>>> Kubernetes. The address I am using is a service address that is backed 
>>>>>>> by 3
>>>>>>> ES instances. However, I double checked all three of the ES nodes to 
>>>>>>> make
>>>>>>> sure that they returned back the same SSL cert and they did.
>>>>>>>
>>>>>>> The only thing I haven't been able to figure out is how to check if
>>>>>>> Kubernetes/ES reacts differently when you do a GET vs POST. Feels 
>>>>>>> strange
>>>>>>> that it would return different SSL certs but stranger things have 
>>>>>>> happened…
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> On Oct 17, 2019, 3:25 PM -0500, Andy LoPresto <alopre...@apache.org>,
>>>>>>> wrote:
>>>>>>>
>>>>>>> Hi Peter,
>>>>>>>
>>>>>>> If you can use openssl’s s_client command (example below) to connect
>>>>>>> to the endpoint and verify that the hostname matches the certificate and
>>>>>>> that the certificate contains a SubjectAlternativeName entry with that
>>>>>>> hostname (see RFC 6125 [1] for more details), this should help you debug
>>>>>>> the issue. The cause of the PKIX error is that the truststore doesn’t
>>>>>>> contain a certificate (or certificate chain) which matches the hostname
>>>>>>> presented by the remote endpoint. I think you understand that based on 
>>>>>>> your
>>>>>>> message. The underlying reason for this is could be one of the 
>>>>>>> following:
>>>>>>>
>>>>>>> * the server is behind an interface which responds differently to
>>>>>>> GET and POST/PUT requests
>>>>>>> * there is a load-balancer which is directing the requests
>>>>>>> coincidentally to different backend servers (one has the right cert; the
>>>>>>> other doesn’t)
>>>>>>> * I recall something around the addition of (some) Elastic Search
>>>>>>> components which handled TLS in an ES client-specific manner; I remember
>>>>>>> advocating for standard NiFi TLS interaction here but I am not sure what
>>>>>>> was ultimately contributed. If it’s not one of the above issues, I can
>>>>>>> investigate further.
>>>>>>>
>>>>>>> Hopefully this helps.
>>>>>>>
>>>>>>> [1] https://tools.ietf.org/html/rfc6125#section-6.4.4
>>>>>>>
>>>>>>> s_client example:
>>>>>>>
>>>>>>> $ openssl s_client -connect <host:port> -debug -state -cert
>>>>>>> <path_to_your_cert.pem> -key <path_to_your_key.pem> -CAfile
>>>>>>> <path_to_your_CA_cert.pem>
>>>>>>>
>>>>>>> Andy LoPresto
>>>>>>> alopre...@apache.org
>>>>>>> *alopresto.apa...@gmail.com <alopresto.apa...@gmail.com>*
>>>>>>> PGP Fingerprint: 70EC B3E5 98A6 5A3F D3C4  BACE 3C6E F65B 2F7D EF69
>>>>>>>
>>>>>>> On Oct 16, 2019, at 8:37 PM, Peter Moberg <peter.mob...@gmail.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>> I have an Elastic Search cluster that is setup with SSL. It uses a
>>>>>>> self-signed cert for this. I am working with Apache Nifi 1.9.2. I have a
>>>>>>> flow that has the PutElasticSearchHttp component. I have setup a
>>>>>>> SSLContextService for that component where I have specified a trust 
>>>>>>> store
>>>>>>> that has the self-signed cert from ES. I specify an https endpoint to
>>>>>>> access Elastic Search and Im having no issues populating my Elastic 
>>>>>>> Search
>>>>>>> instance using this flow.
>>>>>>>
>>>>>>> I have another flow where I want to do some lookups. So I have been
>>>>>>> using the LookupRecord processor. That one I have associated with an
>>>>>>> ElasticSearchClientServiceImpl which I have setup to  point to the same
>>>>>>> SSLContextService as used above. I specified the same HTTPS Url (triple
>>>>>>> checked this). However, when I run this second Flow I am not able to 
>>>>>>> verify
>>>>>>> the ES server's self-signed certificate.
>>>>>>>
>>>>>>> I check the nifi-app.log and it says:
>>>>>>> Caused by:
>>>>>>> sun.security.provider.certpath.SunCertPathBuilderException: unable to 
>>>>>>> find
>>>>>>> valid certification path to requested target
>>>>>>>
>>>>>>> I am a bit surprised that I am not able to verify the same server
>>>>>>> certificate in the two different flows.
>>>>>>>
>>>>>>> Completely stuck on this so if anyone have any pointers please let
>>>>>>> me know.
>>>>>>>
>>>>>>> Thanks,
>>>>>>>
>>>>>>> Peter
>>>>>>>
>>>>>>>
>>>>>>>

Reply via email to