Stephane, If you are using a trusted CA like Verisign, clients don't need to specify a truststore. The host names specified in advertised.listeners in the broker must match the wildcard DNS names in the certificates if clients configure ssl.endpoint.identification.algorithm=https. If ssl.endpoint.identification.algorithm is not specified, by default hostname is not validated. It should be set to https however to prevent man-in-the-middle attacks. There is an open JIRA to make this the default in Kafka.
It makes sense to enable SSL in dev and prod to ensure that the code path being run in dev is the same as in prod. On Mon, Dec 19, 2016 at 3:50 AM, Stephane Maarek < steph...@simplemachines.com.au> wrote: > Hi, > > I have read the docs extensively but yet there are a few answers I can’t > find. It has to do with external CA > Please confirm my understanding if possible: > > I can create my own CA to sign all the brokers and clients certificates. > Pros: > - cheap, easy, automated. I need to find a way to access that CA > programatically for new brokers if I want to automated their deployment, > but I could use something like credstash or vault for that. > Cons: > - all of my clients needs to trust the CA. That means somehow find a way > for my clients to get access to the CA using ca-cert and add it to their > truststore… correct? > > I don’t really like the fact that I need to provide the CA cert file to > every client. That seems quite hard to achieve, and prevents my users from > using the Kafka cluster directly. What’s the best way for the Kafka clients > to get access to the CA, while my users are doing dev, etc? Most of our > applications run in Docker, which means we usually pass stuff around using > environment variables. > > > My next idea was to use an external CA (like Verisign) to sign my > certificate with a wildcard *.kafka.mydomain.com (A records pointing to > internal IPs - the DNS name would be the advertised kafka hostname). My > goal was then for the clients not to require to trust the CA because it > would be automatically trusted? Do I have the correct understanding? Or do > I still need to add the external CA to the truststore of my clients? > (basically I’m trying to reproduce the behaviour of what a web browser > does). > > > Finally, is it recommended to enable SSL in my dev Kafka cluster vs my prod > Kafka cluster, or to have SSL on each cluster? > > Thanks! > > Kind regards, > Stephane > -- Regards, Rajini