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.keykafka_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 assinadoca_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-server4.2 Converter para .jks
keytool -importkeystore \
-deststorepass changeit \
-destkeystore kafka_server.jks \
-srckeystore kafka_server.p12 \
-srcstoretype PKCS12 \
-alias kafka-server4.3 Criar Truststore para armazenar a cadeia de certificados
keytool -import \
-trustcacerts \
-file ca_chain.crt \
-keystore kafka_truststore.jks \
-storepass changeit \
-alias rootCA5. 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:90936. 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=changeit7. Reiniciar e Testar
7.1 Reinicie o broker Kafka
systemctl restart kafka7.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.propertieskafka-console-consumer.sh \
--bootstrap-server kafka.meuservidor.com:9093 \
--topic meu-topico \
--consumer.config /path/to/client.properties8. 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
.jkse.p12estejam 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