Kafka client.properties Generator

The client.properties that the Kafka command line tools take with --command-config. Connection and security only, with credentials referenced from a mounted secret rather than written into the file.

Connection

This file is the one every command line tool takes with --command-config or --consumer.config, and it holds connection and security only.

Security

No password field, on purpose. The output references a mounted secret through Kafka's own FileConfigProvider and the commands to create it are in the notes.

client.properties

updates as you type

    Common mistakes

    These are the ones that fail silently. The config is accepted, nothing raises an error, and the consequence arrives later.

    1. Putting the password directly in the properties file

      It lands in the file, in process listings, in container inspection and in any log that records configuration.

      Instead:Use a config provider, or a JAAS file with restricted permissions.

    2. Using SASL_PLAINTEXT with the PLAIN mechanism

      SASL/PLAIN sends the password essentially in the clear. Without TLS it is readable on the wire.

      Instead:SASL_SSL, or SCRAM which never transmits the password itself.

    3. Reusing a broker properties file for a client

      Broker and client settings look similar and are different files with different keys. A client reading a broker config silently ignores most of it.

      Instead:Generate the client file separately.

    The file every Kafka command line tool wants, and the flag it wants it under

    Connection and security, nothing else. The hard parts are the JAAS line and the fact that the flag is different for each tool.

    The flag is not consistent between tools

    kafka-topics.sh, kafka-acls.sh, kafka-configs.sh and kafka-consumer-groups.sh take --command-config. kafka-console-consumer.sh takes --consumer.config and kafka-console-producer.sh takes --producer.config. Passing the wrong one is not always an error: some versions ignore the unknown flag, the tool then connects with no security configured at all, and the failure that follows is a timeout or an authorisation error that says nothing about the flag.

    There is no password in the output

    The generated file references a mounted secret through Kafka's own FileConfigProvider, and the commands to create that secret come with it. A client.properties sitting in a home directory or baked into an admin container image is a credential in a file nobody is tracking, and it is usually the one with the most permissions, because it is the file an operator uses. Two settings make the reference work, config.providers and config.providers.file.class, and both are always emitted: without them the reference silently resolves to the literal string rather than to the value.

    The trailing semicolon on the JAAS line

    sasl.jaas.config holds a JAAS login module entry, which has its own grammar and must end with a semicolon. Without it the tool fails to start and the exception mentions the JAAS configuration or the control flag rather than the missing character. It is the single most common mistake in a hand-written Kafka security config, and this generator cannot make it. For checking one you already have, the JAAS config decoder on this site reads it without printing the password.

    This file holds nothing else, on purpose

    No serializers, no group.id, no acks. A command line tool supplies its own, and adding them here is harmless and misleading: it reads as configuration in force when it is being ignored. For a real client, the producer and consumer config generators on this site emit those.

    What this cannot see

    It cannot verify that the secret file exists at the path given, that the credentials in it are correct, that the truststore contains the CA that signed your broker certificate, or that the principal has the ACLs it needs. Those are all runtime facts. What it can do is produce a file with the right shape, the right flag documented, and no credential inside it.