亚马逊发布了1.3.22版本,此版本解决了此问题。我已验证我们的代码现在可以正常工作了。引用其发行说明:
现在可以通过HTTPS再次正确寻址名称包含句点的存储桶。
除了等待亚马逊发布新的API之外,我还可以看到几种解决方案。
显然,您可以回滚到AWS Java SDK的1.3.20版本。不幸的是,我需要1.3.21中的某些功能。
您可以
org.apache.http.conn.ssl.StrictHostnameVerifier
在类路径中替换。但是,这是一个 hack ,它将删除我认为对Apache http连接的所有SSL检查。这是对我有用的代码:http : //pastebin.com/bvFELdJE我最终从AWS源jar下载并构建自己的软件包。我对
HttpClientFactory
源应用了以下近似补丁。===================================================================
— src/main/java/com/amazonaws/http/HttpClientFactory.java (thirdparty/aws) (revision 20105)
+++ src/main/java/com/amazonaws/http/HttpClientFactory.java (thirdparty/aws) (working copy)
@@ -93,7 +93,7 @@SSLSocketFactory sf = new SSLSocketFactory( SSLContext.getDefault(),
- SSLSocketFactory.STRICT_HOSTNAME_VERIFIER);
- SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);
正确的解决方法是将域名存储桶处理更改为基于路径的处理。
顺便说一句,下面的内容似乎可行,但 无效 。AWS客户端专门请求
STRICT验证者,并且不使用默认验证者:
SSLSocketFactory.getSystemSocketFactory().setHostnameVerifier( SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER);



