2015-04-11 10 views
6

Utilizzo l'API Java per caricare e scaricare file in Amazon S3. Funzionava perfettamente fino a circa una settimana fa, e ha smesso di funzionare del tutto anche se non avevo toccato il codice. Mi chiedo se c'è una soluzione a questo. Grazie!SSLHandshakeException durante l'utilizzo di AWS SDK per l'API Java

corso Ecco il codice che è stato ha funzionato bene:

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

Ed ecco l'errore:

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) 

che avevo fatto un po 'di ricerca, e alcuni avevano suggerito che il problema potrebbe essere con i permessi. Tuttavia, penso di aver seguito le istruzioni qui: http://docs.aws.amazon.com/AWSToolkitEclipse/latest/GettingStartedGuide/tke_setup_creds.html#d0e387 come ho potuto. Sono davvero piuttosto bloccato, ragazzi. Grazie, e qualsiasi aiuto sarà apprezzato!

risposta

2

Ho avuto lo stesso problema. La soluzione si è rivelata la data errata del dispositivo. Cerca di mantenere aggiornata la data del tuo dispositivo. Il motivo è che i certificati SSL hanno la data di emissione/scadenza in fase di verifica rispetto alla data del dispositivo.

0

Ho riscontrato un problema simile. Il mio problema era che ho segnato la configurazione del proxy nel file xml di bean come indicato di seguito.

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

ma ha dimenticato di impostare la proprietà.

Una volta inserito il protocollo ha iniziato a funzionare