Is it possible to install a certificate on button click, or do you
have to manually import it?
Che cosa pensi che sia "importato manualmente"? È un software (parte) che consente all'utente di selezionare un certificato e, quando fa clic su un pulsante, aggiunge questo certificato al sistema. Significa, naturalmente, un tale software è possibile. (Questo dovrebbe essere un gioco da ragazzi).
Mentre ad es. Android aveva restrizioni in passato che i programmi di terze parti non erano autorizzati a farlo, ora è possibile.
I was wondering how I could be able to see SSL requests in an
unencrypted form from remote clients
Alle richieste TLS MITM (TLS, dimentica SSL), è necessario non solo la parte del certificato, ma anche l'accesso ai dati stessi. È più facile iniziare con quello.
Una soluzione comune per scopi legittimi è quella di creare un server proxy e configurare il telefono per usarlo. Se si chiama un sito Web, il telefono non si connetterà direttamente a tale sito, ma si connetterà al server proxy e il server proxy si connetterà al sito Web. Ciò consente al server proxy di leggere tutti i dati trasmessi (ma non di decrittografarli).
Ora, per la parte di decifratura: potresti sapere che, quando una connessione TLS inizia, il server e il client concordano su un metodo di crittografia e così via, e il client controlla (con il certificato locale) se il server è il server reale per l'indirizzo specificato.
Se il tuo server proxy vuole decifrare i dati, deve agire come client all'avvio della connessione, es. la connessione TLS è tra server Web e server proxy. Il problema è nell'altra direzione: dopo aver letto ciò che il server ha inviato, deve essere inviato anche al telefono (altrimenti il telefono non avrà mai una connessione TLS avviata e non inizierà mai a inviare dati sensibili su di esso ).
La parte fondamentale di TLS ora è che il server proxy non è in grado di crittografare nuovamente i dati in modo che il telefono pensi che provenga dal server web (il che significa che il telefono rifiuterà la connessione, perché ha riconosciuto che il l'altro lato non è il web server). La soluzione (tecnica, non legale) 1 è quella di rubare la chiave privata del server web (che viene salvata sul server web, ma si spera non sia accessibile al pubblico). In tal caso, il tuo server proxy può convincere il telefono a pensare che comunica con il server web. È solo, rubare la chiave privata può essere un po 'difficile. L'altra soluzione consiste nell'aggiungere il certificato auto-creato per il sito Web al telefono e la chiave privata nel server proxy, in modo che il telefono accetti il server proxy anche come server Web legittimo.
Ma ora hai ancora un piccolo problema ...
but how would I generate one from the Linux command line that works
for all websites.
Sebbene si possa facilmente vedere questo, non ti aiuterà, perché un certificato per tutti i siti web non è possibile. Il formato dei dati (utilizzato da server Web, browser, ecc.) Non lo consente. Significa che avresti bisogno di un certificato personalizzato (su telefono e proxy) per ogni sito web esistente, se segui questa strada.
Per risolvere questo problema dal lato del telefono, crea un certificato CA personalizzato anziché un singolo certificato sito web. Vale a dire. un certificato che può essere utilizzato per creare più certificati, e se il tuo telefono ha il certificato padre, si fida anche di tutti i bambini. E sul lato proxy, il tuo software proxy deve generare certificati del sito web al volo per ogni nuova connessione. C'è già un software in grado di farlo.