Ci si sente come ho cercato già l'intero web, ma tutto quello che ho trovato sono suggerimenti su come accettare un certificato non valido o autofirmato automaticamente. (Utilizzo personalizzato HttpClient
e SSLSocketFactory
- Ho già funzionato.)comportamento browser come su certificati non validi/autofirmati
Ma quello che voglio per la mia app è che l'utente ottiene una finestra di dialogo simile a un browser che chiede qualcosa come "Vuoi davvero fidarti di questo server? dare un'occhiata al suo certificato. " (Ma solo se il certificato non è considerato attendibile dai controlli predefiniti.)
Quindi il certificato deve essere inserito nell'archivio certificati dell'app, quindi la volta successiva viene accettato automaticamente.
Così che cosa ho bisogno di sapere è:
- Come scaricare il certificato (catena) per una combinazione host/porta specifica (per essere in grado di mostrare all'utente)?
- Come conservare il certificato in un modo che possa essere caricato in un
KeyStore
in seguito?
Questo è il mio flusso di lavoro pianificato in app:
- inviare una richiesta al server con mia abitudine
HttpClient
. Forse il certificato è attendibile dal sistema o già nel mio negozio (se sì, vai al 4). - Se la richiesta non è riuscita a causa di problemi SSL, mostrare all'utente il certificato e chiedere se fidarsi di questa connessione.
- Se l'utente ha scelto di fidarsi, archiviare il certificato nel mio negozio e andare a 1.
- Urrà, la connessione è pronta per l'uso.
Quindi qualcuno sa come fare?
Wow, hai davvero ragione sul fatto che tutto ciò che puoi trovare su Google è come disabilitare i controlli CA .. –