...
No
...
Open
...
Finance
...
Brasil
...
foi
...
definido
...
que
...
a
...
comunicação
...
entre
...
o
...
servidor
...
Kafka
...
e
...
seus
...
clientes
...
seria
...
exclusivamente
...
utilizando
...
mTLS,
...
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),
...
portanto
...
neste
...
exemplo
...
utilizamos
...
certificados
...
auto-assinados
...
para
...
o
...
servidor
...
Kafka
...
e
...
para
...
os
...
produtores
...
(producers).
...
Os
...
clients
...
(consumers)
...
precisarão
...
apresentar
...
um
...
certificado
...
BRCAC
...
emitido
...
por
...
uma
...
das
...
autoridades
...
certificadores
...
homologadas
...
para
...
o
...
Open
...
Finance
...
Brasil.
...
Criando
...
a
...
Autoridade
...
Certificadora
...
para
...
certificados
...
auto-assinados
...
Antes
...
de
...
começar,
...
vamos
...
criar
...
uma
...
pasta
...
onde
...
os
...
arquivos
...
serão
...
gerados:
...
Bloco de código |
---|
mkdir ssl
```
|
Como
...
iremos
...
trabalhar
...
com
...
certificados
...
auto-assinado
...
tanto
...
para
...
o
...
servidor
...
Kafka
...
quanto
...
para
...
os
...
produtores
...
(producers),
...
precisamos
...
gerar
...
o
...
certificado
...
da
...
AC
...
que
...
irá
...
assinar
...
os
...
demais
...
certificados.
...
Bloco de código |
---|
openssl \
req -new -x509 \
-keyout ssl/ca-key \
-out ssl/ca-cert \
-days 3650 \
-subj "/CN=Autoridade Certificadora de Auto-assinados" \
-nodes
```
|
O
...
comando
...
acima
...
deve
...
ter
...
criado
...
a
...
chave
...
privada
...
(ca-key)
...
da
...
nossa
...
AC
...
que
...
será
...
usada
...
para
...
assinar
...
os
...
demais
...
certificados
...
e
...
também
...
deve
...
ter
...
criado
...
a
...
chave
...
pública
...
(ca-cert)
...
da
...
AC,
...
que
...
será
...
utilizado
...
posteriomente
...
na
...
truststore
...
para
...
que
...
permita
...
conexões
...
com
...
certificados
...
que
...
foram
...
assinados
...
por
...
essa
...
AC.
...
Criando
...
o
...
certificado
...
para
...
o
...
servidor
...
Kafka
...
Primeiro
...
vamos
...
gerar
...
a
...
chave
...
privada
Bloco de código |
---|
openssl genrsa -out ssl/kafka-server.key 2048
```
|
Vamos
...
agora
...
gerar
...
o
...
pedido
...
de
...
certificado
...
para
...
ser
...
assinado
...
pela
...
nossa
...
AC
Bloco de código |
---|
openssl req -new -key ssl/kafka-server.key -out ssl/kafka-server.csr -subj "/CN=kafka.meudominio.dev.br"
```
_ |
Obs:
...
Altere
...
a
...
CN
...
do
...
comando
...
acima
...
para
...
o
...
seu
...
host
...
Agora
...
vamos
...
assinar
...
o
...
certificado
...
com
...
nossa
...
AC
Bloco de código |
---|
openssl x509 -req -in ssl/kafka-server.csr -CA ssl/ca-cert -CAkey ssl/ca-key -CAcreateserial -out ssl/kafka-server.crt -days 3650 -sha256
```
|
Após
...
executar
...
os
...
comandos
...
acima
...
você
...
deve
...
ter
...
os
...
arquivos
...
kafka-server.key
...
,
...
kafka-server.csr
...
e
...
kafka-server.crt
...
no
...
seu
...
diretório
...
ssl
...
.
...
Destes
...
3,
...
apenas
...
2
...
são
...
úteis
...
a
...
partir
...
de
...
agora,
...
então
...
você
...
pode
...
apagar
...
o
...
arquivo
...
kafka-server.csr
...
se
...
quiser:
...
Bloco de código |
---|
rm ssl/kafka-server.csr
```
|
Pronto!
...
Já
...
temos
...
o
...
certificado
...
do
...
servidor
...
Kafka.
...
Agora
...
precisamos
...
coloca-los
...
no
...
formato
...
correto
...
(JKS)
...
para
...
que
...
seja
...
possível
...
sua
...
utilização.
...
Gerando
...
o
...
arquivo
...
keystore
...
em
...
formato
...
JKS
...
Por
...
padrão,
...
o
...
Kafka
...
utiliza
...
arquivos
...
JKS
...
para
...
configuração
...
de
...
keystore
...
e
...
truststore,
...
então
...
iremos
...
agora
...
fazer
...
a
...
criação
...
destes
...
arquivos
...
e
...
a
...
inserção
...
das
...
chaves
...
que
...
geramos
...
nos
...
passos
...
anteriores
...
dentro
...
dos
...
arquivos
...
JKS.
...
A
...
keystore
...
é
...
o
...
arquivo
...
que
...
contém
...
o
...
certificado
...
do
...
servidor
...
Kafka,
...
portanto
...
iremos
...
fazer
...
a
...
criação
...
dele
...
e
...
em
...
seguida
...
inserir
...
o
...
certificado
...
do
...
servidor
...
Kafka
...
que
...
foi
...
gerado
...
anteriormente.
...
Crie
...
a
...
keystore
...
com
...
uma
...
chave
...
dummy
...
temporária
...
(porque
...
o
...
keytool
...
não
...
permite
...
criar
...
uma
...
keystore
...
vazia)
...
Bloco de código |
---|
keytool -genkeypair -alias dummy -keyalg RSA -keystore ssl/kafka-server-keystore.jks -storepass teste123 -dname "CN=Dummy" -keypass teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
por
...
uma
...
senha
...
de
...
sua
...
preferência
...
Deixa
...
a
...
keystore
...
vazia
...
apagando
...
a
...
chave
...
dummy
Bloco de código |
---|
keytool -delete -alias dummy -keystore ssl/kafka-server-keystore.jks -storepass teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
pela
...
senha
...
informada
...
no
...
comando
...
anterior
...
Importe
...
o
...
certificado
...
da
...
nossa
...
AC
...
dentro
...
da
...
keystore
Bloco de código |
---|
keytool -importcert -alias ca-cert -file ssl/ca-cert -keystore ssl/kafka-server-keystore.jks -storepass teste123 -noprompt
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
pela
...
senha
...
informada
...
no
...
primeiro
...
comando
...
Para
...
importar
...
o
...
certificado
...
do
...
servidor
...
Kafka
...
dentro
...
da
...
keystore,
...
precisamos
...
fazer
...
2
...
passos.
...
Primeiro
...
temos
...
que
...
unir
...
as
...
chaves
...
pública
...
e
...
privada
...
em
...
um
...
arquivo
...
p12
...
e
...
então
...
importar
...
na
...
keystore.
...
Crie
...
o
...
arquivo
...
p12
...
com
...
o
...
comando
...
abaixo
Bloco de código |
---|
openssl pkcs12 -export -inkey ssl/kafka-server.key -in ssl/kafka-server.crt -name kafka-server -out ssl/kafka-server.p12 -password pass:teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
por
...
uma
...
senha
...
temporária,
...
pois
...
o
...
arquivo
...
será
...
descartado
...
em
...
seguida
...
Importe
...
o
...
arquivo
...
p12
...
do
...
servidor
...
Kafka
...
dentro
...
da
...
keystore
Bloco de código |
---|
keytool -importkeystore -destkeystore ssl/kafka-server-keystore.jks -srckeystore ssl/kafka-server.p12 -srcstoretype PKCS12 -alias kafka-server -storepass teste123 -srcstorepass teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
do
...
atributo
...
-storepass
...
pela
...
senha
...
informada
...
no
...
primeiro
...
comando
...
e
...
a
...
senha
...
teste123
...
do
...
atributo
...
-scrstorepass
...
pela
...
senha
...
informada
...
no
...
comando
...
anterior
...
Pronto!
...
Já
...
temos
...
a
...
keystore
...
do
...
servidor
...
Kafka.
...
Gerando
...
o
...
arquivo
...
truststore
...
em
...
formato
...
JKS
...
A
...
truststore
...
é
...
o
...
arquivo
...
que
...
contêm
...
os
...
certificados
...
das
...
AC's
...
que
...
o
...
servidor
...
Kafka
...
entenderá
...
como
...
confiáveis
...
para
...
emissão
...
de
...
certificados
...
dos
...
consumidores
...
(consumers)
...
e
...
produtores
...
(producers).
...
Ou
...
seja,
...
quem
...
tiver
...
um
...
certificado
...
emitido
...
por
...
um
...
AC
...
que
...
conste
...
na
...
truststore
...
poderá
...
ser
...
conectar
...
ao
...
servidor
...
Kafka.
...
Neste
...
primeiro
...
momento
...
iremos
...
adicionar
...
apenas
...
nossa
...
AC,
...
mas
...
em
...
um
...
passo
...
futuro,
...
iremos
...
adicionar
...
as
...
ACs
...
homologadas
...
pelo
...
Open
...
Finance
...
Brasil.
...
Crie
...
a
...
truststore
...
com
...
uma
...
chave
...
dummy
...
temporária
...
(porque
...
o
...
keytool
...
não
...
permite
...
criar
...
uma
...
truststore
...
vazia)
...
Bloco de código |
---|
keytool -genkeypair -alias dummy -keyalg RSA -keystore ssl/kafka-server-truststore.jks -storepass teste123 -dname "CN=Dummy" -keypass teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
por
...
uma
...
senha
...
de
...
sua
...
preferência
...
Deixa
...
a
...
trustore
...
vazia
...
apagando
...
a
...
chave
...
dummy
Bloco de código |
---|
keytool -delete -alias dummy -keystore ssl/kafka-server-truststore.jks -storepass teste123
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
pela
...
senha
...
informada
...
no
...
comando
...
anterior
...
Importe
...
o
...
certificado
...
da
...
nossa
...
AC
...
dentro
...
da
...
truststore
Bloco de código |
---|
keytool -importcert -alias ca-cert -file ssl/ca-cert -keystore ssl/kafka-server-truststore.jks -storepass teste123 -noprompt
```
_ |
Obs:
...
Altere
...
a
...
senha
...
teste123
...
pela
...
senha
...
informada
...
no
...
primeiro
...
comando
...