安全故障排除

edit

使用本节中的信息来解决常见问题并找到常见问题的答案。

对于您无法自行解决的问题……我们在这里提供帮助。 如果您是已有支持合同的Elastic客户,请在 Elastic支持门户中创建工单。 或者在Elastic论坛中发帖。

某些设置未通过节点设置API返回

edit

症状:

  • 当你使用nodes info API来检索节点的设置时,某些信息会缺失。

解决方案:

这是故意的。一些设置被认为是高度敏感的:所有ssl设置、ldap bind_dnbind_password。出于这个原因,我们过滤这些设置,并且不通过节点信息API rest端点暴露它们。您还可以使用xpack.security.hide_settings设置定义应隐藏的其他敏感设置。例如,此代码片段隐藏了ldap1领域的url设置以及ad1领域的所有设置。

xpack.security.hide_settings: xpack.security.authc.realms.ldap1.url,
xpack.security.authc.realms.ad1.*

授权异常

edit

症状:

  • 我配置了适当的角色和用户,但仍然遇到授权异常。
  • 我可以认证到LDAP,但仍然遇到授权异常。

解决方案:

  1. 验证与用户关联的角色名称是否与roles.yml文件中定义的角色匹配。您可以使用elasticsearch-users工具列出所有用户。任何未知角色都会被标记为*

    bin/elasticsearch-users list
    rdeniro        : admin
    alpacino       : power_user
    jacknich       : monitoring,unknown_role* 

    unknown_role 未在 roles.yml 中找到

    有关此命令的更多信息,请参阅 elasticsearch-users 命令

  2. 如果你正在向LDAP进行身份验证,一些配置选项可能会导致这个错误。

    组识别

    组通过LDAP搜索或用户的"memberOf"属性来定位。此外,如果子树搜索关闭,它将只搜索一级深度。有关所有选项,请参见LDAP领域设置。这里有许多选项,坚持默认设置并不适用于所有场景。

    组到角色映射

    可能是role_mapping.yml文件或该文件的位置配置错误。更多信息,请参阅安全文件

    角色定义

    角色定义可能缺失或无效。

    为了帮助追踪这些可能性,启用额外的日志记录以进一步进行故障排除。 您可以通过配置以下持久设置来启用调试日志记录:

    PUT /_cluster/settings
    {
      "persistent": {
        "logger.org.elasticsearch.xpack.security.authc": "debug"
      }
    }

    或者,您可以将以下行添加到ES_PATH_CONF中的log4j2.properties配置文件的末尾:

    logger.authc.name = org.elasticsearch.xpack.security.authc
    logger.authc.level = DEBUG

    请参阅配置日志级别以获取更多信息。

    成功的身份验证应生成列出组和角色映射的调试语句。

由于额外参数导致用户命令失败

edit

症状:

  • The elasticsearch-users 命令失败并显示以下消息: ERROR: 提供了额外的参数 [...]

解决方案:

elasticsearch-users 工具解析输入并发现意外参数时,会发生此错误。当某些参数中使用了特殊字符时,可能会发生这种情况。例如,在 Windows 系统上,, 字符被视为参数分隔符;换句话说,-r role1,role2 被翻译为 -r role1 role2,而 elasticsearch-users 工具仅将 role1 识别为预期参数。这里的解决方案是用引号将参数括起来:-r "role1,role2"

有关此命令的更多信息,请参阅 elasticsearch-users 命令

用户频繁被锁定在Active Directory之外

edit

症状:

  • 某些用户频繁被锁定在Active Directory之外。

解决方案:

检查您的领域配置;领域是按顺序逐一检查的。如果您的Active Directory领域在其他领域之前被检查,并且存在同时出现在Active Directory和其他领域中的用户名,那么一个领域的有效登录可能会导致在另一个领域中的登录失败。

例如,如果 UserA 同时存在于 Active Directory 和文件领域中,并且 Active Directory 领域首先被检查,文件领域其次被检查,那么在文件领域中尝试以 UserA 进行身份验证时,首先会尝试对 Active Directory 进行身份验证并失败,然后才会成功对 文件 领域进行身份验证。由于每次请求都会验证身份验证,因此每次在 文件 领域中为 UserA 进行请求时,都会检查 Active Directory 领域并失败。在这种情况下,尽管身份验证请求成功完成,但 Active Directory 上的账户可能会收到多次失败的登录尝试,并且该账户可能会暂时被锁定。因此,请相应地规划您的领域顺序。

