<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>question Re: Nifi Kafka Confluent - SSL handshake failed in Support Questions</title>
    <link>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/348004#M235299</link>
    <description>&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/99271"&gt;@Alevc&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;/LI-CODE&gt;&lt;P&gt;The above exception you are encountering with TLS is caused by a lack of a complete trust chain in the mutual TLS handshake.&lt;BR /&gt;&lt;BR /&gt;On each side (server and client) of your TLS connection, you will have a keystore containing a PrivateKey entry (Will support and extended key usage (EKU) of clientAuth, serverAuth, or both) that either your client or server will use to identify itself.&amp;nbsp; &amp;nbsp;That PrivateKey entry will have an owner and issuer DN associated with it.&amp;nbsp; &amp;nbsp;The issuer is the signer for the owner.&amp;nbsp; Each side will also have a truststore (just another keystore by a different name containing a bunch of TrustedCertEntry(s)) that would need to contain the trustedCertEntry for the issuer/signer of your PrivateKeyEntry.&amp;nbsp; It is also very common that the issuer/signer trustedCertEntry has an owner DN and Issuer DN that do not match. This means that that issuer was just an intermediate Certificate Authority (CA) and was issued/signed by another CA.&amp;nbsp; As such the truststore would need to also contain the TrustedCertEntry for that next level issuer CA.&amp;nbsp; This continues until you reach the root CA trustedCertEntry where the owner and issuer have the same DN.&amp;nbsp; This is known as the rootCA for your PriavteKeyEntry.&amp;nbsp; &amp;nbsp;Having all the intermediate CA(s) and the root CA, means you have the complete trust chain in your truststore.&amp;nbsp; This process applies in both directions in the mutual TSL handshake.&amp;nbsp; Meaning your clientAuth certificate presented by your Kafka Consumer must have its complete trust chain in the Kafka servers truststore.&amp;nbsp; And the ServerAuth certificate presented by your server must have its complete trust chain present in the truststore used by your client Kafka consumer.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;/EM&gt; I am over simplifying this mutual TLS handshake (private keys themselves are never shared and there is more in the server and client hello exchanges in the TLS handshake), but intent is to focus at a high level on what your issue is caused by specifically.&lt;BR /&gt;&lt;BR /&gt;So to get past your issue, you need to make sure the truststore used by your client and server side contain all the CAs trust chain trustedCertEntries.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;If you found this response assisted with your query, please take a moment to login and click on "&lt;STRONG&gt;Accept as Solution&lt;/STRONG&gt;" below this post.&lt;BR /&gt;&lt;BR /&gt;Thank you,&lt;/P&gt;&lt;P&gt;Matt&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Mon, 18 Jul 2022 19:45:33 GMT</pubDate>
    <dc:creator>MattWho</dc:creator>
    <dc:date>2022-07-18T19:45:33Z</dc:date>
    <item>
      <title>Nifi Kafka Confluent - SSL handshake failed</title>
      <link>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/347986#M235288</link>
      <description>&lt;P&gt;Hi, I'm trying to make a kafka consumer working, but I am having this issue about SSL Handshake failed. Any ideas ?&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;2022-07-18 14:00:45,216 INFO [NiFi Web Server-203] o.a.n.c.s.StandardProcessScheduler Starting ConsumeKafkaRecord_2_6[id=f5ee162d-1006-1181-c1d1-1d8a7293ffb7]&lt;BR /&gt;2022-07-18 14:00:45,217 INFO [NiFi Web Server-203] o.a.n.controller.StandardProcessorNode Starting ConsumeKafkaRecord_2_6[id=f5ee162d-1006-1181-c1d1-1d8a7293ffb7]&lt;BR /&gt;2022-07-18 14:00:45,217 INFO [Timer-Driven Process Thread-5] o.a.n.c.s.TimerDrivenSchedulingAgent Scheduled ConsumeKafkaRecord_2_6[id=f5ee162d-1006-1181-c1d1-1d8a7293ffb7] to run with 1 threads&lt;BR /&gt;2022-07-18 14:00:45,219 INFO [Timer-Driven Process Thread-8] o.a.k.clients.consumer.ConsumerConfig ConsumerConfig values:&lt;BR /&gt;allow.auto.create.topics = true&lt;BR /&gt;auto.commit.interval.ms = 5000&lt;BR /&gt;auto.offset.reset = latest&lt;BR /&gt;bootstrap.servers = [bootstrap-url:9092]&lt;BR /&gt;check.crcs = true&lt;BR /&gt;client.dns.lookup = use_all_dns_ips&lt;BR /&gt;client.id = consumer-integration.cubo-transactions-consumer-20&lt;BR /&gt;client.rack =&lt;BR /&gt;connections.max.idle.ms = 540000&lt;BR /&gt;default.api.timeout.ms = 60000&lt;BR /&gt;enable.auto.commit = false&lt;BR /&gt;exclude.internal.topics = true&lt;BR /&gt;fetch.max.bytes = 52428800&lt;BR /&gt;fetch.max.wait.ms = 500&lt;BR /&gt;fetch.min.bytes = 1&lt;BR /&gt;group.id = integration.cubo-transactions-consumer&lt;BR /&gt;group.instance.id = null&lt;BR /&gt;heartbeat.interval.ms = 3000&lt;BR /&gt;interceptor.classes = []&lt;BR /&gt;internal.leave.group.on.close = true&lt;BR /&gt;internal.throw.on.fetch.stable.offset.unsupported = false&lt;BR /&gt;isolation.level = read_uncommitted&lt;BR /&gt;key.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer&lt;BR /&gt;max.partition.fetch.bytes = 1048576&lt;BR /&gt;max.poll.interval.ms = 300000&lt;BR /&gt;max.poll.records = 10000&lt;BR /&gt;metadata.max.age.ms = 300000&lt;BR /&gt;metric.reporters = []&lt;BR /&gt;metrics.num.samples = 2&lt;BR /&gt;metrics.recording.level = INFO&lt;BR /&gt;metrics.sample.window.ms = 30000&lt;BR /&gt;partition.assignment.strategy = [class org.apache.kafka.clients.consumer.RangeAssignor]&lt;BR /&gt;receive.buffer.bytes = 65536&lt;BR /&gt;reconnect.backoff.max.ms = 1000&lt;BR /&gt;reconnect.backoff.ms = 50&lt;BR /&gt;request.timeout.ms = 30000&lt;BR /&gt;retry.backoff.ms = 100&lt;BR /&gt;sasl.client.callback.handler.class = null&lt;BR /&gt;sasl.jaas.config = [hidden]&lt;BR /&gt;sasl.kerberos.kinit.cmd = /usr/bin/kinit&lt;BR /&gt;sasl.kerberos.min.time.before.relogin = 60000&lt;BR /&gt;sasl.kerberos.service.name = null&lt;BR /&gt;sasl.kerberos.ticket.renew.jitter = 0.05&lt;BR /&gt;sasl.kerberos.ticket.renew.window.factor = 0.8&lt;BR /&gt;sasl.login.callback.handler.class = null&lt;BR /&gt;sasl.login.class = null&lt;BR /&gt;sasl.login.refresh.buffer.seconds = 300&lt;BR /&gt;sasl.login.refresh.min.period.seconds = 60&lt;BR /&gt;sasl.login.refresh.window.factor = 0.8&lt;BR /&gt;sasl.login.refresh.window.jitter = 0.05&lt;BR /&gt;sasl.mechanism = SCRAM-SHA-512&lt;BR /&gt;security.protocol = SASL_SSL&lt;BR /&gt;security.providers = null&lt;BR /&gt;send.buffer.bytes = 131072&lt;BR /&gt;session.timeout.ms = 10000&lt;BR /&gt;ssl.cipher.suites = null&lt;BR /&gt;ssl.enabled.protocols = [TLSv1.2]&lt;BR /&gt;ssl.endpoint.identification.algorithm = https&lt;BR /&gt;ssl.engine.factory.class = null&lt;BR /&gt;ssl.key.password = null&lt;BR /&gt;ssl.keymanager.algorithm = SunX509&lt;BR /&gt;ssl.keystore.location = null&lt;BR /&gt;ssl.keystore.password = null&lt;BR /&gt;ssl.keystore.type = JKS&lt;BR /&gt;ssl.protocol = TLSv1.2&lt;BR /&gt;ssl.provider = null&lt;BR /&gt;ssl.secure.random.implementation = null&lt;BR /&gt;ssl.trustmanager.algorithm = PKIX&lt;BR /&gt;ssl.truststore.location = /opt/nifi-toolkit-1.15.3/bin/target/CN=localhost_OU=NIFI.p12&lt;BR /&gt;ssl.truststore.password = [hidden]&lt;BR /&gt;ssl.truststore.type = PKCS12&lt;BR /&gt;value.deserializer = class org.apache.kafka.common.serialization.ByteArrayDeserializer&lt;/P&gt;&lt;P&gt;2022-07-18 14:00:45,224 INFO [Timer-Driven Process Thread-8] o.a.k.c.s.authenticator.AbstractLogin Successfully logged in.&lt;BR /&gt;2022-07-18 14:00:45,291 INFO [Timer-Driven Process Thread-8] o.a.kafka.common.utils.AppInfoParser Kafka version: 2.6.3&lt;BR /&gt;2022-07-18 14:00:45,291 INFO [Timer-Driven Process Thread-8] o.a.kafka.common.utils.AppInfoParser Kafka commitId: c24cbd3f5eeffa1e&lt;BR /&gt;2022-07-18 14:00:45,291 INFO [Timer-Driven Process Thread-8] o.a.kafka.common.utils.AppInfoParser Kafka startTimeMs: 1658163645291&lt;BR /&gt;2022-07-18 14:00:45,291 INFO [Timer-Driven Process Thread-8] o.a.kafka.clients.consumer.KafkaConsumer [Consumer clientId=consumer-integration.cubo-transactions-consumer-20, groupId=integration.cubo-transactions-consumer] Subscribed to topic(s): integration.cubo-transactions&lt;BR /&gt;2022-07-18 14:00:45,386 INFO [Flow Service Tasks Thread-1] o.a.nifi.controller.StandardFlowService Saved flow controller org.apache.nifi.controller.FlowController@558d7d23 // Another save pending = false&lt;BR /&gt;2022-07-18 14:00:45,532 INFO [pool-9-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Initiating checkpoint of FlowFile Repository&lt;BR /&gt;2022-07-18 14:00:45,532 INFO [pool-9-thread-1] o.a.n.c.r.WriteAheadFlowFileRepository Successfully checkpointed FlowFile Repository with 28 records in 0 milliseconds&lt;BR /&gt;2022-07-18 14:00:47,314 INFO [Timer-Driven Process Thread-2] org.apache.kafka.common.network.Selector [Consumer clientId=consumer-integration.cubo-transactions-consumer-20, groupId=integration.cubo-transactions-consumer] Failed authentication with bootstrap-url (SSL handshake failed)&lt;BR /&gt;2022-07-18 14:00:47,314 ERROR [Timer-Driven Process Thread-2] org.apache.kafka.clients.NetworkClient [Consumer clientId=consumer-integration.cubo-transactions-consumer-20, groupId=integration.cubo-transactions-consumer] Connection to node -1 (bootstrap-url:9092) failed authentication due to: SSL handshake failed&lt;BR /&gt;2022-07-18 14:00:47,314 WARN [Timer-Driven Process Thread-2] org.apache.kafka.clients.NetworkClient [Consumer clientId=consumer-integration.cubo-transactions-consumer-20, groupId=integration.cubo-transactions-consumer] Bootstrap broker bootstrap-url:9092 (id: -1 rack: null) disconnected&lt;BR /&gt;2022-07-18 14:00:47,315 ERROR [Timer-Driven Process Thread-2] o.a.n.p.k.pubsub.ConsumeKafkaRecord_2_6 ConsumeKafkaRecord_2_6[id=f5ee162d-1006-1181-c1d1-1d8a7293ffb7] Exception while interacting with Kafka so will close the lease org.apache.nifi.processors.kafka.pubsub.ConsumerPool$SimpleConsumerLease@6e83a054 due to org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;↳ causes: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;↳ causes: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;↳ causes: org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed&lt;BR /&gt;org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake failed&lt;BR /&gt;Caused by: javax.net.ssl.SSLHandshakeException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;at sun.security.ssl.Alert.createSSLException(Alert.java:131)&lt;BR /&gt;at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)&lt;BR /&gt;at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)&lt;BR /&gt;at sun.security.ssl.TransportContext.fatal(TransportContext.java:262)&lt;BR /&gt;at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)&lt;BR /&gt;at sun.security.ssl.CertificateMessage$T12CertificateConsumer.onCertificate(CertificateMessage.java:473)&lt;BR /&gt;at sun.security.ssl.CertificateMessage$T12CertificateConsumer.consume(CertificateMessage.java:369)&lt;BR /&gt;at sun.security.ssl.SSLHandshake.consume(SSLHandshake.java:377)&lt;BR /&gt;at sun.security.ssl.HandshakeContext.dispatch(HandshakeContext.java:444)&lt;BR /&gt;at sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:981)&lt;BR /&gt;at sun.security.ssl.SSLEngineImpl$DelegatedTask$DelegatedAction.run(SSLEngineImpl.java:968)&lt;BR /&gt;at java.security.AccessController.doPrivileged(Native Method)&lt;BR /&gt;at sun.security.ssl.SSLEngineImpl$DelegatedTask.run(SSLEngineImpl.java:915)&lt;BR /&gt;at org.apache.kafka.common.network.SslTransportLayer.runDelegatedTasks(SslTransportLayer.java:430)&lt;BR /&gt;at org.apache.kafka.common.network.SslTransportLayer.handshakeUnwrap(SslTransportLayer.java:514)&lt;BR /&gt;at org.apache.kafka.common.network.SslTransportLayer.doHandshake(SslTransportLayer.java:368)&lt;BR /&gt;at org.apache.kafka.common.network.SslTransportLayer.handshake(SslTransportLayer.java:291)&lt;BR /&gt;at org.apache.kafka.common.network.KafkaChannel.prepare(KafkaChannel.java:173)&lt;BR /&gt;at org.apache.kafka.common.network.Selector.pollSelectionKeys(Selector.java:547)&lt;BR /&gt;at org.apache.kafka.common.network.Selector.poll(Selector.java:485)&lt;BR /&gt;at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:547)&lt;BR /&gt;at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:265)&lt;BR /&gt;at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:236)&lt;BR /&gt;at org.apache.kafka.clients.consumer.internals.ConsumerNetworkClient.poll(ConsumerNetworkClient.java:215)&lt;BR /&gt;at org.apache.kafka.clients.consumer.internals.AbstractCoordinator.ensureCoordinatorReady(AbstractCoordinator.java:245)&lt;BR /&gt;at org.apache.kafka.clients.consumer.internals.ConsumerCoordinator.poll(ConsumerCoordinator.java:480)&lt;BR /&gt;at org.apache.kafka.clients.consumer.KafkaConsumer.updateAssignmentMetadataIfNeeded(KafkaConsumer.java:1261)&lt;BR /&gt;at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1230)&lt;BR /&gt;at org.apache.kafka.clients.consumer.KafkaConsumer.poll(KafkaConsumer.java:1210)&lt;BR /&gt;at org.apache.nifi.processors.kafka.pubsub.ConsumerLease.poll(ConsumerLease.java:190)&lt;BR /&gt;at org.apache.nifi.processors.kafka.pubsub.ConsumeKafkaRecord_2_6.onTrigger(ConsumeKafkaRecord_2_6.java:488)&lt;BR /&gt;at org.apache.nifi.processor.AbstractProcessor.onTrigger(AbstractProcessor.java:27)&lt;BR /&gt;at org.apache.nifi.controller.StandardProcessorNode.onTrigger(StandardProcessorNode.java:1273)&lt;BR /&gt;at org.apache.nifi.controller.tasks.ConnectableTask.invoke(ConnectableTask.java:214)&lt;BR /&gt;at org.apache.nifi.controller.scheduling.TimerDrivenSchedulingAgent$1.run(TimerDrivenSchedulingAgent.java:103)&lt;BR /&gt;at org.apache.nifi.engine.FlowEngine$2.run(FlowEngine.java:110)&lt;BR /&gt;at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)&lt;BR /&gt;at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)&lt;BR /&gt;at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)&lt;BR /&gt;at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)&lt;BR /&gt;at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)&lt;BR /&gt;at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)&lt;BR /&gt;at java.lang.Thread.run(Thread.java:748)&lt;BR /&gt;Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:456)&lt;BR /&gt;at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:323)&lt;BR /&gt;at sun.security.validator.Validator.validate(Validator.java:271)&lt;BR /&gt;at sun.security.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:315)&lt;BR /&gt;at sun.security.ssl.X509TrustManagerImpl.checkTrusted(X509TrustManagerImpl.java:278)&lt;BR /&gt;at sun.security.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:141)&lt;BR /&gt;at sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:632)&lt;BR /&gt;... 38 common frames omitted&lt;BR /&gt;Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;BR /&gt;at sun.security.provider.certpath.SunCertPathBuilder.build(SunCertPathBuilder.java:141)&lt;BR /&gt;at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:126)&lt;BR /&gt;at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280)&lt;BR /&gt;at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:451)&lt;BR /&gt;... 44 common frames omitted&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2022 17:19:26 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/347986#M235288</guid>
      <dc:creator>Alevc</dc:creator>
      <dc:date>2022-07-18T17:19:26Z</dc:date>
    </item>
    <item>
      <title>Re: Nifi Kafka Confluent - SSL handshake failed</title>
      <link>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/348004#M235299</link>
      <description>&lt;P&gt;&lt;a href="https://community.cloudera.com/t5/user/viewprofilepage/user-id/99271"&gt;@Alevc&lt;/a&gt;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;LI-CODE lang="markup"&gt;Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target&lt;/LI-CODE&gt;&lt;P&gt;The above exception you are encountering with TLS is caused by a lack of a complete trust chain in the mutual TLS handshake.&lt;BR /&gt;&lt;BR /&gt;On each side (server and client) of your TLS connection, you will have a keystore containing a PrivateKey entry (Will support and extended key usage (EKU) of clientAuth, serverAuth, or both) that either your client or server will use to identify itself.&amp;nbsp; &amp;nbsp;That PrivateKey entry will have an owner and issuer DN associated with it.&amp;nbsp; &amp;nbsp;The issuer is the signer for the owner.&amp;nbsp; Each side will also have a truststore (just another keystore by a different name containing a bunch of TrustedCertEntry(s)) that would need to contain the trustedCertEntry for the issuer/signer of your PrivateKeyEntry.&amp;nbsp; It is also very common that the issuer/signer trustedCertEntry has an owner DN and Issuer DN that do not match. This means that that issuer was just an intermediate Certificate Authority (CA) and was issued/signed by another CA.&amp;nbsp; As such the truststore would need to also contain the TrustedCertEntry for that next level issuer CA.&amp;nbsp; This continues until you reach the root CA trustedCertEntry where the owner and issuer have the same DN.&amp;nbsp; This is known as the rootCA for your PriavteKeyEntry.&amp;nbsp; &amp;nbsp;Having all the intermediate CA(s) and the root CA, means you have the complete trust chain in your truststore.&amp;nbsp; This process applies in both directions in the mutual TSL handshake.&amp;nbsp; Meaning your clientAuth certificate presented by your Kafka Consumer must have its complete trust chain in the Kafka servers truststore.&amp;nbsp; And the ServerAuth certificate presented by your server must have its complete trust chain present in the truststore used by your client Kafka consumer.&amp;nbsp;&amp;nbsp;&lt;BR /&gt;&lt;BR /&gt;&lt;EM&gt;&lt;STRONG&gt;Note:&lt;/STRONG&gt;&lt;/EM&gt; I am over simplifying this mutual TLS handshake (private keys themselves are never shared and there is more in the server and client hello exchanges in the TLS handshake), but intent is to focus at a high level on what your issue is caused by specifically.&lt;BR /&gt;&lt;BR /&gt;So to get past your issue, you need to make sure the truststore used by your client and server side contain all the CAs trust chain trustedCertEntries.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;&lt;P&gt;If you found this response assisted with your query, please take a moment to login and click on "&lt;STRONG&gt;Accept as Solution&lt;/STRONG&gt;" below this post.&lt;BR /&gt;&lt;BR /&gt;Thank you,&lt;/P&gt;&lt;P&gt;Matt&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2022 19:45:33 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/348004#M235299</guid>
      <dc:creator>MattWho</dc:creator>
      <dc:date>2022-07-18T19:45:33Z</dc:date>
    </item>
    <item>
      <title>Re: Nifi Kafka Confluent - SSL handshake failed</title>
      <link>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/348012#M235302</link>
      <description>&lt;P&gt;Hi Matt, thanks a lot for the explanation. I changed the&amp;nbsp;path from truststore.jks to&amp;nbsp;$JAVA_HOME&lt;SPAN&gt;\lib\security\cacerts&lt;/SPAN&gt; on the&amp;nbsp;&lt;SPAN&gt;StandardRestrictedSSLContextService settings , and worked fine !!!&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 18 Jul 2022 21:02:13 GMT</pubDate>
      <guid>https://community.cloudera.com/t5/Support-Questions/Nifi-Kafka-Confluent-SSL-handshake-failed/m-p/348012#M235302</guid>
      <dc:creator>Alevc</dc:creator>
      <dc:date>2022-07-18T21:02:13Z</dc:date>
    </item>
  </channel>
</rss>

