Buongiorno!
Abbiamo creato con successo la nostra autorità di certificazione. Quali sono gli usi utili per i nostri scopi?
Con un'autorità di certificazione locale possiamo emettere certificati e anche verificare le firme su questi certificati.
Quando emettiamo un certificato per un utente, l'autorità di certificazione utilizza una richiesta speciale per l'emissione del certificato Pkcs#10, che ha il formato del file '.csr'. Questa richiesta contiene una sequenza codificata che l'autorità di certificazione sa come analizzare correttamente. La richiesta include sia la chiave pubblica dell'utente che i dati per la creazione del certificato (un array associativo con i dati dell'utente).
Il modo per ottenere la richiesta di emissione del certificato sarà trattato nel prossimo articolo, mentre in questo voglio presentare i comandi principali dell'autorità di certificazione che ci aiuteranno a eseguire il nostro compito sul lato backend.
Quindi, per prima cosa dobbiamo creare un certificato. Per questo utilizziamo il comando:
openssl ca -batch -in user.csr -out user.crt ca è il comando openSSL relativo all'autorità di certificazione,
-batch disabilita le richieste di conferma durante la generazione del certificato.
user.csr è la richiesta per la creazione del certificato (file di formato .csr).
user.crt è il certificato (risultato ottenuto dal comando).
Affinché questo comando funzioni, l'autorità di certificazione deve essere configurata esattamente come descritto . In caso contrario, sarà necessario specificare la posizione del certificato radice dell'autorità di certificazione.
Il comando per verificare il certificato è:
openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/…/demoCA/ca.crt -out data.filecms è il comando openSSL utilizzato per firmare, verificare, crittografare dati e altre operazioni crittografiche utilizzando openSSL.
-verify in questo caso eseguiamo la verifica del certificato.
authenticate.cms è il file che contiene i dati firmati dal certificato emesso dal comando precedente.
-inform PEM viene utilizzato il formato PEM.
-CAfile /Users/…/demoCA/ca.crt è il percorso al certificato radice. (senza questo il comando non ha funzionato, anche se i percorsi a ca.crt sono scritti nel file openssl.cfg)
-out data.file invio i dati decrittografati nel file data.file.
L'algoritmo di utilizzo dell'autorità di certificazione sul lato backend è il seguente:
- Registrazione dell'utente:
- Ricevi una richiesta per la creazione di un certificato e la salvi in un file user.csr.
- Salva il primo comando di questo articolo in un file con estensione .bat o .cmd. Esegui questo file dal codice, dopo aver salvato la richiesta per la creazione del certificato nel file user.csr. Ottieni il file con il certificato user.crt.
- Leggi il file user.crt e invialo al client.
- Autenticazione dell'utente:
- Ricevi i dati firmati dal client e salvali in un file authenticate.cms.
- Salva il secondo comando di questo articolo in un file con estensione .bat o .cmd. Esegui questo file dal codice, dopo aver salvato i dati firmati dal server in authenticate.cms. Ottieni il file con i dati decrittografati data.file.
- Leggi data.file e verifica questi dati per validità. Cosa controllare è descritto . Se i dati sono validi, l'autenticazione dell'utente è considerata riuscita.
Per implementare questi algoritmi, è possibile utilizzare qualsiasi linguaggio di programmazione con cui si scrive il backend.
Nel prossimo articolo vedremo come lavorare con il plugin Rutoken.
Grazie per l'attenzione!
Fonte: habr.com
