SSL-сертификат, работающий на одной машине, но не с другой машины

#ssl #apache-kafka #apache-nifi

#ssl #апач-кафка #апач-нифи

Вопрос:

У меня есть докер, настроенный для запуска брокера кафки с SSL. Сценарий оболочки используется для выполнения шагов генерации сертификата и используется для включения ssl для кафки.

Я могу успешно использовать jks хранилища ключей и хранилища доверия для доступа к брокеру кафки на одном компьютере. (Как инструмент кафка, так и apache nifi были настроены как клиент[издатель/потребитель], и они отлично работают)

Но когда я пытаюсь подключить брокера, используя эти сертификаты с разных компьютеров в одной сети, это выдает ошибку. (Nifi говорит «Неверный пароль или тип сертификата», но я чувствую, что это сообщение об ошибке вводит в заблуждение, и причина может быть другой)

Любой намек или идея, в чем может быть причина ?

Ошибка ниже, когда я попытался использовать инструментарий кафки :

 org.apache.kafka.common.KafkaException: Failed to construct kafka producer  at org.apache.kafka.clients.producer.KafkaProducer.lt;initgt;(KafkaProducer.java:432)  at org.apache.kafka.clients.producer.KafkaProducer.lt;initgt;(KafkaProducer.java:298)  at kafka.tools.ConsoleProducer$.main(ConsoleProducer.scala:45)  at kafka.tools.ConsoleProducer.main(ConsoleProducer.scala) Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /home/ubuntu/sslcertkafka/directtransfer/kafka_install/kafka.client.truststore.jks of type JKS  at org.apache.kafka.common.network.SslChannelBuilder.configure(SslChannelBuilder.java:71)  at org.apache.kafka.common.network.ChannelBuilders.create(ChannelBuilders.java:146)  at org.apache.kafka.common.network.ChannelBuilders.clientChannelBuilder(ChannelBuilders.java:67)  at org.apache.kafka.clients.ClientUtils.createChannelBuilder(ClientUtils.java:99)  at org.apache.kafka.clients.producer.KafkaProducer.newSender(KafkaProducer.java:450)  at org.apache.kafka.clients.producer.KafkaProducer.lt;initgt;(KafkaProducer.java:421)  ... 3 more Caused by: org.apache.kafka.common.KafkaException: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /home/ubuntu/sslcertkafka/directtransfer/kafka_install/kafka.client.truststore.jks of type JKS  at org.apache.kafka.common.security.ssl.SslEngineBuilder.createSSLContext(SslEngineBuilder.java:163)  at org.apache.kafka.common.security.ssl.SslEngineBuilder.lt;initgt;(SslEngineBuilder.java:104)  at org.apache.kafka.common.security.ssl.SslFactory.configure(SslFactory.java:95)  at org.apache.kafka.common.network.SslChannelBuilder.configure(SslChannelBuilder.java:69)  ... 8 more Caused by: org.apache.kafka.common.KafkaException: Failed to load SSL keystore /home/ubuntu/sslcertkafka/directtransfer/kafka_install/kafka.client.truststore.jks of type JKS  at org.apache.kafka.common.security.ssl.SslEngineBuilder$SecurityStore.load(SslEngineBuilder.java:292)  at org.apache.kafka.common.security.ssl.SslEngineBuilder.createSSLContext(SslEngineBuilder.java:155)  ... 11 more Caused by: java.io.IOException: Invalid keystore format  at sun.security.provider.JavaKeyStore.engineLoad(JavaKeyStore.java:666)  at sun.security.provider.JavaKeyStore$JKS.engineLoad(JavaKeyStore.java:57)  at sun.security.provider.KeyStoreDelegator.engineLoad(KeyStoreDelegator.java:224)  at sun.security.provider.JavaKeyStore$DualFormatJKS.engineLoad(JavaKeyStore.java:71)  at java.security.KeyStore.load(KeyStore.java:1445)  at org.apache.kafka.common.security.ssl.SslEngineBuilder$SecurityStore.load(SslEngineBuilder.java:289)  

Спасибо Махендра

Комментарии:

1. может быть, тема сертификата не соответствует имени хоста кафки?

2. @daggett — Спасибо за ваш ответ. [alt_names] DNS.1 = брокер DNS.2 = локальный DNS.3 = ip-{мой-ip-где-докер работает}.ec2.внутренний IP.1 = {мой-ip-где-докер работает} IP.2 = 0.0.0.0 Выше имен субъектов, которые я добавляю, и брокер кафки работает в контейнере докера на моей машине

Ответ №1:

Если вы используете хранилище ключей и хранилище доверия на разных компьютерах, обязательно предоставьте 2-му компьютеру или машинам хранилище ключей, которое есть в работающей системе. А затем обновите путь. Не уверен, что это решит проблему, но предоставление одного и того же ключа и хранилища доверия, ключа и сертификата определенно поможет.