Esperienza nell'applicazione della tecnologia RUTOKEN per la registrazione e l'autenticazione degli utenti nel sistema (parte 3)

Buongiorno!

Nella parte precedente 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 nella parte precedente dell'articolo. 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.file

cms è 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:
    1. Ricevi una richiesta per la creazione di un certificato e la salvi in un file user.csr.
    2. 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.
    3. Leggi il file user.crt e invialo al client.

  • Autenticazione dell'utente:
    1. Ricevi i dati firmati dal client e salvali in un file authenticate.cms.
    2. 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.
    3. Leggi data.file e verifica questi dati per validità. Cosa controllare è descritto nel primo articolo. 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

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster