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
Il mio host virtuale assomiglia a questo:
SSLVerifyClient require
SSLVerifyDepth 1
SSLCACertificateFile "cert/ca.crt"
Qualche suggerimento?