Configurando Certificados

ESTE É UM CONTEÚDO EM DESENVOLVIMENTO E NÃO DEVE SER CONSIDERADO COMO VERSÃO FINAL!
Clique aqui para maiores informações

Configurando Certificados

No Open Finance Brasil foi definido que a comunicação entre o servidor Kafka e seus clientes seria exclusivamente utilizando mTLS (requisitos de segurança), portanto a geração de certificado do servidor Kafka e a configuração da truststore para permitir a utilização de certificados BRCAC(também conhecidos como certificado de transporte ou aplicação) para os clientes (consumers) é parte fundamental deste processo.

Ainda não foi definido se o certificado do servidor Kafka precisa ser um certificado ICP Brasil (assim como é para os authorization servers), para o servidor Kafka. Os clients (consumers) precisarão apresentar um certificado BRCAC emitido por uma das autoridades certificadores homologadas para o Open Finance Brasil.

Documentação Técnica para Configuração de Certificado Kafka (CA Externa)

Introdução

Esta documentação detalha o processo de geração e configuração de um certificado SSL/TLS para o Apache Kafka utilizando uma Autoridade Certificadora (CA) confiável. O objetivo é garantir a comunicação segura entre brokers, produtores e consumidores sem o uso de certificados auto assinados.


1. Geração da Chave Privada

A primeira etapa é criar uma chave privada para o servidor Kafka:

openssl genpkey -algorithm RSA -out kafka_server.key
  • kafka_server.key: Chave privada gerada.


2. Criação do CSR (Certificate Signing Request)

O CSR contém as informações que serão utilizadas pela CA para emitir o certificado:

openssl req -new -key kafka_server.key -out kafka_server.csr -subj "/C=BR/ST=SP/L=SaoPaulo/O=MinhaEmpresa/OU=TI/CN=kafka.meuservidor.com"
  • /C=BR: País

  • /ST=SP: Estado

  • /L=SaoPaulo: Localidade (cidade)

  • /O=MinhaEmpresa: Nome da empresa

  • /OU=TI: Unidade organizacional (ex.: TI)

  • /CN=kafka.meuservidor.com: Nome do host para o broker Kafka (deve coincidir com o hostname real)


3. Envio da CSR para uma CA

Envie o arquivo kafka_server.csr para uma Autoridade Certificadora (CA) confiável, como:

  • Let's Encrypt (gratuito)

  • DigiCert, GlobalSign, etc. (soluções corporativas)

A CA retornará dois arquivos principais:

  • kafka_server.crt: O certificado assinado

  • ca_chain.crt: A cadeia de certificados da CA


4. Criação do Keystore e Truststore

O Kafka utiliza keystores e truststores no formato .jks. Para facilitar essa conversão:

4.1 Gerar o arquivo .p12

openssl pkcs12 -export \ -in kafka_server.crt \ -inkey kafka_server.key \ -certfile ca_chain.crt \ -out kafka_server.p12 \ -name kafka-server

4.2 Converter para .jks

keytool -importkeystore \ -deststorepass changeit \ -destkeystore kafka_server.jks \ -srckeystore kafka_server.p12 \ -srcstoretype PKCS12 \ -alias kafka-server

4.3 Criar Truststore para armazenar a cadeia de certificados

keytool -import \ -trustcacerts \ -file ca_chain.crt \ -keystore kafka_truststore.jks \ -storepass changeit \ -alias rootCA

5. Configuração do Broker Kafka

Edite o arquivo de configuração do broker Kafka (server.properties):

ssl.keystore.location=/path/to/kafka_server.jks ssl.keystore.password=changeit ssl.truststore.location=/path/to/kafka_truststore.jks ssl.truststore.password=changeit ssl.client.auth=required ssl.endpoint.identification.algorithm= listeners=SSL://0.0.0.0:9093 advertised.listeners=SSL://kafka.meuservidor.com:9093

6. Configuração do Cliente Kafka

No cliente Kafka (produtor/consumidor), inclua as seguintes propriedades:

security.protocol=SSL ssl.truststore.location=/path/to/kafka_truststore.jks ssl.truststore.password=changeit

7. Reiniciar e Testar

7.1 Reinicie o broker Kafka

systemctl restart kafka

7.2 Teste a comunicação segura com o cliente Kafka:

kafka-console-producer.sh \ --broker-list kafka.meuservidor.com:9093 \ --topic meu-topico \ --producer.config /path/to/client.properties
kafka-console-consumer.sh \ --bootstrap-server kafka.meuservidor.com:9093 \ --topic meu-topico \ --consumer.config /path/to/client.properties

8. Boas Práticas

  • Utilize certificados com prazo de validade reduzido e renove-os periodicamente.

  • Aplique políticas de rotação de chaves para mitigar riscos de comprometimento.

  • Garanta que as senhas dos arquivos .jks e .p12 estejam protegidas em um gerenciador seguro.

ESTE É UM CONTEÚDO EM DESENVOLVIMENTO E NÃO DEVE SER CONSIDERADO COMO VERSÃO FINAL!
Clique aqui para maiores informações