[英]Convincing java to talk to “localstack” via SSL
我希望使用localstack來模擬 elasticsearch/kinesis/dynamo。 我的彈性代碼想要 HTTPS 端點時遇到了麻煩。
通過 java 11/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
我試過了:
System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");
- 沒有 go-Dcom.amazonaws.sdk.disableCertChecking
- 沒有 go我覺得我正在尋找的是可行的.. 只是似乎無法找到正確的設置組合。
如果您自己創建RestHighLevelClient
(或控制此對象的創建),則可以使用接受RestClientBuilder
的構造函數。
使用RestClient.builder()
方法創建一個帶有自定義SSLContext
的RestClientBuilder
。 以下來自Elasticsearch 源代碼:
RestClientBuilder builder = RestClient.builder(
new HttpHost("localhost", 9200, "https"))
.setHttpClientConfigCallback(new HttpClientConfigCallback() {
@Override
public HttpAsyncClientBuilder customizeHttpClient(
HttpAsyncClientBuilder httpClientBuilder) {
return httpClientBuilder.setSSLContext(sslContext);
}
});
在您的情況下,您需要創建一個信任所有主機的 SSLContext:
SSLContext context = SSLContext.getInstance("SSL")
context.init(null, new TrustManager[] {
new X509TrustManager {
void checkClientTrusted(X509Certificate[] chain, String authType) {}
void checkServerTrusted(X509Certificate[] chain, String authType) {}
void getAcceptedIssuers() { return null; }
}
}, null);
以上內容完全未經測試,但可以幫助您入門。 如果它適合您,請隨時使用更多詳細信息更新此答案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.