java.security.cert.CertPathValidatorException: Ancoraggio di fiducia per il path di certificazione non trovato

Sto sviluppando un'applicazione client su Android che si collega al mio server che si trova in AWS dietro un bilanciatore di carico, ho creato un certificato SSL su GoDaddy e l'ho aggiunto sull'equilibratore di carico.

Tutto va bene nel browser, riconosce il certificato, ma quando cerco di call le API con Android ho ottenuto questa exception:

  • Come faccio ad aggiungere selectableItemBackground ad un ImageButton a livello di programmazione?
  • org.json.JSONException: Valore del tipo org.json.JSONArray non può essere convertito in JSONObject
  • Come mostrare e quindi rimuovere una window di avanzamento android
  • Geocoder.getFromLocation lancia IOException su emulatore Android
  • Android: Notifica non funziona a 2.3.6 (galassia Samsung y)
  • Il webview loadurl di Android ("file: ///android_asset/index.html#home") non è riuscito
  • 09-18 01: 18: 55.187: W / System.err (32585): causato da: java.security.cert.CertPathValidatorException: l'ancoraggio di fiducia per il path di certificazione non trovato.

    Ho trovato qualche discussione che ha detto di aggiungere il certificato sull'applicazione, ma non c'è alcun modo per risolvere il problema sul lato del server di certificati? non è un problema con il cert?

  • due viste con lo stesso id
  • Le size dello schermo e la dimensione dello schermo di Samsung S I9000 di Android
  • Come esattamente visualizzare la formula math in Android
  • Errore di Android MediaPlayer: errore MediaPlayer (1, -2147483648) su Stream da Internet
  • Leggere il PDF da un'applicazione Android
  • Ottieni il tag di referrer Android Google Analytics
  • 3 Solutions collect form web for “java.security.cert.CertPathValidatorException: Ancoraggio di fiducia per il path di certificazione non trovato”

    Lo ho risolto creando un nuovo .csr con il giusto nome unità organizzativa e il Common Name

    Direi che il doc ufficiale di Android sarà il tuo migliore amico in questa situazione. Vedi qui: http://developer.android.com/training/articles/security-ssl.html#UnknownCa

    E questo è quello che dicono, che risolve entrambi la questione e molto intelligente allo stesso tempo:

    In questo caso, SSLHandshakeException si verifica perché si dispone di una CA non affidata dal sistema. Può essere dovuto al fatto che hai un certificato di una nuova CA che non è ancora affidabile da Android o se la tua applicazione è in esecuzione su una versione precedente senza la CA. Più spesso un CA è sconosciuto perché non è una CA pubblica, ma una licenza privata rilasciata da un'organizzazione come un governo, una società o un'istituzione educativa per il proprio uso.

    Fortunatamente, è ansible insegnare a HttpsURLConnection la fiducia di un insieme specifico di CAs. La procedura può essere un po 'convoluta, quindi sotto è un esempio che prende una CA specifica da un InputStream, lo usa per creare un KeyStore, che viene quindi utilizzato per creare e inizializzare un TrustManager. Un TrustManager è ciò che il sistema utilizza per validationre i certificati dal server e – creandone uno da un KeyStore con una o più CA – saranno le uniche CA attendute da tale TrustManager.

    Dato il nuovo TrustManager, l'esempio inizializza un nuovo SSLContext che fornisce un SSLSocketFactory che è ansible utilizzare per ignorare l'SSLSocketFactory predefinito di HttpsURLConnection. In questo modo la connessione utilizzerà le CA per la validation del certificato.

    Questo messaggio di errore bizzarro significa che l'archivio di fiducia specificato non è stato trovato.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.