springboot解决es https
时间: 2025-05-28 09:09:09 浏览: 9
### 配置 Spring Boot 使用 HTTPS 连接 Elasticsearch
为了使 Spring Boot 应用程序能够通过 HTTPS 安全地连接到 Elasticsearch 实例,配置过程中需注意几个关键点。首先,在应用程序属性文件 `application.properties` 或者 `application.yml` 中指定安全设置。
#### application.properties 设置
```properties
spring.elasticsearch.rest.uris=https://your-elasticsearch-host:port
spring.elasticsearch.rest.username=elastic_username
spring.elasticsearch.rest.password=elastic_password
spring.elasticsearch.rest.ssl.trust-store-location=/path/to/truststore.jks
spring.elasticsearch.rest.ssl.trust-store-password=trust_store_password
```
上述配置指定了 Elasticsearch RESTful API 的 URL 地址、认证用户名密码以及信任库的位置和密码[^1]。
如果使用的是自签名证书,则还需要确保 JVM 能够识别这些证书。可以通过将证书导入 Java 密钥库(JKS)来实现这一点:
```bash
keytool -importcert -file /path/to/cert.pem -alias elastic-cert -keystore $JAVA_HOME/jre/lib/security/cacerts
```
另外一种方法是在启动应用时通过命令行参数传递特定的信任存储路径给 JVM:
```bash
-Djavax.net.ssl.trustStore=/path/to/custom_truststore.jks \
-Djavax.net.ssl.trustStorePassword=my_secret_passphrase
```
对于更复杂的场景比如双向 SSL 认证(客户端也需要向服务器证明身份),则还需提供客户端密钥库的相关信息。
在代码层面,可以利用 RestHighLevelClient 来构建带有 HTTPS 支持的 ES 客户端实例,并将其注入到 Spring 上下文中以便其他组件访问[^2]:
```java
@Bean(destroyMethod = "close")
public RestHighLevelClient restHighLevelClient() {
final CredentialsProvider credentialsProvider =
new BasicCredentialsProvider();
credentialsProvider.setCredentials(AuthScope.ANY,
new UsernamePasswordCredentials("username", "password"));
RestClientBuilder builder = RestClient.builder(
new HttpHost("host", port, "https"))
.setHttpClientConfigCallback(httpClientBuilder ->
httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider));
return new RestHighLevelClient(builder);
}
```
此段代码展示了如何创建一个支持基本验证机制的安全 HTTP 请求客户端并集成至 Spring Bean 生命周期管理之中。
阅读全文
相关推荐


