另请注意,通常不需要定义多个 Active Directory 领域来处理域控制器故障。当使用 Microsoft DNS 时,域的 DNS 条目应始终指向可用的域控制器。

Mac 上的 curl 证书验证失败

edit

症状:

  • curl 在 Mac 上返回证书验证错误,即使使用了 --cacert 选项。

解决方案:

苹果公司将curl与其钥匙串技术集成,禁用了--cacert选项。 有关更多信息,请参阅http://curl.haxx.se/mail/archive-2013-10/0036.html

您可以使用另一个工具,例如 wget,来测试证书。或者,您可以使用类似于 Apple 知识库 中详细介绍的步骤,将签名证书颁发机构的证书添加到 MacOS 系统钥匙串中。请确保添加的是签名 CA 的证书,而不是服务器的证书。

SSLHandshakeException 导致连接失败

edit

症状:

  • 一个SSLHandshakeException导致与节点的连接失败,并表明存在配置问题。下面显示了一些常见的异常及其解决方法。

解决方案:

java.security.cert.CertificateException: No name matching node01.example.com found

指示客户端连接已建立到 node01.example.com,但返回的证书中不包含名称 node01.example.com。在大多数情况下,可以通过确保证书创建期间指定名称来解决此问题。有关更多信息,请参阅 使用 TLS 加密节点间通信。另一种情况是环境根本不希望在证书中使用 DNS 名称。在这种情况下,elasticsearch.yml 中的所有设置应仅使用 IP 地址,包括 network.publish_host 设置。

java.security.cert.CertificateException: No subject alternative names present

表示客户端连接到了一个IP地址,但返回的证书中不包含任何SubjectAlternativeName条目。只有在证书创建期间将IP地址指定为SubjectAlternativeName时,才会使用IP地址进行主机名验证。如果意图是使用IP地址进行主机名验证,则需要使用适当的IP地址重新生成证书。请参阅使用TLS加密节点间通信

javax.net.ssl.SSLHandshakeException: null cert chain and javax.net.ssl.SSLException: Received fatal alert: bad_certificate

The SSLHandshakeException 表示客户端返回了一个自签名证书,该证书不被信任,因为它无法在 truststorekeystore 中找到。这个 SSLException 出现在连接的客户端一侧。

sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target and javax.net.ssl.SSLException: Received fatal alert: certificate_unknown

这个 SunCertPathBuilderException 表示在握手过程中返回了一个不受信任的证书。这个消息出现在连接的客户端。SSLException 出现在连接的服务器端。签署返回证书的CA证书在 keystoretruststore 中未找到,需要将其添加到信任此证书。

javax.net.ssl.SSLHandshakeException: Invalid ECDH ServerKeyExchange signature

The Invalid ECDH ServerKeyExchange signature 可能表明密钥和相应的证书不匹配,导致握手失败。 请验证您为配置的证书颁发机构、证书和密钥所使用的每个文件的内容。特别是,检查密钥和证书是否属于同一密钥对。

常见的SSL/TLS异常

edit

症状:

  • 您可能会在日志中看到一些与SSL/TLS相关的异常。下面显示了一些常见的异常及其解决方法。

解决方案:

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

表示有一个传入的纯文本HTTP请求。这通常发生在当外部应用程序尝试进行未加密的调用时。请确保所有应用程序在使用启用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

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

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

常见的Kerberos异常

edit

症状:

  • 用户认证失败,原因可能是GSS协商失败或服务登录失败(无论是在服务器还是在Elasticsearch http客户端)。 以下列出了一些常见的异常及其解决提示。

解决方案:

Failure unspecified at GSS-API level (Mechanism level: Checksum failed)

当您在HTTP客户端看到此错误消息时,可能与密码错误有关。

