云搜索服务 CSS-通过Spring Boot接入Elasticsearch集群:使用Spring Boot接入HTTPS集群(不使用安全证书)

时间:2025-02-12 15:03:34

使用Spring Boot接入HTTPS集群(不使用安全证书)

该场景适用于不使用安全证书连接安全模式+HTTPS协议的集群。

配置文件:

123
elasticsearch.url=host1:9200,host2:9200elasticsearch.username=usernameelasticsearch.password=password
表2 参数说明

参数

描述

host

Elasticsearch集群的访问地址。

username

访问集群的用户名。

password

用户名对应的密码。

配置代码:

  • com.xxx为项目目录,例如com.company.project。
  • com.xxx.repository为仓库目录,通过extends org.springframework.data.elasticsearch.repository.ElasticsearchRepository进行具体定义。
 1 2 3 4 5 6 7 8 91011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
package com.xxx.configuration;import org.elasticsearch.client.RestHighLevelClient;import org.springframework.beans.factory.annotation.Value;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.data.elasticsearch.client.ClientConfiguration;import org.springframework.data.elasticsearch.client.RestClients;import org.springframework.data.elasticsearch.config.AbstractElasticsearchConfiguration;import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;import java.security.KeyManagementException;import java.security.NoSuchAlgorithmException;import java.security.SecureRandom;import java.security.cert.CertificateException;import java.security.cert.X509Certificate;import javax.net.ssl.HostnameVerifier;import javax.net.ssl.SSLContext;import javax.net.ssl.SSLSession;import javax.net.ssl.TrustManager;import javax.net.ssl.X509TrustManager;@Configuration@EnableElasticsearchRepositories(basePackages = "com.xxx.repository")@ComponentScan(basePackages = "com.xxx")public class Config extends AbstractElasticsearchConfiguration {    @Value("${elasticsearch.url}")    public String elasticsearchUrl;    @Value("${elasticsearch.username}")    public String elasticsearchUsername;    @Value("${elasticsearch.password}")    public String elasticsearchPassword;    @Override    @Bean    public RestHighLevelClient elasticsearchClient() {        SSLContext sc = null;        try {            sc = SSLContext.getInstance("SSL");            sc.init(null, trustAllCerts, new SecureRandom());        } catch (KeyManagementException | NoSuchAlgorithmException e) {            e.printStackTrace();        }        final ClientConfiguration clientConfiguration = ClientConfiguration.builder()            .connectedTo(StringHostParse(elasticsearchUrl))            .usingSsl(sc, new NullHostNameVerifier())            .withBasicAuth(elasticsearchUsername, elasticsearchPassword)            .build();        return RestClients.create(clientConfiguration).rest();    }    private String[] StringHostParse(String hostAndPorts) {        return hostAndPorts.split(",");    }    public static TrustManager[] trustAllCerts = new TrustManager[] {        new X509TrustManager() {            @Override            public void checkClientTrusted(X509Certificate[] chain, String authType) throws CertificateException {            }            @Override            public void checkServerTrusted(X509Certificate[] chain, String authType) throws CertificateException {            }            @Override            public X509Certificate[] getAcceptedIssuers() {                return null;            }        }    };    public static class NullHostNameVerifier implements HostnameVerifier {        @Override        public boolean verify(String arg0, SSLSession arg1) {            return true;        }    }}
support.huaweicloud.com/usermanual-css/css_01_0068.html