当前位置: 首页 > 知识库问答 >
问题:

通过高级rest客户端从SPRING BOOT连接到elasticsearch时忽略SSL证书验证

乐正育
2023-03-14

有没有一种方法可以忽略SSL证书验证,而连接elasticsearch 7.4使用高级rest客户端。我探索了几个选择,但在我的情况下没有任何效果。我有一个HTTPS ES群集,我想通过忽略ssl证书验证从我的Spring引导应用程序连接。

共有1个答案

冯元徽
2023-03-14

希望这能帮助你,我也有同样的问题,这就是我解决的方法

    @Bean
        public RestHighLevelClient createSimpleElasticClient() throws Exception {
            try {
                SSLContextBuilder sslBuilder = SSLContexts.custom()
                        .loadTrustMaterial(null, (x509Certificates, s) -> true);
                        final SSLContext sslContext = sslBuilder.build();
                RestHighLevelClient client = new RestHighLevelClient(RestClient
                        .builder(new HttpHost(hostNameOrLoadbalancerURL, 443, "https")) 
//port number is given as 443 since its https schema
                        .setHttpClientConfigCallback(new HttpClientConfigCallback() {
                            @Override
                            public HttpAsyncClientBuilder customizeHttpClient(HttpAsyncClientBuilder httpClientBuilder) {
                                return httpClientBuilder
                                         .setSSLContext(sslContext)
                                         .setSSLHostnameVerifier(NoopHostnameVerifier.INSTANCE);
                            }
                        })
                        .setRequestConfigCallback(new RestClientBuilder.RequestConfigCallback() {
                            @Override
                            public RequestConfig.Builder customizeRequestConfig(
                                    RequestConfig.Builder requestConfigBuilder) {
                                return requestConfigBuilder.setConnectTimeout(5000)
                                        .setSocketTimeout(120000);
                            }
                        }));
                System.out.println("elasticsearch client created");
                return client;
            } catch (Exception e) {
                System.out.println(e);
                throw new Exception("Could not create an elasticsearch client!!");
            }
        }
 类似资料:
  • 问题内容: 我正在使用Java 6,并尝试使用客户端证书针对远程服务器创建一个。 服务器正在使用自签名的根证书,并且要求提供受密码保护的客户端证书。我已将服务器根证书和客户端证书添加到在中找到的默认Java密钥库中。密钥库文件的名称似乎表明不应将客户端证书放入其中? 无论如何,将根证书添加到此存储解决了臭名昭著的问题 但是,我现在停留在如何使用客户端证书上。我尝试了两种方法,但都无济于事。 首先,

  • 问题内容: 我目前在服务器具有默认的自签名SSL证书的测试环境中工作。我正在使用Restlet 2.1-RC2并实例化客户端资源,如下所示: 并在每次打来的电话中重复使用客户端。如何设置客户端,使其忽略有问题的证书。 问题答案: 正确的方法 是使用以下 方法 将此自签名证书导入客户端的信任库: 您可以直接在可能缺乏灵活性的JRE信任库()中进行操作,也可以在自己的文件副本中进行操作,然后将该文件设

  • 使用Elasticsearch原生Java客户端API()的应用程序升级到使用Java高级REST客户端的路径是什么? 文件(初步?)似乎表明: Java高级REST客户端依赖于Elasticsearch核心项目。它接受与TransportClient相同的请求参数,并返回相同的响应对象。 (来源:https://www.elastic.co/guide/en/elasticsearch/clie

  • 我使用Spring RestTemplate发出HTTPS请求,我想忽略SSL证书 下面是我创建restTem板请求的代码: 当我使用服务器主机名时,此请求有效,但当我使用服务器IP地址时,会出现以下异常:

  • 我正在尝试从ElasticSearch 2过渡到5或6。我想我想直接跳到6.1.1并使用RestHighLevelClient,因为它比低级rest客户端更接近我正在使用的现有传输客户端。 但是,我遇到了一个问题作为集成测试的一部分,我正在创建索引并插入特定数据,因此我知道我的查询是正确的。我似乎无法在High Level客户端中做到这一点。特别是,我希望能够调用: 但是,client.indic

  • 我试图使用Groovy使用Rest API,这里是我使用的代码: 问题是,每次我执行它时,它都会向我显示一个错误: 如何在Groovy中使用SSL和自签名证书? 所有这些都不起作用,有什么帮助吗?