常见的 SSL/TLS 异常

编辑

症状

  • 您可能会在日志中看到一些与 SSL/TLS 相关的异常。下面列出了一些常见的异常以及解决这些问题的提示。

解决方法

WARN: received plaintext http traffic on a https channel, closing connection

表示接收到了传入的明文 HTTP 请求。这通常发生在外部应用程序尝试对 REST 接口进行未加密的调用时。请确保在启用 SSL 的情况下,所有应用程序在调用 REST 接口时都使用 https

org.elasticsearch.common.netty.handler.ssl.NotSslRecordException: not an SSL/TLS record

表示在 SSL 连接上接收到了传入的明文流量。这通常发生在未配置为使用加密通信的节点尝试连接到正在使用加密通信的节点时。请验证所有节点对于 xpack.security.transport.ssl.enabled 设置是否一致。

有关此设置的更多信息,请参阅 安全设置

java.io.StreamCorruptedException: invalid internal transport message format, got

表示在传输接口上接收到了未知格式的数据时出现问题。当启用加密通信的节点连接到禁用加密通信的节点时,可能会发生这种情况。请验证所有节点对于 xpack.security.transport.ssl.enabled 设置是否一致。

有关此设置的更多信息,请参阅 安全设置

java.lang.IllegalArgumentException: empty text

当向未使用 https 的节点发出 https 请求时,通常会看到此异常。如果需要使用 https,请确保 elasticsearch.yml 中包含以下设置

xpack.security.http.ssl.enabled: true

有关此设置的更多信息,请参阅 安全设置

ERROR: unsupported ciphers [...] were requested but cannot be used in this JVM

当指定了 Elasticsearch 正在运行的 JVM 不支持的 SSL/TLS 密码套件时,会发生此错误。安全功能会尝试使用此 JVM 支持的指定的密码套件。当使用安全默认设置时可能会发生此错误,因为某些 OpenJDK 发行版默认不启用 PKCS11 提供程序。在这种情况下,我们建议查阅您的 JVM 文档,了解如何启用 PKCS11 提供程序的详细信息。

此错误的另一个常见来源是,在 Oracle JDK 上运行时,请求使用密钥长度大于 128 位的加密密码套件。在这种情况下,您必须安装 JCE 无限制强度管辖策略文件