是否可以在Amazon Kinesis使用者库v2中禁用SSL证书检查?

时间:2019-02-18 14:58:00

标签: java amazon-dynamodb aws-sdk amazon-kinesis atlassian-localstack

在使用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软件包禁用证书验证的提示。

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,这是基于来自Amazon的示例:https://docs.aws.amazon.com/streams/latest/dev/kcl2-standard-consumer-java-example.html

2 个答案:

答案 0 :(得分:0)

在kotlin中,我正在这样设置环境变量:

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

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

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

中找到

答案 1 :(得分:0)

在 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()
            );
}