Amazon s3 java sdk,在预先签名的URL上调用openStream()时遇到SSL握手异常

Amazon s3 java sdk,在预先签名的URL上调用openStream()时遇到SSL握手异常,java,amazon-s3,Java,Amazon S3,我使用的服务返回一个对象的预签名url。当我尝试使用url.openStream()打开内容时,我得到javax.net.ssl.SSLHandshakeException:java.security.cert.certificateeexception:找不到与xxx.s3.amazonaws.com匹配的主题替代DNS名称。 我需要返回一个输入流,我对这些规范感到非常紧张。我通读了其他问题,但没有找到明确的答案 我找到了原因。因为我的bucketName里面有个“.”。因此,由s3.amaz

我使用的服务返回一个对象的预签名url。当我尝试使用
url.openStream()
打开内容时,我得到
javax.net.ssl.SSLHandshakeException:java.security.cert.certificateeexception:找不到与xxx.s3.amazonaws.com匹配的主题替代DNS名称。


我需要返回一个输入流,我对这些规范感到非常紧张。我通读了其他问题,但没有找到明确的答案

我找到了原因。因为我的bucketName里面有个“.”。因此,由s3.amazonaws.com颁发的证书对子域mybucket.s3.amazonaws.com有效。因此,如果您有类似于mybucket.mybucketname.s3.amazonaws.com的内容,那么它不会被视为s3.amazonaws.com的子域,因此会出现证书不匹配。

但奇怪的是,这种情况并不是经常发生的,尽管我们总是使用相同的bucket名称和“.”。通常这发生在第二次连接的中间(在一次之前-而不是同时)……有一个相似的问题…虽然我的bucketid不是经常出现,但是我的bucketid有“-”和objectid有“.”这个问题会持续下去吗?