当您在 Elasticsearch 服务器日志中看到此错误消息时,可能与 Elasticsearch 服务密钥表有关。密钥表文件存在,但登录用户失败。请检查密钥表的过期时间。同时检查密钥表是否包含最新的凭证;如果没有,请替换它们。

您可以使用 klistktab 工具列出 keytab 中的主体并验证它们。您可以使用 kinit 来查看是否可以使用 keytab 获取初始票据。请检查您的 Kerberos 环境中的工具及其文档。

Kerberos 依赖于正确的主机名解析,因此请检查您的 DNS 基础设施。 不正确的 DNS 设置、DNS SRV 记录或 krb5.conf 中 KDC 服务器的配置 可能导致主机名解析问题。

Failure unspecified at GSS-API level (Mechanism level: Request is a replay (34))
Failure unspecified at GSS-API level (Mechanism level: Clock skew too great (37))

为了防止重放攻击,Kerberos V5 设置了计算机时钟同步的最大容差,通常为5分钟。请检查域内机器的时间是否同步。

gss_init_sec_context() failed: An unsupported mechanism was requested
No credential found for: 1.2.840.113554.1.2.2 usage: Accept

在使用curl测试Elasticsearch Kerberos设置时,通常会在客户端看到此错误消息。例如,当您在客户端使用旧版本的curl时,会出现这些消息,因此缺少Kerberos Spnego支持。Elasticsearch中的Kerberos领域仅支持Spengo机制(Oid 1.3.6.1.5.5.2);它尚不支持Kerberos机制(Oid 1.2.840.113554.1.2.2)。

确保以下内容:

  • 您已安装curl版本7.49或更高版本,因为旧版本的curl存在已知的Kerberos错误。
  • 您机器上安装的curl在执行命令curl -V时列出了GSS-APIKerberosSPNEGO功能。如果没有,您需要编译支持这些功能的curl版本。

要下载最新版本的curl,请访问 https://curl.haxx.se/download.html

由于Kerberos日志通常具有晦涩难懂的性质,并且许多事情可能会出错,因为它依赖于外部服务,如DNS和NTP。您可能需要启用额外的调试日志来确定问题的根本原因。

Elasticsearch 使用 JAAS(Java 身份验证和授权服务)Kerberos 登录模块来提供 Kerberos 支持。要在 Elasticsearch 上为登录模块启用调试日志,请使用以下 Kerberos 领域设置:

xpack.security.authc.realms.kerberos.<realm-name>.krb.debug: true

有关详细信息,请参阅Kerberos realm settings

有时在SPNEGO GSS上下文协商期间,您可能需要深入了解问题,或者查看Kerberos消息交换。要在JVM上启用Kerberos/SPNEGO调试日志记录,请添加以下JVM系统属性:

-Dsun.security.krb5.debug=true

-Dsun.security.spnego.debug=true

有关JVM系统属性的更多信息,请参阅设置JVM选项

常见的SAML问题

edit

一些常见的SAML问题如下所示,并提供了如何解决这些问题的提示。

  1. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Cannot find any matching realm for [SamlPrepareAuthenticationRequest{realmName=saml1,
    assertionConsumerServiceURL=https://my.kibana.url/api/security/saml/callback}]

    解决方案:

    为了启动SAML认证,Kibana需要知道它应该从Elasticsearch中配置的SAML领域中使用哪一个。您可以使用xpack.security.authc.providers.saml..realm设置在Kibana中显式设置SAML领域名称。它必须与在Elasticsearch中配置的SAML领域名称匹配。

    如果你遇到上述错误,可能意味着你的 Kibana 配置中的 xpack.security.authc.providers.saml..realm 值是错误的。请确认它与 Elasticsearch 中配置的 realm 名称匹配,该名称是 Elasticsearch 配置中 xpack.security.authc.realms.saml. 之后的字符串。

  2. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Authentication to realm saml1 failed - Provided SAML response is not valid for realm
    saml/saml1 (Caused by ElasticsearchSecurityException[Conditions
    [https://5aadb9778c594cc3aad0efc126a0f92e.kibana.company....ple.com/]
    do not match required audience
    [https://5aadb9778c594cc3aad0efc126a0f92e.kibana.company.example.com]])

    解决方案:

    我们收到一个SAML响应,该响应是发给另一个SAML服务提供商的。 这通常意味着在elasticsearch.yml中配置的SAML服务提供商实体ID(sp.entity_id)与SAML身份提供商文档中配置的SAML服务提供商实体ID不匹配。

    要解决此问题,请确保 Elasticsearch 中的 SAML 领域和 IdP 都配置了相同的字符串作为服务提供商的 SAML 实体 ID。

    在Elasticsearch日志中,在异常消息(上方)之前,还会有一个或多个形式为INFO级别的日志消息。

    Audience restriction
    [https://5aadb9778c594cc3aad0efc126a0f92e.kibana.company.example.com/]
    does not match required audience
    [https://5aadb9778c594cc3aad0efc126a0f92e.kibana.company.example.com]
    (difference starts at character [#68] [/] vs [])

    此日志消息可以帮助确定从IdP接收到的值与在Elasticsearch中配置的值之间的差异。只有在两个受众标识符被认为是相似的情况下,描述这两个标识符之间差异的括号中的文本才会显示。

    这些字符串作为区分大小写的字符串进行比较,而不是作为规范化的URL,即使这些值类似于URL。请注意尾随斜杠、端口号等。

  3. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Cannot find metadata for entity [your:entity.id] in [metadata.xml]

    解决方案:

    我们无法在配置的元数据文件(metadata.xml)中找到SAML实体ID your:entity.id 的元数据。

    1. 确保您使用的 metadata.xml 文件确实是您的 SAML 身份提供商提供的。
    2. 确保 metadata.xml 文件包含一个 元素,如下所示: 其中 entityID 属性的值与您在 elasticsearch.yml 中 SAML 领域配置中设置的 idp.entity_id 值相同。
    3. 请注意,这些字符串也作为区分大小写的字符串进行比较,而不是作为规范化的URL,即使这些值类似于URL。
  4. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    unable to authenticate user []
    for action [cluster:admin/xpack/security/saml/authenticate]

    解决方案:

    此错误表明 Elasticsearch 未能处理传入的 SAML 认证消息。由于无法处理该消息,Elasticsearch 不知道待认证用户是谁,因此使用 占位符代替。要诊断 实际 问题,您必须检查 Elasticsearch 日志以获取更多详细信息。

  5. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Authentication to realm  failed - SAML Attribute [] for
    [xpack.security.authc.realms.saml..attributes.principal] not found in saml attributes
    [=, =, ...] or NameID [ NameID(format)=value ]

    解决方案:

    此错误表明 Elasticsearch 在身份提供者发送的 SAML 响应中未能找到必要的 SAML 属性。在此示例中,Elasticsearch 的配置如下:

    xpack.security.authc.realms.saml..attributes.principal: AttributeName0

    此配置意味着 Elasticsearch 期望在 SAML 响应中找到一个名为 AttributeName0 的 SAML 属性或具有适当格式的 NameID,以便 将其映射principal 用户属性。principal 用户属性是强制性的,因此如果无法进行此映射,则身份验证将失败。

    如果您正在尝试映射一个NameID,请确保预期的NameID格式与发送的格式匹配。 有关更多详细信息,请参阅特殊属性名称

    如果您尝试映射一个SAML属性,而该属性不在错误消息的列表中,这可能意味着您拼错了属性名称,或者IdP没有发送这个特定的属性。您可能可以使用列表中的另一个属性来映射到principal,或者咨询您的IdP管理员以确定是否可以发送所需的属性。

  6. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Cannot find [{urn:oasis:names:tc:SAML:2.0:metadata}IDPSSODescriptor]/[urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect] in descriptor

    解决方案:

    此错误表明您的身份提供者的SAML元数据不包含绑定为HTTP-Redirect(urn:oasis:names:tc:SAML:2.0:bindings:HTTP-Redirect)的端点。Elasticsearch仅支持SAML身份验证请求的HTTP-Redirect绑定(并且不支持HTTP-POST绑定)。请咨询您的IdP管理员,以启用至少一个支持HTTP-Redirect绑定的,并更新您的IdP SAML元数据。

  7. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    Authentication to realm my-saml-realm failed -
    Provided SAML response is not valid for realm saml/my-saml-realm
    (Caused by ElasticsearchSecurityException[SAML Response is not a 'success' response:
     The SAML IdP did not grant the request. It indicated that the Elastic Stack side sent
     something invalid (urn:oasis:names:tc:SAML:2.0:status:Requester). Specific status code which might
     indicate what the issue is: [urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy]]
    )

    解决方案:

    这意味着SAML身份提供者未能对用户进行身份验证,并向服务提供者(Elastic Stack)发送了一个SAML响应,表明了这一失败。消息将传达SAML身份提供者认为问题是出在服务提供者(Elastic Stack)还是身份提供者本身,并且随后的特定状态代码非常有用,因为它通常指示了潜在的问题。特定错误代码的列表在SAML 2.0核心规范 - 第3.2.2.2节中定义,最常遇到的错误代码包括:

    1. urn:oasis:names:tc:SAML:2.0:status:AuthnFailed: The SAML Identity Provider failed to authenticate the user. There is not much to troubleshoot on the Elastic Stack side for this status, the logs of the SAML Identity Provider will hopefully offer much more information.
    2. urn:oasis:names:tc:SAML:2.0:status:InvalidNameIDPolicy: The SAML Identity Provider cannot support releasing a NameID with the requested format. When creating SAML Authentication Requests, Elasticsearch sets the NameIDPolicy element of the Authentication request with the appropriate value. This is controlled by the nameid_format configuration parameter in elasticsearch.yml, which if not set defaults to urn:oasis:names:tc:SAML:2.0:nameid-format:transient. This instructs the Identity Provider to return a NameID with that specific format in the SAML Response. If the SAML Identity Provider cannot grant that request, for example because it is configured to release a NameID format with urn:oasis:names:tc:SAML:2.0:nameid-format:persistent format instead, it returns this error indicating an invalid NameID policy. This issue can be resolved by adjusting nameid_format to match the format the SAML Identity Provider can return or by setting it to urn:oasis:names:tc:SAML:2.0:nameid-format:unspecified so that the Identity Provider is allowed to return any format it wants.
  8. 症状:

    Kibana中的身份验证失败,并且在Elasticsearch日志中打印了以下错误:

    The XML Signature of this SAML message cannot be validated. Please verify that the saml
    realm uses the correct SAMLmetadata file/URL for this Identity Provider

    解决方案:

    这意味着 Elasticsearch 未能验证身份提供者发送的 SAML 消息的数字签名。Elasticsearch 使用 SAML 元数据中包含的身份提供者的公钥来验证身份提供者使用其对应的私钥创建的签名。未能验证的原因可能有多种:

    1. 如错误消息所示,最常见的原因是使用了错误的元数据文件,因此其中包含的公钥与身份提供者使用的私钥不对应。
    2. 身份提供者的配置已更改或密钥已轮换,而 Elasticsearch 使用的元数据文件尚未更新。
    3. SAML 响应在传输过程中被篡改,即使使用了正确的密钥,签名也无法验证。

    用于SAML数字签名的私钥、公钥和自签名X.509证书与用于传输层或HTTP层的TLS的密钥和证书无关。如上所述的故障与您的xpack.ssl相关配置无关。

  9. 症状:

    由于启用了 SAML,用户无法使用本地用户名和密码登录 Kibana。

    解决方案:

    如果您希望用户能够使用本地凭据进行身份验证,除了使用SAML领域进行单点登录外,您必须在Kibana中启用basic authProvider。该过程记录在SAML指南

  10. <span class="strong

日志记录:

如果之前的解决方案未能解决您的问题,请为SAML领域启用额外的日志记录以进一步排查。您可以通过配置以下持久设置来启用调试日志记录:

PUT /_cluster/settings
{
  "persistent": {
    "logger.org.elasticsearch.xpack.security.authc.saml": "debug"
  }
}

或者,您可以将以下行添加到ES_PATH_CONF中的log4j2.properties配置文件的末尾:

logger.saml.name = org.elasticsearch.xpack.security.authc.saml
logger.saml.level = DEBUG

请参阅配置日志级别以获取更多信息。

Kibana 中的内部服务器错误

edit

症状:

  • 在5.1.1中,会出现一个UnhandledPromiseRejectionWarning,并且Kibana显示一个 内部服务器错误。

解决方案:

如果 Elasticsearch 中启用了安全插件但在 Kibana 中禁用了,您仍然必须在 kibana.yml 中设置 elasticsearch.usernameelasticsearch.password。否则,Kibana 无法连接到 Elasticsearch。

由于连接失败,设置密码命令失败

edit

The elasticsearch-setup-passwords 命令 通过发送用户管理 API 请求来设置内置用户的密码。如果您的集群为 HTTP(REST)接口使用 SSL/TLS,该命令将尝试使用 HTTPS 协议建立连接。如果连接尝试失败,命令将失败。

症状:

  1. Elasticsearch 正在运行 HTTPS,但命令未能检测到它并返回以下错误:

    无法连接到 elasticsearch 节点。
    java.net.SocketException: 来自服务器的文件意外结束
    ...
    错误:无法连接到位于
    http://127.0.0.1:9200/_security/_authenticate?pretty 的 elasticsearch。
    URL 是否正确且 elasticsearch 正在运行?
  2. SSL/TLS 已配置,但无法建立信任。该命令返回以下错误:

    到
    https://127.0.0.1:9200/_security/_authenticate?pretty 的 SSL 连接失败:
    sun.security.validator.ValidatorException:
    PKIX 路径构建失败:
    sun.security.provider.certpath.SunCertPathBuilderException:
    无法找到请求目标的有效证书路径
    请检查 xpack.security.http.ssl 下的 elasticsearch SSL 设置。
    ...
    错误:无法在
    https://127.0.0.1:9200/_security/_authenticate?pretty 建立到 elasticsearch 的 SSL 连接。
  3. 命令失败是因为主机名验证失败,导致出现以下错误:

    到
    https://idp.localhost.test:9200/_security/_authenticate?pretty 的 SSL 连接失败:
    java.security.cert.CertificateException:
    未找到与 elasticsearch.example.com 匹配的主题备用 DNS 名称。
    请检查 xpack.security.http.ssl 下的 elasticsearch SSL 设置。
    ...
    错误:无法在
    https://elasticsearch.example.com:9200/_security/_authenticate?pretty 建立到 elasticsearch 的 SSL 连接。

解决方案:

  1. 如果您的集群为HTTP接口使用TLS/SSL,但elasticsearch-setup-passwords命令尝试建立非安全连接,请使用--url命令选项明确指定一个HTTPS URL。或者,将xpack.security.http.ssl.enabled设置为true
  2. 如果命令不信任Elasticsearch服务器,请验证您是否配置了xpack.security.http.ssl.certificate_authorities设置或xpack.security.http.ssl.truststore.path设置。
  3. 如果主机名验证失败,您可以通过将xpack.security.http.ssl.verification_mode设置为certificate来禁用此验证。

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

由于配置文件重定位导致的失败

edit

症状:

  • 升级到Elasticsearch 6.3或更高版本后,Active Directory或LDAP领域可能会停止工作。在6.4或更高版本中,您可能会在Elasticsearch日志中看到指示配置文件位于已弃用位置的消息。

解决方案:

默认情况下,在6.2及更早版本中,安全配置文件位于ES_PATH_CONF/x-pack目录中,其中ES_PATH_CONF是一个环境变量,定义了配置目录的位置。

在6.3及更高版本中,配置目录不再包含一个x-pack目录。存储在此文件夹中的文件,例如log4j2.propertiesrole_mapping.ymlroles.ymlusersusers_roles文件,现在直接存在于配置目录中。

如果您升级到了6.3或更高版本,您的旧安全配置文件仍然存在于一个x-pack文件夹中。然而,该文件路径已被弃用,您应该将您的文件移出该文件夹。

在6.3及更高版本中,设置如files.role_mapping默认指向ES_PATH_CONF/role_mapping.yml。如果您不想使用默认位置,则必须相应地更新设置。请参阅安全设置