2015-04-11 14 views
6

Ich verwende die Java-API zum Hochladen und Herunterladen von Dateien in Amazon S3. Es funktionierte perfekt bis vor einer Woche und es hörte einfach auf zu funktionieren, obwohl ich den Code nicht berührt hatte. Ich frage mich, ob es eine Lösung dafür gibt. Vielen Dank!SSLHandshakeException bei Verwendung von AWS SDK für Java-API

Over hier ist der Code, fein gearbeitet wurde:

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()); 
    } 

Und hier ist der Fehler:

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) 

ich ein wenig Forschung getan hatte, und einige hatten vorgeschlagen, dass das Problem sein könnte mit den Berechtigungen. Ich glaube jedoch, dass ich die Anweisungen hier so gut wie möglich befolgt habe: http://docs.aws.amazon.com/AWSToolkitEclipse/latest/GettingStartedGuide/tke_setup_creds.html#d0e387. Ich bin wirklich ziemlich fest, Leute. Danke, und jede Hilfe wird geschätzt!

Antwort

2

Ich hatte das gleiche Problem. Die Lösung erwies sich als das falsche Datum des Geräts. Versuchen Sie, das Gerätedatum auf dem neuesten Stand zu halten. Der Grund dafür ist, dass SSL-Zertifikate ein Ausgabe-/Ablaufdatum haben, das gegen Ihr Gerätedatum verifiziert wird.

0

Ich habe ähnliches Problem festgestellt. Mein Problem war, dass ich die Proxy-Konfiguration in der beans xml-Datei wie unten angegeben markiert habe.

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

aber vergessen, die Eigenschaft festzulegen.

Sobald das Protokoll eingegeben wurde, begann es zu arbeiten

Verwandte Themen