使用AWS SDK for Java V1扮演角色失败,遇SSL连接重置错误求助
AWS SDK for Java V1 扮演角色时出现 SSLException: Connection reset 的修复思路
问题描述
我正尝试通过扮演AWS角色来连接不同服务,使用AWS SDK for Java V1编写了如下实现代码,但运行出现异常,抛出错误:
javax.net.ssl.SSLException: Connection reset
实现代码
public static Credentials assumeRole() { String targetRoleArn = "xxx"; String assumedRoleName = "xxx"; String accessKey = "xxx"; String secretKey = "xxx"; Credentials assumedCredentials = null; AwsBasicCredentials credentials = AwsBasicCredentials.create(accessKey, secretKey); StsClient stsClient = StsClient.builder() .region(Region.US_EAST_1) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .build(); try { AssumeRoleRequest roleRequest = AssumeRoleRequest.builder() .roleArn(targetRoleArn) .roleSessionName(assumedRoleName) .build(); AssumeRoleResponse roleResponse = stsClient.assumeRole(roleRequest); assumedCredentials = roleResponse.credentials(); } catch (StsException e) { System.err.println(e.getMessage()); System.exit(1); } return assumedCredentials; }
修复思路
检查网络与代理配置
如果你的环境处于代理网络下,必须为StsClient配置代理信息,示例代码如下:StsClient stsClient = StsClient.builder() .region(Region.US_EAST_1) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .clientConfiguration(ClientConfiguration.builder() .proxyHost("你的代理地址") .proxyPort(你的代理端口) .build()) .build();同时手动测试网络连通性,比如用curl访问
sts.us-east-1.amazonaws.com,确认能正常建立SSL连接。验证SSL证书与JDK版本
老旧JDK的信任库可能缺少AWS的根证书,建议升级到Java 11或17这类LTS版本。如果无法升级,可以手动将AWS的SSL证书导入到JDK的cacerts信任库中。核对区域配置一致性
确认目标IAM角色所在区域和StsClient配置的Region.US_EAST_1完全一致,如果角色在其他区域(比如中国区CN_NORTH_1),需要同步修改客户端的区域配置。添加超时与重试策略
连接重置可能是临时网络波动导致,给客户端增加超时和重试配置,提升容错性:StsClient stsClient = StsClient.builder() .region(Region.US_EAST_1) .credentialsProvider(StaticCredentialsProvider.create(credentials)) .clientConfiguration(ClientConfiguration.builder() .connectionTimeout(5000) // 5秒连接超时 .socketTimeout(10000) // 10秒读取超时 .retryPolicy(RetryPolicy.defaultRetryPolicy()) .build()) .build();排查IAM权限与信任关系
虽然报错是SSL层面的问题,但如果原IAM用户没有sts:AssumeRole权限,或者目标角色的信任策略不允许当前账号扮演,也可能在握手阶段触发异常。检查原用户的权限策略、目标角色的信任关系是否配置正确。
内容的提问来源于stack exchange,提问作者user2324686
相关产品推荐
相关产品推荐

