Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
说服java与“对话”;localstack";通过SSL_Java_Amazon Web Services_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Java,Amazon Web Services,elasticsearch" /> elasticsearch,Java,Amazon Web Services,elasticsearch" />

说服java与“对话”;localstack";通过SSL

说服java与“对话”;localstack";通过SSL,java,amazon-web-services,elasticsearch,Java,Amazon Web Services,elasticsearch,我希望用它来模拟弹性搜索/运动/发电机。我的弹性代码需要HTTPS端点,因此遇到了麻烦 通过Java11/IntelliJ进行测试 在所有情况下,我都会遇到以下错误: Caused by: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid

我希望用它来模拟弹性搜索/运动/发电机。我的弹性代码需要HTTPS端点,因此遇到了麻烦

通过Java11/IntelliJ进行测试

在所有情况下,我都会遇到以下错误:

Caused by: sun.security.validator.ValidatorException: PKIX path building failed: 
 sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid 
 certification path to requested target
我试过:

  • 使用USE_SSL环境变量集启动localstack。curl命令(例如“curl-k”)用于弹性工作,但java没有
  • 使用localstack注释(@RunWith(LocalstackDockerTestRunner.class)”并将“USE_SSL”作为参数传递-禁止
  • 通过
    System.setProperty(SDKGlobalConfiguration.DISABLE\u CERT\u CHECKING\u System\u PROPERTY,true)告诉Java忽略“坏”证书;
    -不行
  • 正在传递cmdline param
    -Dcom.amazonaws.sdk.disableCertChecking
    -禁止

我觉得我正在寻找的是可行的。只是似乎找不到正确的设置组合。

如果您自己创建
RestHighLevelClient
(或控制此对象的创建),您可以使用接受
RestClientBuilder
的构造函数

使用
RestClient.builder()
方法创建带有自定义
SSLContext
RestClientBuilder
。以下内容来自:

在您的情况下,需要创建信任所有主机的SSLContext:

SSLContext context=SSLContext.getInstance(“SSL”)
context.init(null,新TrustManager[]{
新X509TrustManager{
void checkClientTrusted(X509Certificate[]链,字符串authType){}
void checkServerTrusted(X509Certificate[]链,字符串authType){}
void getAcceptedAssuers(){return null;}
}
},空);

以上内容完全未经测试,但可能会让您开始。如果对您有效,请随时更新此答案,并提供更多详细信息。

您尝试过调查吗?刚刚调查过。没有什么不同-相同的错误。我觉得AWS忽略了所有“相信一切”消息;您如何访问Elasticsearch?使用一些现成的库?使用java的原始HTTPSURLConnection?使用Apache HTTPClient?使用Java11新的HTTPClient?使用RestHighLevelClient-这是注入的-您是如何从cmdline运行java应用程序的?
java-Dcom.amazonaws.sdk.disableCertChecking-jar my.jar
java-jar my.jar-Dcom.amazonaws.sdk.disableCertChecking
?第一个版本应该可以工作。放置这个的位置会产生巨大的差异。
        RestClientBuilder builder = RestClient.builder(
            new HttpHost("localhost", 9200, "https"))
            .setHttpClientConfigCallback(new HttpClientConfigCallback() {
                @Override
                public HttpAsyncClientBuilder customizeHttpClient(
                        HttpAsyncClientBuilder httpClientBuilder) {
                    return httpClientBuilder.setSSLContext(sslContext);
                }
            });