Questo modo di SSL lato client è abbastanza sicuro da tenere lontani gli hacker dalla mia app web?

5

Mi sto chiedendo se i seguenti passaggi siano sufficienti per proteggere il mio servizio cloud, nel senso che gli utenti non autorizzati non possono giocare con la mia app web?

In altre parole, è possibile aggirare questo tipo di protezione?

Quindi i passaggi sono:

Crea una radice dell'autorità di certificazione (che rappresenta questo server)

Organizzazione e amp; Nome comune: un identificativo umano per questa CA del server.

openssl genrsa -des3 -out ca.key 4096
openssl req -new -x509 -days 365 -key ca.key -out ca.crt

Crea la chiave del cliente e la CSR

Organizzazione e amp; Nome comune = Nome della persona

openssl genrsa -des3 -out client.key 4096
openssl req -new -key client.key -out client.csr
# self-signed
openssl x509 -req -days 365 -in client.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out client.crt

Converti chiave client in PKCS

In modo che possa essere installato nella maggior parte dei browser.

openssl pkcs12 -export -clcerts -in client.crt -inkey client.key -out client.p12

Converti chiave cliente in (combinata) PEM

Combina client.crt e client.key in un singolo file PEM per i programmi che usano openssl.

openssl pkcs12 -in client.p12 -out client.pem -clcerts

Installa chiave client sul dispositivo client (sistema operativo o browser)

Usa client.p12. Le istruzioni effettive variano. Installa CA cert su nginx

In modo che il server Web sappia chiedere (e validare) la chiave client di un utente contro il certificato CA interno.

ssl_client_certificate /path/to/ca.crt;
ssl_verify_client optional; # or 'on' if you require client key

link

Il mio host virtuale assomiglia a questo:

SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile "cert/ca.crt"

Qualche suggerimento?

    
posta Mirsad 31.03.2016 - 07:53
fonte

1 risposta

2

Sì, questo è abbastanza sicuro.

Suggerirei di cercare:

perl: $ENV{'SSL_CLIENT_M_SERIAL'}

nella tua app Web. Ciò significa che dovrai disporre di un database di utenti validi e possibilmente di quali diritti hanno nell'applicazione web.

Facendo questo invece di fare revocations il "modo PKI" è migliore, dato che in primo luogo, non è necessario gestire un CRL, e inoltre è più facile inserire ciò che gli utenti sono realmente autorizzati a fare, così puoi avere utenti con diritti diversi, ad esempio alcuni utenti potrebbero essere amministratori, alcuni potrebbero essere moderatori e alcuni utenti solo regolari e alcuni utenti limitati.

Quindi, per prima cosa, il loro certificato deve essere firmato dalla CA del cliente, ma anche il loro certificato seriale deve essere nel database come valido. Assicurati e fai attenzione a non generare più certificati utente con la stessa seriale. Il seriale può anche essere utilizzato come ID utente numerico in moduli che richiedono un ID utente numerico.

    
risposta data 31.03.2016 - 09:33
fonte

Leggi altre domande sui tag