aws java api使用HTTPS端点抛出SdkClientException,列出Ceph存储中的对象
我正在构建一个可以管理多个对象存储服务器的系统。多亏了,我可以使用HTTP端点实现公共AWS S3存储的关键功能,而不会出现任何问题。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
然而,当我使用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密钥注册的情况下,如何避免此异常?(必须动态管理每个存储。)