web-dev-qa-db-ja.com

Kafka SSLハンドシェイク失敗の問題

KafkaサーバーでSSL認証を有効にしようとしています。以下のドキュメント(リンク)の7.2セクションに従っています。

http://kafka.Apache.org/documentation.html#security_ssl

すべての手順に従いましたが、プロデューサー.batファイルを呼び出してトピックにデータを送信しているときにエラーが発生しました。

[〜#〜] error [〜#〜][Producer clientId = console-producer]ノー​​ド-1への接続が失敗したため、SSLハンドシェイクに失敗しました(org.Apache.kafka.clients.NetworkClient)

原因:Java.security.cert.CertificateException:localhostに一致する名前が見つかりません

CN=localhostで証明書を作成しました。

4
Osman Jabri

クライアントでssl.endpoint.identification.algorithmを空の文字列に設定すると、サーバーのホスト名検証が無効になる場合があります

8
charlb

一般的にJava.security.cert.CertificateException:localhostに一致する名前が見つかりませんは、証明書のホスト名がサーバーのホスト名と一致しないことを意味します。

次のスレッド にこのエラーの素晴らしい説明があります。

1

次のエラーが発生しました。これは、Kafkaのバージョンを1.xから2.xにアップグレードしたことが原因である可能性があります。

javax.net.ssl.SSLHandshakeException:SSLEngineの一般的な問題... javax.net.ssl.SSLHandshakeException:SSLEngineの一般的な問題... Java.security.cert.CertificateException:***に一致する名前が見つかりません

または

[プロデューサーclientId = producer-1]ノード-2への接続が次の理由で認証に失敗しました:SSLハンドシェイクが失敗しました

Ssl.endpoint.identification.algorithmのデフォルト値がhttpsに変更されました。これにより、ホスト名検証が実行されます(それ以外の場合、中間者攻撃が可能です)。以前の動作を復元するには、ssl.endpoint.identification.algorithmを空の文字列に設定します。 Apache Kafka 2.0.0の注目すべき変更点

ソリューション:SslConfigs.SSL_ENDPOINT_IDENTIFICATION_ALGORITHM_CONFIG、 ""

1
Senchan Sue

ssl.endpoint.identification.algorithm =と設定するだけです。

0
macknight