【问题标题】:Route53 for AWS Elastic Search Domain gives certificate errorAWS 弹性搜索域的 Route53 给出证书错误
【发布时间】:2018-06-17 19:42:47
【问题描述】:

我在弗吉尼亚州创建了一个 AWS 弹性搜索域并获得了一个 Endpoint url。

现在我想围绕它配置 Route53 行为,以便调用者可以使用相同的 url,即使弹性搜索有一些变化或在灾难恢复的情况下也是如此。

所以,

Virginia Route 53 -- 1 Points to -- Virgina Elastic Search Domain URL Oregon Route 53 -- 2 Points to -- Oregon Elastic Search Domain URL 53 号主干线 -- 3 点到 -- 53 号干线 1 或 2

我已经创建了这些,还创建并上传了带有正确 SAN 条目的 SSL 证书。但是当我执行时,

curl https://mainroute53/health
curl https://virginiaroute53/health
curl https://oregonroute53/health

我收到此错误,

curl: (51) Unable to communicate securely with peer: requested domain name does not match the server's certificate.

但是当我直接调用 Elastic Search URL 时,它可以正常工作。所以我知道这是我使用证书的方式的问题。任何帮助表示赞赏。

【问题讨论】:

  • 目前,AWS 对此没有直接的解决方案。这是人们更喜欢手动 EC2 ElasticSearch 集群而不是 AWS ES 的原因之一
  • 有什么办法我仍然可以使用路由 53 并连接到弹性搜索端点?我想从一些 java 后端 api 调用这条路线 53。
  • 您可能想要做的是围绕 ES 端点创建一个反向代理。在 nginx 服务器上终止 SSL 证书,并在私有子网中通过 HTTP 转发请求。

标签: amazon-web-services ssl-certificate aws-elasticsearch


【解决方案1】:

我们遇到了同样的问题,希望使用更友好的 DNS 名称重定向到 Kibana,我们使用了带有 S3 存储桶的解决方案以及 here 所述的重定向。

步骤:

【讨论】:

  • 刚刚测试过 - 不工作 :( 仅 s3 的部分效果很好 - 重定向到 kibana 端点但是当我尝试将 R53 添加到混合中时,最终发现 404 桶未找到 HTTP 和超时 HTTPS 版本的 my-logs.my-domain.com
【解决方案2】:

使用自定义域名访问 Elasticsearch 的一种方法是将 API 网关用作 HTPP 代理。但是您必须处理身份验证部分,因为 ES 的 Cognito cookie 将指向原始域 (*.es.amazonaws.com)。

根据我的经验,这是可行的,您应该能够使用 API 网关(加上自定义域名和 Route 53)来实现您想要的(通过 ES 拥有自定义域名)。只是它需要一些 Cognito 知识,而且很可能需要一些编码(处理 cookie 问题)。

【讨论】:

  • 这可能非常昂贵
【解决方案3】:

您可以通过在 Elasticsearch 域前设置代理服务器来解决此问题,尽管这有点愚蠢,因为 Elasticsearch 域内似乎也有一个 ELB。嗯嗯。

Amazon ES 为您创建的域包括 Elasticsearch 集群中的节点和来自多个 AWS 服务的资源。当 Amazon ES 创建您的域时,它会将实例启动到服务控制的 VPC。这些实例以 Elastic Load Balancing (ELB) 为前端,负载均衡器的端点通过 Route 53 发布。对域的请求通过 ELB 负载均衡器,后者将它们路由到域的 EC2 实例。

https://aws.amazon.com/blogs/database/set-access-control-for-amazon-elasticsearch-service/

【讨论】:

    【解决方案4】:

    您可以使用 http 端点代替 https 端点

    curl **http**://mainroute53/health
    

    这解决了 AWS 不允许在其 托管 Elastic 服务中提供自定义域证书的事实

    【讨论】:

      【解决方案5】:

      您的 Elastic Search 端点将始终返回 Elastic Search SSL 证书。

      因此,当您为其创建 Route 53“别名”时,您可能会通过自定义 DNS 条目连接到它,但 Elastic Search 仍将使用 Elastic Search SSL 证书。

      由于您使用的 DNS 端点与 SSL 证书不匹配,因此您会收到该错误。

      您可以使用--insecure curl 标志让它不检查 SSL 证书,但是这样做有风险。

      【讨论】:

      • 有什么办法我仍然可以使用路由 53 并连接到弹性搜索端点?我想从一些 java 后端 api 调用路由 53。
      • Elastic Search 不允许您替换 SSL 证书。因此,使用 Route 53 的唯一方法是让您的代码不验证 SSL 证书(不推荐)。
      • 是否有机会通过安装 AWS 根证书来解决此问题。我找到了这个docs.aws.amazon.com/elasticsearch-service/latest/developerguide/… 但不确定它是否能解决我的问题。
      • 不,这不能解决您的问题。有助于做的就是验证 Elastic Search 证书。您的问题是验证证书对您不利。
      • 您正在尝试解决安全“功能”问题。对于您要达到的目标,没有合法的解决方案。
      猜你喜欢
      • 2021-09-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      • 1970-01-01
      • 2019-01-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多