Hi Richard,

Thanks for your response.

We are using IP in the advertised.listener and also passing IP in the property 
' bootstrap.servers' while instantiating KafkaConsumer class. But in the server 
certificate only dns is used as SAN and not IP due to some security concerns.

Regarding hostname verifier disabling, we are able to do it by setting the 
client property ssl.endpoint.identification.algorithm to an empty string. But 
the Customer is asking below query whose answer can only be provided by the 
Kafka team:

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

-----Original Message-----
From: Richard Bosch <richard.bo...@axual.com> 
Sent: 13 July 2022 20:57
To: users@kafka.apache.org
Subject: Re: Inquiry about using SSL encryption and SASL authentication for 
Kafka without specifying IP address in SAN in the CA certificate

Caution: From Cumulus Systems – IT Department, this email originated from 
outside of the organization. Please call and confirm with the sender before 
opening attachments or clicking links inside the email.


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.checkServer
> Certs(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