use*_*773 5 java amazon-s3 amazon-web-services
我有一个基本的 Amazon S3 SDK 代码片段,用于检索存储桶列表。服务器配置为仅接受 TLSv1.2。我无法将客户端配置为发送 TLS v1.2 请求,调试显示客户端始终发送 TLSv1.2 请求。我试过设置系统属性,但这也不起作用。
-Dhttps.protocols=TLSv1.2
BasicAWSCredentials credentials = new BasicAWSCredentials(username,password);
AmazonS3 s3 = new AmazonS3Client(credentials);
final String serviceurl = "https://ip:port";
s3.setEndpoint(serviceurl);
S3ClientOptions s3ClientOptions = new S3ClientOptions();
s3ClientOptions.setPathStyleAccess(false);
s3.setS3ClientOptions(s3ClientOptions);
for (Bucket bucket: s3.listBuckets()) {
System.out.println("Bucket name::" + bucket.getName());
}
Run Code Online (Sandbox Code Playgroud)
我在这里缺少什么?如何配置代码以始终发送 TLSv1.2 请求?我正在使用 AWS 开发工具包 1.7.25。谢谢你的帮助。
AWS Java SDK 版本 1.9.4 将 TLSv1.2 设为默认值。
然而,直到 1.9.14 版本(代码在这里)之前,它才存在于枚举中。我建议至少使用该版本。
我相信注入这些信息是可能的,但工作量很大。我可能在这里遗漏了一点:
import org.apache.http.conn.ssl.SSLSocketFactory;
import com.amazonaws.ApacheHttpClientConfig;
import com.amazonaws.ClientConfiguration;
SSLContext ctx = SSLContext.getInstance("TLSv1.2");
SSLSocketFactory socketFactory = ctx.engineGetSocketFactory();
ClientConfiguration client = new ClientConfiguration();
ApacheHttpClientConfig apacheClient = client.getApacheHttpClientConfig();
SSLSocketFactory socketContext = apacheClient.getSslSocketFactory();
apacheClient.setSslSocketFactory(socketFactory);
Run Code Online (Sandbox Code Playgroud)
注射剂来源:
归档时间: |
|
查看次数: |
5290 次 |
最近记录: |