繁体   English   中英

是否可以在 amazon kinesis consumer library v2 中禁用 SSL 证书检查?

[英]Is it possible to disable SSL certificate checking in the amazon kinesis consumer library v2?

使用 Kinesis Consumer Library 版本 2 开发 Kinesis Consumer 并将 Dynamo DB 端点覆盖为 localstack 端点时,由于 SSL 握手错误,库无法创建租赁表。

我可以确认在使用 AWS 的 Dynamo DB 时创建表成功,但是一旦我将端点 url 覆盖到本地堆栈 url,Dynamo DB 客户端在多次重试后无法创建租约表。 堆栈跟踪不是很有用,但 Wireshark 显示了所有 SSL 握手错误,因此我只能假设 Amazon SDK 不接受 localstack 证书。 我找不到任何关于如何使用software.amazon.awssdk package 禁用证书验证的提及。

Region region = Region.of("us-east-1");
DefaultCredentialsProvider credentialsProvider = DefaultCredentialsProvider.create();
DynamoDbAsyncClient dynamoClient = DynamoDbAsyncClient.builder()
    .region(region)
    .endpointOverride(URI.create("https://localhost:4569"))
    .credentialsProvider(credentialsProvider)
    .build();

/edit 这是基于亚马逊的示例: https://docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html

这是 S3 的示例

final AttributeMap attributeMap = AttributeMap.builder()
        .put(SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, true)
        .build();
final SdkHttpClient sdkHttpClient = new DefaultSdkHttpClientBuilder().buildWithDefaults(attributeMap);

return S3Client.builder()
        .httpClient(sdkHttpClient)
        .build();

在 kotlin 中,我设置了一个这样的环境变量:

System.setProperty(SDKGlobalConfiguration.DISABLE_CERT_CHECKING_SYSTEM_PROPERTY, "true");

这将允许您为 DynamoDB 使用 localstack,事实上,这正是我设置上述环境变量的原因。

更多环境变量可以在aws-java-sdk github repo 中找到

在 SDK 版本 2 中需要使用选项: software.amazon.awssdk.http.SdkHttpConfigurationOption#TRUST_ALL_CERTIFICATES

用法示例:

private SdkAsyncHttpClient buildSdkAsyncHttpClient() {
    return NettyNioAsyncHttpClient.builder()
            .buildWithDefaults(
                    AttributeMap.builder()
                            .put(SdkHttpConfigurationOption.TRUST_ALL_CERTIFICATES, true)
                            .build()
            );
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM