Come ricordare / cache un certificato client -- chrome-for-android campo e certificates campo e https campo android imparentato Problema

How to remember/cache a client certificate



5
vote

problema

italiano

Supporto un'applicazione Web che richiede una connessione HTTPS con i certificati client come parte dello schema di autenticazione. Sulla maggior parte dei browser (client desktop, iOS safari, ecc.) Se viene richiesto un certificato client e selezionare una valida, il browser ricorda questa selezione per i tentativi di collegamenti futuri.

Sfortunatamente, questo non è il comportamento predefinito del cromo di Android. Ogni volta che l'istanza Chrome lascia la memoria (o forse dopo un po 'di timeout) mostra di nuovo la finestra di selezione del certificato.

Non è qualcosa che i nostri utenti amano e vorrei poter dire a Chrome come ricordare il certificato selezionato per un determinato dominio.

Ho notato che questa domanda ha chiesto ogni tanto in ogni momento in internet, anche qui sul sito di Exchange Stack Android . Sfortunatamente, devo ancora vedere una risposta a questo problema, ma sospetto che qualcuno là fuori ne abbia già risolto questo.

Sto cercando soluzioni efficaci. Alcune cose che ho visto e ho provato a cercare:

Aggiunta di una politica - come il Seleziona automaticamente il client Certificato per questi siti che suona promettendo ma non spiega come effettivamente impostare questo. Non sembra esserci un analogo a questo se visiti Chrome: // Policy in Android

    .
  • Credo che il sito web di cui sopra sia rivolto alla gestione MDM / Remote Device, ma non è qualcosa che possiamo accedere qui. Invece, voglio essere in grado di impostare una politica una tantum con per un telefono con cui mi è stato dato accesso.

  • Ci sono anche messaggi sull'impostazione di questa politica su Stackoverflow Ma si occupano di versioni desktop e non riesco a trovare qualcuno che ha fatto questo per Android.

Sono anche aperto a qualsiasi soluzioni che coinvolgono l'avvolgimento di un'istanza WebView o Chrome in un'app Android che gestisce quindi programmaticamente la fornitura del certificato.

    .
  • Il problema con questo è che sembra che WebView abbia disabilitato tutte le interazioni JavaScript ed è un po 'più "sola lettura" che non è accettabile
  • Non ho visto un esempio di qualcuno che crea un'app che avvia un'istanza cromata ed è in grado di intercettare qualcosa come la gestione del certificato client per Chrome.

Grazie per qualsiasi aiuto.


Modifica: Pensavo che WebView non consente JavaScript (perché Google afferma che nei loro documenti. Ma dicono per impostazione predefinita e procedere a spiegare come è possibile scrivere qualcosa per Webview che fa in effetti abilitare JavaScript:

  webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDatabaseEnabled(true); webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient() {     @Override     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {         handler.proceed();     }      @Override     public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) {         // TODO: Supply the client certificate         request.onProceed(privateKey, certificates)         }         }); webView.loadUrl("https://some.app.url");   
Originale inglese

I support a web-application that requires an https connection with client certificates as part of the authentication scheme. On most browsers (Desktop clients, iOS Safari, etc) if you are prompted for a client certificate and select a valid one the browser remembers this selection for future connections attempts.

Unfortunately, this isn't the default behavior of Android's Chrome. Every time the Chrome instance leaves memory (or maybe after some timeout) it shows the certificate selection dialog again.

This isn't something our users like and I would like to be able to tell Chrome how to remember the selected certificate for a given domain.

I've noticed this question asked every once and a while across the Internet, even here on the Android Stack Exchange site. Unfortunately, I've yet to see an answer to this problem, but I suspect someone out there has solved this already.

I'm looking for any effective solutions. Some things I've seen and tried to research:

Adding a policy -- such as the Automatically Select Client Certificate for These Sites which sounds promising but doesn't explain how to actually set this. There doesn't seem to be an analog to this if you visit chrome://policy in Android

  • I believe the above website is aimed at MDM / remote device management, but that isn't something that we can access here. Instead, I want to be able to set a one-off policy with for a phone that I have been given access to.

  • There are even posts about setting this policy on StackOverflow but they deal with desktop versions and I cannot seem to find someone whose done this for Android.

I'm also open to any solutions that involve wrapping a WebView or Chrome instance in an Android app that then programatically handles supplying the certificate.

  • The problem with this is that it seems as if WebView disables all JavaScript interaction and is a bit more "read-only" which isn't acceptable
  • I haven't seen an example of someone creating an app that starts a Chrome instance and is able to intercept anything like client certificate management for Chrome.

Thanks for any help.


EDIT: I thought that WebView doesn't allow Javascript (because Google states that in their docs. But they say by default and proceed to explain how you can write something for WebView that does in fact enable Javascript:

webView.getSettings().setJavaScriptEnabled(true); webView.getSettings().setDatabaseEnabled(true); webView.setWebChromeClient(new WebChromeClient()); webView.setWebViewClient(new WebViewClient() {     @Override     public void onReceivedSslError(WebView view, SslErrorHandler handler, SslError error) {         handler.proceed();     }      @Override     public void onReceivedClientCertRequest(WebView view, ClientCertRequest request) {         // TODO: Supply the client certificate         request.onProceed(privateKey, certificates)         }         }); webView.loadUrl("https://some.app.url"); 
        

elenco di risposte


Domande correlate

7  Come fa Android Handle WiFi Root CAS? Dovrebbero essere una preoccupazione per la sicurezza?  ( How does android handle wifi root cas should they be a security concern ) 
La mia università mi richiede di installare una CA root personalizzata da connettersi alla propria rete WiFi. Quando l'ho installato sul mio telefono, mi cons...

1  Come vengono convalidati rispetto certs negozio di fiducia di default?  ( How are certs validated against default trust store ) 
Con un po 'di lettura, ho una conoscenza piuttosto approssimativa su come https funziona con le applicazioni Android, in particolare come sono le convalide de...

3  Decifrare HTTPS Il traffico proveniente da applicazioni Android tramite Fiddler?  ( Decrypting https traffic from android apps via fiddler ) 
Io sono in realtà cercando di eseguire il debug tutto il traffico che entra ed esce sul mio telefono. Sto usando violinista sul mio PC, e ProxyDroid sul mio c...

1  Impossibile installare un file APK modificato  ( Unable to install a modified apk file ) 
Voglio monitorare il traffico HTTPS di un'app Android scaricata da Google Play. Questa app può essere eseguita solo su Android N e sopra. Quindi uso Charl...

1  La pagina non può essere caricata in S4 utilizzando HTTP, ma lo fa in HTTPS  ( Page cant be loaded in s4 using http but it does in https ) 
Sto avendo problemi speciali che caricano un sito Web nella mia galassia S4, Chrome e il browser predefinito. Nel mio caso, quando provo ad accedere a un file...

18  Certificato auto-firmato Installare il successo dei reclami, ma Android agisce come se il cert non è lì  ( Self signed certificate install claims success but android acts as if cert isn ) 
Sto cercando di installare il certificato auto-firmato per il mio server Web in Android 4.3. Ho il file .ct nella radice della scheda SD (che è effettivamente...

3  Come bypassare gli errori del certificato in Google Chrome Android?  ( How to bypass certificate errors in google chrome android ) 
Apparentemente Desktop Chrome ha una bandiera chiamata --ignore-certificate-errors che consente di ignorare tutti gli avvisi dei certificati. C'è un equival...

4  Supporto Android per TLS  ( Android support for tls ) 
Ho trovato che TLS1.1 e TLS1.2 è supportato dal livello API 16 e On per impostazione predefinita dal livello API 20. Ciò corrisponde a Android 4.1 (supportato...

2  Dove ottenere Binary OpenSSL per Android?  ( Where to get openssl binary for android ) 
Ho un Nexus 10 (sbloccato e amplificatore; rootato) e volevo ottenere il binario OpenSSL lì in modo da poter verificare i certificati HTTPS: $ openssl s_cl...

0  C'è un problema noto con HTTPS e il browser Android?  ( Is there a known issue with https and the android browser ) 
Ho una galassia S2 che esegue 2.3.3, tutto aggiornato e non rootato. Su diversi siti trovo che l'accesso è impossibile a causa delle richieste inviate su HTTP...




© 2022 www.domanda.top All Rights Reserved. Domanda e risposta a casa tutti i diritti riservati