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

Buon pomeriggio Continuiamo con questo argomentoLa parte precedente è reperibile al link).

Oggi passiamo alla parte pratica. Iniziamo configurando la nostra CA basata sulla libreria crittografica open source completa openSSL. Questo algoritmo è stato testato utilizzando Windows 7.

Con openSSL installato, possiamo eseguire varie operazioni crittografiche (come la creazione di chiavi e certificati) tramite la riga di comando.

L'algoritmo delle azioni è il seguente:

  1. Scarica la distribuzione di installazione openssl-1.1.1g.
    openSSL ha diverse versioni. La documentazione di Rutoken afferma che è richiesta openSSL versione 1.1.0 o successiva. Ho usato la versione openssl-1.1.1g. Puoi scaricare openSSL dal sito ufficiale, ma per un'installazione più semplice è necessario trovare in rete il file di installazione per Windows. Ho fatto questo per te: slproweb.com/products/Win32OpenSSL.html
    Scorri la pagina verso il basso e scarica il programma di installazione Win64 OpenSSL v1.1.1g EXE 63MB.
  2. Installa openssl-1.1.1g sul computer.
    L'installazione deve essere eseguita secondo il percorso standard, che viene automaticamente indicato nella cartella C: Programmi. Il programma verrà installato nella cartella OpenSSL-Win64.
  3. Per configurare openSSL nel modo in cui ti serve, c'è il file openssl.cfg. Questo file si trova nel percorso C:\Programmi\OpenSSL-Win64bin se hai installato openSSL come descritto nel paragrafo precedente. Vai alla cartella in cui è archiviato openssl.cfg e apri questo file utilizzando, ad esempio, Notepad++.
  4. Probabilmente hai intuito che l'autorità di certificazione verrà configurata in qualche modo modificando il contenuto del file openssl.cfg e hai assolutamente ragione. Ciò richiede la personalizzazione del comando [ ca ]. Nel file openssl.cfg, l'inizio del testo in cui apporteremo le modifiche si trova come: [ ca ].
  5. Ora darò un esempio di impostazione con la sua descrizione:
    [ ca ]
    default_ca	= CA_default		
    
     [ CA_default ]
    dir		= /Users/username/bin/openSSLca/demoCA		 
    certs		= $dir/certs		
    crl_dir		= $dir/crl		
    database	= $dir/index.txt	
    new_certs_dir	= $dir/newcerts	
    certificate	= $dir/ca.crt 	
    serial		= $dir/private/serial 		
    crlnumber	= $dir/crlnumber	
    					
    crl		= $dir/crl.pem 		
    private_key	= $dir/private/ca.key
    x509_extensions	= usr_cert
    

    Ora dobbiamo creare la directory e le sottodirectory demoCA come mostrato nell'esempio sopra. E posizionalo in questa directory lungo il percorso specificato in dir (ho /Users/username/bin/openSSLca/demoCA).

    È molto importante scrivere dir correttamente: questo è il percorso della directory in cui si troverà il nostro centro di certificazione. Questa directory deve trovarsi in /Users (ovvero nell'account di qualche utente). Se inserisci questa directory, ad esempio, in C: Program Files, il sistema non vedrà il file con le impostazioni openssl.cfg (almeno per me è stato così).

    $dir - il percorso specificato in dir viene sostituito qui.

    Un altro punto importante è creare un file index.txt vuoto, senza questo file i comandi “openSSL ca…” non funzioneranno.

    È inoltre necessario disporre di un file seriale, una chiave privata root (ca.key), un certificato root (ca.crt). Il processo per ottenere questi file sarà descritto di seguito.

  6. Colleghiamo gli algoritmi di crittografia forniti da Rutoken.
    Questa connessione avviene nel file openssl.cfg.

    • Prima di tutto, devi scaricare gli algoritmi Rutoken necessari. Questi sono i file rtengine.dll, rtpkcs11ecp.dll.
      Per fare ciò, scarica l'SDK Rutoken: www.rutoken.ru/developers/sdk.

      L'SDK Rutoken è tutto ciò che c'è per gli sviluppatori che vogliono provare Rutoken. Esistono entrambi esempi separati per lavorare con Rutoken in diversi linguaggi di programmazione e vengono presentate alcune librerie. Le nostre librerie rtengine.dll e rtpkcs11ecp.dll si trovano rispettivamente nell'SDK di Rutoken nella posizione:

      sdk/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      sdk/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll

      Un punto molto importante. Le librerie rtengine.dll, rtpkcs11ecp.dll non funzionano senza il driver installato per Rutoken. Anche Rutoken deve essere collegato al computer. (per installare tutto il necessario per Rutoken, vedere la parte precedente dell'articolo habr.com/en/post/506450)

    • Le librerie rtengine.dll e rtpkcs11ecp.dll possono essere conservate ovunque nell'account utente.
    • Scriviamo i percorsi di queste librerie in openssl.cfg. Per fare ciò, apri il file openssl.cfg, metti la riga all'inizio di questo file:
      openssl_conf = openssl_def

      Alla fine del file è necessario aggiungere:

      [ openssl_def ]
      engines = engine_section
      [ engine_section ]
      rtengine = gost_section
      [ gost_section ]
      dynamic_path = /Users/username/bin/sdk-rutoken/openssl/rtengine/bin/windows-x86_64/lib/rtengine.dll
      MODULE_PATH = /Users/username/bin/sdk-rutoken/pkcs11/lib/windows-x86_64/rtpkcs11ecp.dll
      RAND_TOKEN = pkcs11:manufacturer=Aktiv%20Co.;model=Rutoken%20ECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      Dynamic_path: è necessario specificare il percorso della libreria rtengine.dll.
      MODULE_PATH: è necessario impostare il percorso della libreria rtpkcs11ecp.dll.

  7. Aggiunta di variabili di ambiente.

    Assicurati di aggiungere una variabile di ambiente che specifichi il percorso del file di configurazione openssl.cfg. Nel mio caso, la variabile OPENSSL_CONF è stata creata con il percorso C:Program FilesOpenSSL-Win64binopenssl.cfg.

    Nella variabile path è necessario specificare il percorso della cartella in cui si trova openssl.exe, nel mio caso è: C: Program FilesOpenSSL-Win64bin.

  8. Ora puoi tornare al passaggio 5 e creare i file mancanti per la directory demoCA.
    1. Il primo file importante senza il quale non funzionerà nulla è seriale. Questo è un file senza estensione, il cui valore dovrebbe essere 01. Puoi creare tu stesso questo file e scrivere al suo interno 01. Puoi anche scaricarlo da Rutoken SDK lungo il percorso sdk/openssl/rtengine/samples/tool/demoCA /.
      La directory demoCA contiene il file seriale, che è esattamente ciò di cui abbiamo bisogno.
    2. Crea una chiave privata root.
      Per fare ciò utilizzeremo il comando della libreria openSSL, che dovrà essere eseguito direttamente sulla riga di comando:

      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Creiamo un certificato radice.
      Per fare ciò, utilizzare il seguente comando della libreria openSSL:

      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Tieni presente che per generare il certificato root è necessaria la chiave privata root, generata nel passaggio precedente. Pertanto, la riga di comando deve essere avviata nella stessa directory.

    Il tutto ora ha tutti i file mancanti per la configurazione completa della directory demoCA. Posizionare i file creati nelle directory indicate al punto 5.

Partiremo dal presupposto che dopo aver completato tutti gli 8 punti, il nostro centro di certificazione sia completamente configurato.

Nella parte successiva descriverò come lavoreremo con l'autorità di certificazione per realizzare quanto descritto in la parte precedente dell'articolo.

Fonte: habr.com

Aggiungi un commento