aws java api使用HTTPS端点抛出SdkClientException,列出Ceph存储中的对象

aws java api使用HTTPS端点抛出SdkClientException,列出Ceph存储中的对象,https,aws-java-sdk,ceph,Https,Aws Java Sdk,Ceph,我正在构建一个可以管理多个对象存储服务器的系统。多亏了,我可以使用HTTP端点实现公共AWS S3存储的关键功能,而不会出现任何问题。 然而,当我使用HTTPS端点调用listObjects()到Ceph存储桶时,它会抛出下面的异常 com.amazonaws.SdkClientException:无法执行HTTP请求:sun.security.validator.validator异常:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathB

我正在构建一个可以管理多个对象存储服务器的系统。多亏了,我可以使用HTTP端点实现公共AWS S3存储的关键功能,而不会出现任何问题。
然而,当我使用HTTPS端点调用listObjects()到Ceph存储桶时,它会抛出下面的异常

com.amazonaws.SdkClientException:无法执行HTTP请求:sun.security.validator.validator异常:PKIX路径生成失败:sun.security.provider.certpath.SunCertPathBuilderException:无法找到请求目标的有效证书路径

@Test
public void httpsTest() {
    ClientConfiguration clientConfig = new ClientConfiguration();
    clientConfig.setProtocol(Protocol.HTTPS);
    AmazonS3 client = new AmazonS3Client(new BasicAWSCredentials(ACCESSKEY, SECRETKEY), clientConfig);
    client.setEndpoint(ENDPOINT);

    List<Bucket> bl = client.listBuckets();
    System.out.println(Arrays.deepToString(bl.toArray(new Bucket[]{}))); // works OK
    if (bl.size() > 0) {
        ObjectListing ol = client.listObjects(bl.get(0).getName()); // exception thrown here
        System.out.println(ol.getObjectSummaries().toString());
    }
}
@测试
公共无效httpsTest(){
ClientConfiguration clientConfig=new ClientConfiguration();
clientConfig.setProtocol(Protocol.HTTPS);
AmazonS3客户端=新的AmazonS3客户端(新的BasicAWSCredentials(ACCESSKEY、SECRETKEY)、clientConfig);
setEndpoint(端点);
List bl=client.listbackes();
System.out.println(Arrays.deepToString(bl.toArray(new Bucket[]{}));//工作正常
如果(bl.size()>0){
ObjectListing ol=client.listObjects(bl.get(0.getName());//此处引发异常
System.out.println(ol.getObjectSummaries().toString());
}
}
试图查询getBucketAcl(),但它为每个bucket提供了相同的异常。同一服务器的HTTP端点也可以与setProtocol(HTTP)一起正常工作,因此这似乎不是bucket ACL的问题

在没有服务器到服务器SSH密钥注册的情况下,如何避免此异常?(必须动态管理每个存储。)