Skip to content

Conversation

@sgg
Copy link

@sgg sgg commented Feb 7, 2023

Problem

kcat does not allow users to set the ssl.endpoint.identification.algorithm property in config files.

One can verify this behavior by creating a config file with ssl.endpoint.identification.algorithm=<non_default_value> and running kcat -F <config_file> -X dump

This causes friction for folks that wish to use config files and rely on (m)TLS but do not use CN/SAN based verification.

Note that one can specify the aforementioned config value via command line args.

Background

  1. Commit 5a7d3ba added support for config files however at the time librdkafka did not support this parameter at the time. (I presume that) because this is a option is commonly set in Java Kafka client properties files, the decision was made to have kcat silently filter this option when parsing config files.
  2. Support for ssl.endpoint.identification.algorithm was added in librdkafka v1.1.0 back in 2019 however the default was set to none.
  3. With the release of librdkafka v2.x, the default value of ssl.endpoint.identification.algorithm changed from none to https (enabling hostname verification).

I imagine this issue has gone unnoticed due to (2); folks tend not to notice that a TLS feature is disabled until you enable it 😅.

**Problem**

kcat does not allow users to set the `ssl.endpoint.identification.algorithm`
property in config files.

One can verify this behavior by creating a config file with
`ssl.endpoint.identification.algorithm=<non_default_value>` and running
`kcat -F <config_file> -X dump`

This causes friction for folks that wish to use config files and rely on
(m)TLS but do not use CN/SAN based verification.

Note that one can specify the aforementioned config value via command
line args.

**Background**

1. Commit 5a7d3ba added support for config
   files however at the time librdkafka did not support this parameter at
   the time. (I presume that) because this is a option is commonly set in
   Java Kafka client properties files, the decision was made to have kcat
   silently filter this option when parsing config files.
2. Support for ssl.endpoint.identification.algorithm was added in
   librdkafka v1.1.0 back in 2019 however the default was set to none.
3. With the release of librdkafka v2.x, the default value of
   ssl.endpoint.identification.algorithm changed from `none` to `https`
   (enabling hostname verification).

I imagine this issue has gone unnoticed due to (2); folks tend not to
notice that a TLS feature is _disabled_ until you enable it 😅.
@imyhxy
Copy link

imyhxy commented May 25, 2023

I met the same issue, and I can't even change the config from command line.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants