Amazon 在 1.3.21 版本中“升级”了其 AWS Java SDK 中的 SSL 安全性。在使用 Amazon 的 AWS Java API 时,这会破坏对名称中带有句点的任何 S3 存储桶的访问。我正在使用 1.3.21.1 版本,该版本截至 2012 年 10 月 5 日。我在下面的回答中提供了一些解决方案,但我正在寻找解决此问题的其他方法。
如果您收到此错误,您将在异常/日志中看到类似于以下消息的内容。在此示例中,存储桶名称为foo.example.com
。
INFO: Unable to execute HTTP request: hostname in certificate didn't match:
<foo.example.com.s3.amazonaws.com> != <*.s3.amazonaws.com>
OR <*.s3.amazonaws.com> OR <s3.amazonaws.com>
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:220)
at org.apache.http.conn.ssl.StrictHostnameVerifier.verify(StrictHostnameVerifier.java:61)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:149)
at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:130)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:390)
您可以在 AWS S3 讨论论坛上查看此问题的文档:
亚马逊对此问题的回应如下。
我们应该能够通过对具有这种命名模式的存储桶使用较旧的路径样式寻址方法(而不是较新的虚拟主机样式寻址)来解决此问题。我们将开始修复并确保我们的内部集成测试具有包含句点的存储桶名称的测试用例。
任何解决方法或其他解决方案?感谢您的任何反馈。