【问题标题】:SSLHandshakeException while using AWS SDK for Java API使用 AWS SDK for Java API 时出现 SSLHandshakeException
【发布时间】:2015-04-11 14:10:05
【问题描述】:

我正在使用 Java API 在 Amazon S3 中上传和下载文件。直到大约一周前它工作得很好,即使我没有接触过代码,它也完全停止工作。我想知道是否有解决方案。谢谢!

这是运行良好的代码:

AWSCredentials credentials = new BasicAWSCredentials(ACCESSKEYID, SECRETKEY);
AmazonS3Client s3client = new AmazonS3Client(credentials);
List<String> bucketList = new ArrayList<String>();
    for (Bucket bucket : s3client.listBuckets()) {
        System.out.println(bucket.getName());
    }

这是错误:

Apr 11, 2015 9:44:12 PM com.amazonaws.http.AmazonHttpClient executeHelper
INFO: Unable to execute HTTP request: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.ssl.Alerts.getSSLException(Alerts.java:192)
at sun.security.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1904)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:279)
at sun.security.ssl.Handshaker.fatalSE(Handshaker.java:273)
at sun.security.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1446)
at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:209)
at sun.security.ssl.Handshaker.processLoop(Handshaker.java:901)
at sun.security.ssl.Handshaker.process_record(Handshaker.java:837)
at sun.security.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:1023)
at sun.security.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1332)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1359)
at sun.security.ssl.SSLSocketImpl.startHandshake(SSLSocketImpl.java:1343)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:534)
at org.apache.http.conn.ssl.SSLSocketFactory.connectSocket(SSLSocketFactory.java:402)
at com.amazonaws.http.conn.ssl.SdkTLSSocketFactory.connectSocket(SdkTLSSocketFactory.java:118)
at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:178)
at org.apache.http.impl.conn.ManagedClientConnectionImpl.open(ManagedClientConnectionImpl.java:304)
at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:610)
at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:445)
at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:82)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57)
at com.amazonaws.http.AmazonHttpClient.executeOneRequest(AmazonHttpClient.java:685)
at com.amazonaws.http.AmazonHttpClient.executeHelper(AmazonHttpClient.java:460)
at com.amazonaws.http.AmazonHttpClient.execute(AmazonHttpClient.java:295)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3736)
at com.amazonaws.services.s3.AmazonS3Client.invoke(AmazonS3Client.java:3686)
at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:688)
at com.amazonaws.services.s3.AmazonS3Client.listBuckets(AmazonS3Client.java:696)
at keymanager.service.AWSAPI.getBucketList(AWSAPI.java:130)
at keymanager.view.KeyManager.initializeBucketList(KeyManager.java:59)
at keymanager.view.KeyManager.connectButtonActionPerformed(KeyManager.java:626)
at keymanager.view.KeyManager.access$1000(KeyManager.java:22)
at keymanager.view.KeyManager$12.actionPerformed(KeyManager.java:425)

我做了一些研究,有些人认为问题可能出在权限上。但是,我想我已经尽可能地遵循了这里的说明:http://docs.aws.amazon.com/AWSToolkitEclipse/latest/GettingStartedGuide/tke_setup_creds.html#d0e387。伙计们,我真的很困。谢谢,任何帮助都将不胜感激!

【问题讨论】:

    标签: amazon-web-services amazon-s3 java aws-sdk


    【解决方案1】:

    我有同样的问题。解决方案原来是设备错误日期。尽量保持您的设备日期更新。原因是 SSL 证书的颁发/到期日期正在根据您的设备日期进行验证。

    【讨论】:

      【解决方案2】:

      我也遇到过类似的问题。我的问题是我在 beans xml 文件中标记了代理配置,如下所示。

      <bean id="clientConfiguration" class="com.amazonaws.ClientConfiguration"> <property name="proxyHost" value="proxy.server.com"/> <property name="proxyPort" value="8080"/> </bean>

      但是忘记设置属性了。

      一旦进入协议,它就开始工作了

      【讨论】:

        猜你喜欢
        • 2018-08-11
        • 2018-08-29
        • 2016-04-19
        • 2023-03-15
        • 2022-08-18
        • 2022-06-17
        • 1970-01-01
        • 2020-07-15
        • 2015-06-05
        相关资源
        最近更新 更多