【问题标题】:javax.net.ssl.SSLPeerUnverifiedException while trying to access S3 Bucket尝试访问 S3 存储桶时出现 javax.net.ssl.SSLPeerUnverifiedException
【发布时间】:2016-11-01 20:35:58
【问题描述】:

我正在尝试访问存储桶并从 S3 上传/下载文件,我不断收到以下异常:

原因:javax.net.ssl.SSLPeerUnverifiedException:主机名“s3.eu-west-1.amazonaws.com”与对等方提供的证书主题不匹配(CN=*.s3-eu-west- 1.amazonaws.com, O=Amazon.com Inc., L=Seattle, ST=Washington, C=US)

这是我的代码(它是 scala,但可以翻译成 Java):

val bucket = config.getString("aws.bucket").getOrElse("none")

val accessKey = config.getString("aws.accessKeyId").getOrElse("none")

val secretKey = config.getString("aws.secretKey").getOrElse("none")

val region = config.getString("aws.region").getOrElse("none")

val credentials = new BasicAWSCredentials(accessKey, secretKey)

val s3 = new AmazonS3Client(credentials)


s3.setRegion(new com.amazonaws.regions.Region(new InMemoryRegionImpl(region, null)))

val s3Obj = s3.putObject(new PutObjectRequest(bucket, "test1.jpg", new File("/Users/test/Desktop/nature.jpg")))

更多信息:我使用的是最新版本的 Java SDK,并且我使用的是 V4。

【问题讨论】:

    标签: java scala amazon-web-services ssl amazon-s3


    【解决方案1】:

    看起来 SSL 证书需要在主机名中增加一层,例如

    myhost.s3-eu-west-1.amazonaws.com
    ^^^^^^^
    

    myhost 是您的存储桶名称。

    【讨论】:

    • 如何在客户端设置?
    • 如果我尝试使用来自 S3Client 的 setEndpoint 设置端点,而不是区域。 s3.setEndpoint(s"s3-eu-west-1.amazonaws.com") 我得到代码:403;错误代码:AccessDenied;请求 ID:A0015BF9C8362F68) com.amazonaws.services.s3.model.AmazonS3Exception:访问被拒绝(服务:Amazon S3;状态代码:403 ; 错误代码:AccessDenied;请求 ID:A0015BF9C8362F68),S3 扩展请求 ID:yTT6fpwrpw9VopJ0wicNFwC1q98DGGXGUZInQFTX0PL/CLalUWFlvyqjcEzKJbj3giC0XXRlys8=
    • 有时也会出现此异常:java.lang.IllegalArgumentException: hostname cannot be null at com.amazonaws.util.AwsHostNameUtils.parseRegion(AwsHostNameUtils.java:79)
    猜你喜欢
    • 2017-05-12
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    • 2017-02-07
    • 2017-05-29
    • 2017-12-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多