Amazonは、1.3.21バージョンのAWSJavaSDKでSSLセキュリティを「アップグレード」しました。これにより、AmazonのAWS Java APIを使用するときに、名前にピリオドが含まれるS3バケットへのアクセスが中断されました。2012年10月5日までのバージョン1.3.21.1を使用しています。以下の回答でいくつかの解決策を提供しましたが、この問題に対する追加の回避策を探しています。
このエラーが発生した場合は、例外/ログに次のようなメッセージが表示されます。この例では、バケット名は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)
この問題のドキュメントは、AWSS3ディスカッションフォーラムで確認できます。
この問題に対するAmazonの対応は次のとおりです。
この命名パターンのバケットに対して(新しい仮想ホストスタイルのアドレス指定ではなく)バケットアドレス指定の古いパススタイルの方法を使用することで、これを修正できるはずです。修正を開始し、内部統合テストにピリオドを含むバケット名のテストケースがあることを確認します。
回避策または他の解決策はありますか?フィードバックをありがとうございます。