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:

  • Il video gioca una sola volta in Webview di Android
  • Come sfocare una vista o un layout in android?
  • Android AdapterView?
  • C'è un ascoltatore per ascoltare le modifiche del volume in android?
  • Perché CordovaWebViewClient non funziona più in Cordova 6
  • android scrollview nascondono il contenuto superiore
  • 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?

  • Android - Imansible connettersi al dispositivo bluetooth su Lollipop
  • AppBarLayout - Layout a volte invisibile una volta che entra in visualizzazione (anche se non è inserito)
  • Android ListView setSelection () non sembra funzionare
  • Come migrare da un'applicazione Android paid ad un'applicazione pagata con la fatturazione in-app?
  • Multitouch Android - Possibile testare in emulatore?
  • Quali sono i valori di return validi per un'interface Javascript su un Android WebView?
  • 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.