Использование Dropbox Java api: DropboxSSLException: javax.net.ssl.SSLPeerUnverifiedException: peer не аутентифицирован

Я пытаюсь использовать API-интерфейс Dropbox для загрузки файлов приложений Java. Почему-то я получаю ту же ошибку SSL, которую я не могу решить. Любые предложения?

Я использовал этот код (http://aaka.sh/patel/2011/12/20/authenticating-dropbox-java-api/)

public class DropboxTest {
 // App key & secret that Dropbox developer website gives your app
 private static final String APP_KEY = "myAppKey";
 private static final String APP_SECRET = "myAppSecret";
 // Define AccessType for DropboxAPI object
 final static private AccessType ACCESS_TYPE = AccessType.APP_FOLDER;
 private static DropboxAPI<webauthsession> mDBApi;
 public static void main(String[] args) throws Exception{
 // Initialize the goods/session
 AppKeyPair appKeys = new AppKeyPair(APP_KEY, APP_SECRET);
 WebAuthSession session = new WebAuthSession(appKeys, ACCESS_TYPE);
 // Initialize DropboxAPI object
 mDBApi = new DropboxAPI<webauthsession>(session);
 // Get ready for user input
 Scanner input = new Scanner(System.in);
 // Open file that stores tokens, MUST exist as a blank file
 File tokensFile = new File("TOKENS");
 System.out.println("Enter 'a' to authenticate, or 't' to test reauthentication: ");
 String command = input.next();
 if(command.equals("a")){
 try {
 // Present user with URL to allow app access to Dropbox account on
 System.out.println("Please go to this URL and hit \"Allow\": " + mDBApi.getSession().getAuthInfo().url);
 AccessTokenPair tokenPair = mDBApi.getSession().getAccessTokenPair();
 // Wait for user to Allow app in browser
 System.out.println("Finished allowing? Enter 'next' if so: ");
 if(input.next().equals("next")){
 RequestTokenPair tokens = new RequestTokenPair(tokenPair.key, tokenPair.secret);
 mDBApi.getSession().retrieveWebAccessToken(tokens);
 PrintWriter tokenWriter = new PrintWriter(tokensFile);
 tokenWriter.println(session.getAccessTokenPair().key);
 tokenWriter.println(session.getAccessTokenPair().secret);
 tokenWriter.close();
 System.out.println("Authentication Successful!");
 }
 } catch (DropboxException e) {
 // TODO Auto-generated catch block
 e.printStackTrace();
 }
 }
 else if(command.equals("t")){
 Scanner tokenScanner = new Scanner(tokensFile); // Initiate Scanner to read tokens from TOKEN file
 String ACCESS_TOKEN_KEY = tokenScanner.nextLine(); // Read key
 String ACCESS_TOKEN_SECRET = tokenScanner.nextLine(); // Read secret
 tokenScanner.close(); //Close Scanner 
 //Re-auth
 AccessTokenPair reAuthTokens = new AccessTokenPair(ACCESS_TOKEN_KEY, ACCESS_TOKEN_SECRET);
 mDBApi.getSession().setAccessTokenPair(reAuthTokens);
 System.out.println("Re-authentication Sucessful!");
 //Run test command
 System.out.println("Hello there, " + mDBApi.accountInfo().displayName);
 }
 }
}
</webauthsession></webauthsession>

Завершите исключение SSL:

com.dropbox.client2.exception.DropboxSSLException: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
 at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:416)
 at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:337)
 at com.dropbox.client2.RESTUtility.streamRequest(RESTUtility.java:192)
 at com.dropbox.client2.session.WebAuthSession.setUpToken(WebAuthSession.java:218)
 at com.dropbox.client2.session.WebAuthSession.getAuthInfo(WebAuthSession.java:158)
 at com.dropbox.client2.session.WebAuthSession.getAuthInfo(WebAuthSession.java:128)
 at DropboxTest.main(DropboxTest.java:45)
Caused by: javax.net.ssl.SSLPeerUnverifiedException: peer not authenticated
 at sun.security.ssl.SSLSessionImpl.getPeerCertificates(SSLSessionImpl.java:397)
 at org.apache.http.conn.ssl.AbstractVerifier.verify(AbstractVerifier.java:128)
 at org.apache.http.conn.ssl.SSLSocketFactory.createSocket(SSLSocketFactory.java:399)
 at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:143)
 at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
 at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:108)
 at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:641)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:576)
 at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:554)
 at com.dropbox.client2.RESTUtility.execute(RESTUtility.java:385)
 ... 6 more
1 ответ

Выяснил это. Я использовал OpenJDK для OSX. Я запустил JVM с помощью -Djavax.net.debug=ssl для отладки и закончил с корневым исключением

java.security.InvalidAlgorithmParameterException: the trustAnchors parameter must be non-empty

После некоторых исследований я нашел решение здесь: http://architecturalatrocities.com/post/19073788679/fixing-the-trustanchors-problem-when-running-openjdk-7

Теперь работает отлично!

licensed under cc by-sa 3.0 with attribution.