Hi Deepak,

I'm not sure what you mean by IP in the CA certificate?
The CA certificates are used to determine who signed a provided certificate
and if it is valid.
So when I connect to a broker using an IP address, then the server must
provide a server certificate containing the IP as SAN to verify the
handshake and signed by a CA that the client trusts.

If the IP address is used in the advertised listener configuration or if
only the listener is configured to the IP address then the client will fail
as well.
Because the client will open a new connection using the addresses provided
by the broker, which are IP based.

Can you check that the IP address is set as SAN in the broker Server
certificates?
And that the Kafka Broker configuration uses listeners like this?
listener=SSL://1.2.3.4:9092
advertised.listener=SSL://hostname:9092

This means that the hostname is used to connect to the broker, and the
hostname must be in the SAN to successfully connect.

How did you try to disable the hostname verifier?
Because I'm not sure why setting the client
property ssl.endpoint.identification.algorithm to an empty string did not
work.

Kind regards,


Richard Bosch

Developer Advocate

Axual BV



On Tue, Jul 12, 2022 at 7:40 PM Deepak Jain <deepak.j...@cumulus-systems.com>
wrote:

> Hello,
>
> Can anyone please help me regarding the below query regarding SSL
> communication in Kafka:
>
> Query: Is there any way to enable the hostname verification for Kafka
> communication between broker and client without specifying the IP address
> in SAN?
>
> Regards,
> Deepak
>
> From: Deepak Jain
> Sent: 08 July 2022 01:23
> To: Luke Chen <show...@gmail.com>
> Cc: users@kafka.apache.org
> Subject: Inquiry about using SSL encryption and SASL authentication for
> Kafka without specifying IP address in SAN in the CA certificate
>
> Hi Luke,
>
> We are using Kafka 2.8.1 Broker/Client system in our prod environment with
> SASL_SSL communication between Kafka Clients and Broker.  We are using the
> IP for the property “bootstrap.servers” while initiating the KafkaConsumer.
> Due to some reason, one of our Customer is unable to use the IP in the CA
> certificate and provided only hostname in the SAN entry in the certificate
> due to which he is getting following exception in the logs:
>
> org.apache.kafka.common.errors.SslAuthenticationException: SSL handshake
> failed
> Caused by: javax.net.ssl.SSLHandshakeException: No subject alternative
> names matching IP address xx.xx.xx.xx found
>     at sun.security.ssl.Alert.createSSLException(Alert.java:131)
>     at sun.security.ssl.TransportContext.fatal(TransportContext.java:324)
>     at sun.security.ssl.TransportContext.fatal(TransportContext.java:267)
>     at sun.security.ssl.TransportContext.fatal(TransportContext.java:262)
>     at
> sun.security.ssl.CertificateMessage$T12CertificateConsumer.checkServerCerts(CertificateMessage.java:654)
>
> Even after disabling the hostname verifier, he is unable to send the data
> from Client to broker. He has also added the Ip – hostname of the broker
> entry in /etc/hosts file
>
> Can you please let us know:
>
>
>   1.  Is IP and DNS both field mandatory in SAN for Kafka Certificates?
>   2.  If no, why the communication is failing without the IP?
>
>
> Regards,
> Deepak Jain
> Cumulus Systems
>

Reply via email to