Esperienza nell'uso della tecnologia Rutoken per la registrazione e l'autorizzazione degli utenti nel sistema (parte 3)

Buona giornata!

Nella parte precedente Abbiamo creato con successo il nostro centro di certificazione. Come può essere utile ai nostri scopi?

Utilizzando un'autorità di certificazione locale, possiamo emettere certificati e anche verificare le firme su questi certificati.

Quando emette un certificato a un utente, l'autorità di certificazione utilizza una richiesta di certificato speciale Pkcs#10, che ha il formato file ".csr". Questa richiesta contiene una sequenza codificata che l'autorità di certificazione sa come analizzare correttamente. La richiesta contiene sia la chiave pubblica dell'utente che i dati per la creazione di un certificato (un array associativo con i dati sull'utente).

Vedremo come ricevere una richiesta di certificato nel prossimo articolo, e in questo articolo voglio fornire i comandi principali dell'autorità di certificazione che ci aiuteranno a completare il nostro compito sul lato backend.

Quindi prima dobbiamo creare un certificato. Per fare ciò utilizziamo il comando:

openssl ca -batch -in user.csr -out user.crt

ca è il comando openSSL che si riferisce all'autorità di certificazione,
-batch: annulla le richieste di conferma durante la generazione di un certificato.
user.csr: richiesta di creazione di un certificato (file in formato .csr).
user.crt - certificato (risultato del comando).

Affinché questo comando funzioni, l'autorità di certificazione deve essere configurata esattamente come descritto nella parte precedente dell'articolo. Altrimenti dovrai specificare ulteriormente la posizione del certificato radice dell'autorità di certificazione.

Comando di verifica del certificato:

openssl cms -verify -in authenticate.cms -inform PEM -CAfile /Users/……/demoCA/ca.crt -out data.file

cms è un comando openSSL utilizzato per firmare, verificare, crittografare dati e altre operazioni crittografiche utilizzando openSSL.

-verify - in questo caso verifichiamo il certificato.

authenticate.cms - un file contenente dati firmati con il certificato emesso dal comando precedente.

-inform PEM: viene utilizzato il formato PEM.

-CAfile /Users/……/demoCA/ca.crt - percorso del certificato radice. (senza questo il comando non ha funzionato per me, anche se i percorsi di ca.crt erano scritti nel file openssl.cfg)

-out data.file — invio i dati decrittografati al file data.file.

L'algoritmo per l'utilizzo di un'autorità di certificazione sul lato backend è il seguente:

  • Registrazione Utente:
    1. Riceviamo una richiesta per creare un certificato e salvarlo nel file user.csr.
    2. Salviamo il primo comando di questo articolo in un file con estensione .bat o .cmd. Eseguiamo questo file dal codice, avendo precedentemente salvato la richiesta di creazione di un certificato nel file user.csr. Riceviamo un file con il certificato user.crt.
    3. Leggiamo il file user.crt e lo inviamo al client.

  • Autorizzazione utente:
    1. Riceviamo i dati firmati dal client e li salviamo nel file authenticate.cms.
    2. Salva il secondo comando di questo articolo in un file con estensione .bat o .cmd. Eseguiamo questo file dal codice, avendo precedentemente salvato i dati firmati dal server in authenticate.cms. Riceviamo un file con dati decrittografati data.file.
    3. Leggiamo data.file e controlliamo la validità di questi dati. Viene descritto cosa controllare esattamente nel primo articolo. Se i dati sono validi, l'autorizzazione dell'utente viene considerata riuscita.

Per implementare questi algoritmi, è possibile utilizzare qualsiasi linguaggio di programmazione utilizzato per scrivere il backend.

Nel prossimo articolo vedremo come lavorare con il plugin Retoken.

Grazie!

Fonte: habr.com

Aggiungi un commento