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

Buongiorno! Continuiamo a esplorare questo argomento (puoi trovare la parte precedente al link).

Oggi passeremo alla parte pratica. Iniziamo con la configurazione del nostro centro di certificazione basato su una libreria crittografica open source completa, openSSL. Questo algoritmo è stato testato utilizzando Windows 7.

Installando openSSL, possiamo eseguire diverse operazioni crittografiche (ad esempio, la creazione di chiavi e certificati) tramite il prompt dei comandi.

La procedura è la seguente:

  1. Scarichiamo il pacchetto di installazione openssl-1.1.1g.
    OpenSSL ha diverse versioni. Nella documentazione di Rutoken è stato indicato che è necessaria la versione openSSL 1.1.0 o superiore. Io ho utilizzato la versione openssl-1.1.1g. Puoi scaricare openSSL dal sito ufficiale, ma per una installazione più semplice è necessario trovare il file di installazione per Windows online. L'ho fatto per te: slproweb.com/products/Win32OpenSSL.html
    È necessario scorrere verso il basso nella pagina e scaricare Win64 OpenSSL v1.1.1g EXE 63MB Installer.
  2. Installiamo openssl-1.1.1g sul computer.
    L'installazione deve essere eseguita seguendo il percorso standard, che viene specificato automaticamente nella cartella C:Program Files. Il programma verrà installato nella cartella OpenSSL-Win64.
  3. Per configurare openSSL come desiderato, esiste un file openssl.cfg. Questo file si trova nel percorso C:Program FilesOpenSSL-Win64bin se hai installato openSSL come indicato nel punto precedente. Accediamo alla cartella dove si trova openssl.cfg e apriamo questo file utilizzando, ad esempio, Notepad++.
  4. Probabilmente hai indovinato che la configurazione del centro di certificazione verrà effettuata modificando il contenuto del file openssl.cfg, e hai assolutamente ragione. Per questo è necessario configurare la sezione [ ca ]. Nel file openssl.cfg, l'inizio del testo dove apportiamo le modifiche si trova come: [ ca ].
  5. Ora fornirò un esempio di configurazione 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 è necessario creare la directory demoCA e le sotto-directory, come mostrato nell'esempio sopra. E collocare in questa directory il percorso indicato in dir (nel mio caso /Users/username/bin/openSSLca/demoCA).

    È molto importante impostare correttamente dir: questo è il percorso alla directory in cui si troverà il nostro centro di certificazione. Questa directory deve trovarsi necessariamente in /Users (cioè all'interno dell'account di un qualche utente). Se si posiziona questa directory, ad esempio, in C:Program Files, il sistema non riconoscerà il file di configurazione openssl.cfg (almeno, è quello che è successo a me).

    $dir — qui inserire il percorso specificato in dir.

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

    È anche necessario avere il file serial, la chiave privata radice (ca.key), e il certificato radice (ca.crt). Il processo per ottenere questi file sarà descritto successivamente.

  6. Colleghiamo gli algoritmi di crittografia forniti da Rutoken.
    Questo collegamento avviene nel file openssl.cfg.
    • Innanzitutto, è necessario scaricare gli algoritmi necessari di Rutoken. Questi sono i file rtengine.dll, rtpkcs11ecp.dll.
      Per fare ciò, scarichiamo il Rutoken SDK: www.rutoken.ru/developers/sdk.

      Il Rutoken SDK è tutto ciò di cui hanno bisogno gli sviluppatori che vogliono provare Rutoken. Ci sono sia esempi separati per lavorare con Rutoken in diversi linguaggi di programmazione, sia alcune librerie presentate. Le nostre librerie rtengine.dll e rtpkcs11ecp.dll si trovano nel SDK di Rutoken secondo il seguente percorso:

      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. Inoltre, Rutoken deve essere collegato al computer. (per l'installazione di tutto il necessario per Rutoken, vedere la parte precedente dell'articolo habr.com/ru/post/506450)

    • Le librerie rtengine.dll e rtpkcs11ecp.dll possono essere posizionate in qualsiasi luogo dell'account utente.
    • Impostiamo i percorsi a queste librerie in openssl.cfg. Per fare ciò, apriamo il file openssl.cfg; all'inizio di questo file è necessario inserire la seguente riga:
      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=AktivCo.;model=RutokenECP
      default_algorithms = CIPHERS, DIGEST, PKEY, RAND
      

      dynamic_path – è necessario specificare il proprio percorso alla libreria rtengine.dll.
      MODULE_PATH — è necessario specificare il proprio percorso alla libreria rtpkcs11ecp.dll.

  7. Aggiungiamo le variabili ambiente.

    È necessario aggiungere una variabile di ambiente che indichi il percorso del file di configurazione openssl.cfg. Nel mio caso è stata creata la variabile OPENSSL_CONF 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 possiamo tornare al punto 5 e creare i file mancanti per la directory demoCA.
    1. Il primo file importante senza il quale nulla funzionerà è serial. Questo file non ha estensione e il suo valore deve essere 01. È possibile creare fisicamente questo file e scrivere all'interno 01. In alternativa, può essere scaricato dal SDK di Rутокен al percorso sdk/openssl/rtengine/samples/tool/demoCA/.
      Nella directory demoCA si trova il file serial, di cui abbiamo bisogno.
    2. Creiamo la chiave privata della radice.
      Per questo utilizzeremo il comando della libreria openSSL, che deve essere eseguito direttamente nella riga di comando:
      openssl genpkey -algorithm gost2012_256 -pkeyopt paramset:A -out ca.key

    3. Creiamo il certificato radice.
      Per questo utilizzeremo il seguente comando della libreria openSSL:
      openssl req -utf8 -x509 -key ca.key -out ca.crt

      Si noti che per creare il certificato radice è necessaria la chiave privata radice, che è stata creata nel passo precedente. Pertanto, la riga di comando deve essere eseguita nella stessa directory.

    Ora abbiamo tutti i file mancanti per una configurazione completa della directory demoCA. Posizionate i file creati nelle directory indicate al punto 5.

Consideriamo che, dopo aver completato tutti gli 8 punti, il nostro ente certificatore sia completamente configurato.

Nella prossima parte parlerò di come lavoreremo con l'ente certificatore per eseguire quanto descritto nella parte precedente dell'articolo.

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