x509: невозможно проверить сертификат для IP, потому что он не содержит IP-адресов SAN - PullRequest
0 голосов
/ 20 апреля 2020

Я пытаюсь настроить ssl-соединение между filebeat на моей linux машине и kafka, которая находится на ec2 в aws.

Я создал хранилище ключей с помощью:

keytool -genkey -keystore kafka.server.keystore.jks -validity 365 -storepass $SRVPASS -keypass $SRVPASS  -dname "CN=my-ec2-node.compute-1.amazonaws.com" -storetype pkcs12 -keyalg RSA -ext SAN=dns:my-ec2-node.compute-1.amazonaws.com;

После этого я создал файл запроса на сертификацию:

keytool -keystore kafka.server.keystore.jks -certreq -file cert-request -storepass $SRVPASS -keypass $SRVPASS  -keyalg RSA -ext SAN=dns:my-ec2-node.compute-1.amazonaws.com

Я отправил запрос в созданный мной локальный центр сертификации:

openssl x509 -req -CA /root/ca/ca-cert -CAkey /root/ca/ca-key -in /root/kafka-ssl/cert-request -out /root/kafka-ssl/cert-signed -days 365 -CAcreateserial -passin pass:$SRVPASS;

до этого шага. Если я попытаюсь увидеть содержимое хранилища ключей, я смогу увидеть запись DNS внутри:

keytool -list -v -keystore kafka.server.keystore.jks
#1: ObjectId: 2.5.29.17 Criticality=false
SubjectAlternativeName [
  IPAddress: x.x.x.x
  DNSName: my-ec2-node.compute-1.amazonaws.com
]

После импорта в хранилище ключей сертификат CA SubjectAlternativeName больше не появляется в хранилище ключей:

keytool -keystore kafka.server.keystore.jks -import -file cert-signed -storepass $SRVPASS -keypass $SRVPASS -noprompt -keyalg RSA -ext SAN=dns:my-ec2-node.compute-1.amazonaws.com;

Я также добавил подписанный сертификат:

keytool -keystore kafka.server.keystore.jks -import -file cert-signed -storepass $SRVPASS -keypass $SRVPASS -noprompt -keyalg RSA -ext SAN=dns:my-ec2-node.compute-1.amazonaws.com;

Я настроил и kafka, и filebeat, и скопировал ключ ca publi c (ca-cert) на машину filebeat. Кроме того, я также добавил в на обеих машинах следующая запись в / etc / hosts: xxxx my-ec2-node.compute-1.amazon aws .com

Прямо сейчас я получаю следующую ошибку на компьютере с файловым битом:

2020-04-20T11:40:26.788Z        INFO    kafka/log.go:53 Connected to broker at my-ec2-node.compute-1.amazonaws.com:9093 (unregistered)

2020-04-20T11:40:26.997Z        INFO    kafka/log.go:53 client/brokers registered new broker #0 at x.x.x.x:9093
2020-04-20T11:40:26.997Z        INFO    kafka/log.go:53 kafka message: client/metadata found some partitions to be leaderless
2020-04-20T11:40:26.997Z        INFO    kafka/log.go:53 client/metadata retrying after 250ms... (2 attempts remaining)

2020-04-20T11:40:27.247Z        INFO    kafka/log.go:53 client/metadata fetching metadata for [filebeat] from broker my-ec2-node.compute-1.amazonaws.com:9093

2020-04-20T11:40:27.398Z        INFO    kafka/log.go:53 producer/broker/0 starting up

2020-04-20T11:40:27.730Z        INFO    kafka/log.go:53 Failed to connect to broker x.x.x.x:9093: x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

2020-04-20T11:40:27.730Z        INFO    kafka/log.go:53 producer/broker/0 state change to [closing] because x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

2020-04-20T11:40:27.731Z        INFO    kafka/log.go:53 producer/broker/0 state change to [closing] because x509: cannot validate certificate for x.x.x.x because it doesn't contain any IP SANs

Я могу загрузить кафк a, конфигурация filebeat, но я думаю, что это связано с сертификацией ssl. Я также попытался упомянуть в -ext флаг ip, но это также не помогло ... Я предполагаю, что добавление ключа ca publi c в хранилище ключей вызвало это, но я не знал, как его сохранить.

Что мне здесь не хватает?

...