Hi, I've set up broker ssl successfully. Here is the detail.
*[broker]* 1. run shell script (generate ssl key, certificate and CA and sign the certificate) 2. here is server.properties on brokers. listeners=PLAINTEXT://:9092,SSL://:9093 ssl.keystore.location=/opt/kafka/keys/server.keystore.jks ssl.keystore.password=test1234 ssl.key.password=test1234 ssl.truststore.location=/opt/kafka/keys/server.truststore.jks ssl.truststore.password=test1234 ssl.client.auth=required ssl.enabled.protocols=TLSv1.2,TLSv1.1,TLSv1 After that I've checked server.log and it has below info. with addresses: PLAINTEXT -> EndPoint(192.168.64.1,9092,PLAINTEXT),SSL -> EndPoint(192.168.64.1,9093,SSL) And I also run below command and can see the proper server's certificate. openssl s_client -debug -connect localhost:9093 -tls1 But When I run mirror maker process on the other mirror maker machine, I got error. *[Mirror Maker]* 1. I've run the same shell script which I've run for broker. (generate ssl key, certificate and CA and sign the certificate) 2. Here is my mirror maker consumer configuration. bootstrap.servers=brokerhost:9093 group.id=kafkaMirror security.protocol=SSL ssl.truststore.location=/opt/kafka/keys/client.truststore.jks ssl.truststore.password=test1234 ssl.enabled.protocols=TLSv1 ssl.keystore.location=/opt/kafka/keys/client.keystore.jks ssl.keystore.password=test1234 ssl.key.password=test1234 After that I tried below command. Below 3 command got same error. bin/kafka-mirror-maker.sh --new.consumer --consumer.config config/ssl_consumer.properties --producer.config config/producer.properties --num.streams 10 --whitelist=test bin/kafka-console-producer.sh --broker-list brokerhost:9093 --topic test --producer.config config/ssl_client.properties bin/kafka-console-consumer.sh --bootstrap-server brokerhost:9093 --topic test --new-consumer --consumer.config config/ssl_client.properties DEBUG Connection with {broker host}/{ip} disconnected (org.apache.kafka.common.network.Selector) javax.net.ssl.SSLHandshakeException: General SSLEngine problem at sun.security.ssl.Handshaker.checkThrown(Handshaker.java:1431) 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.kafka.common.network.SslTransportLayer.handshakeWrap(SslTransportLayer.java:377) at org.apache.kafka.common.network.SslTransportLayer.handshake(SslTransportLayer.java:242) at org.apache.kafka.common.network.KafkaChannel.prepare(KafkaChannel.java:68) at org.apache.kafka.common.network.Selector.poll(Selector.java:281) at org.apache.kafka.clients.NetworkClient.poll(NetworkClient.java:270) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:216) at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:128) at java.lang.Thread.run(Thread.java:745) 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:304) at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:296) at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1478) at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:212) at sun.security.ssl.Handshaker.processLoop(Handshaker.java:979) at sun.security.ssl.Handshaker$1.run(Handshaker.java:919) at sun.security.ssl.Handshaker$1.run(Handshaker.java:916) at java.security.AccessController.doPrivileged(Native Method) at sun.security.ssl.Handshaker$DelegatedTask.run(Handshaker.java:1369) at org.apache.kafka.common.network.SslTransportLayer.runDelegatedTasks(SslTransportLayer.java:335) at org.apache.kafka.common.network.SslTransportLayer.handshakeUnwrap(SslTransportLayer.java:413) at org.apache.kafka.common.network.SslTransportLayer.handshake(SslTransportLayer.java:269) ... 6 more 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:387) at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:292) at sun.security.validator.Validator.validate(Validator.java:260) 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:1465) ... 15 more 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:145) at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:131) at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:280) t sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:382) How can I fix this error? Thanks.