Menu
Gratis
Registrazione
Casa  /  Vitamine/Riga di comando di Cryptopro. CryptoPRO: file bat per la creazione della firma digitale

Riga di comando di Cryptopro. CryptoPRO: file bat per la creazione della firma digitale

Ho deciso di dedicare il breve articolo di oggi al tema della creazione di una firma digitale elettronica utilizzando il provider di criptovaluta “CryptoPRO”. Parleremo di un file Bat che può essere utilizzato per automatizzare la firma dei documenti elettronici.

Per automatizzare il processo di firma dei documenti elettronici, avremo bisogno di:
1) CSP Crypto-PRO;
2) Chiavetta USB (ad esempio Rutoken) inserita nella porta USB;
3) Blocco note (Notepad.exe);
4) Certificati installati per la tua chiave;

L'ostacolo in tutta questa storia è il file csptest.exe, che si trova nella directory CryptoPro (per impostazione predefinita C:\Programmi\Crypto Pro\CSP\csptest.exe).

Apriamo la riga di comando ed eseguiamo il comando:

Cd C:\Programmi\Crypto Pro\CSP\ e csptest

Vedremo tutti i possibili parametri di questo file exe.

seleziona da:-help stampa questo aiuto -noerrorwait non attende alcun tasto in caso di errore -notime non mostra il tempo trascorso -pause Attende l'input da tastiera dopo il completamento in modo da poter controllare l'utilizzo della memoria e di altre risorse -reboot Chiama DestroyCSProvider() dell'ultimo CSP utilizzato all'uscita I servizi (cryptsrv*, HSM, ecc.) non sono interessati -randinit Inizializza l'rng di sistema con srand(x) (default: time) -showrandinit Mostra il valore di inizializzazione dell'rng di sistema -stack Misura l'utilizzo dello stack seleziona da:-lowenc test di crittografia/decrittografia di basso livello -sfenc test di crittografia/decrittografia di messaggi di livello semplificato -cmslowsign Test di firma di messaggi di basso livello CMS -cmssfsign Test di firma/verifica di messaggi di livello semplificato CMS -lowsign test di firma di messaggi di basso livello -lowsignc test di firma di messaggi di basso livello con ciclo Usa invece "-lowsign -repeat NN"!

-sfsign test di firma/verifica dei messaggi a livello semplificato -ipsec test ipsec -defprov manipolazioni del provider predefinito -testpack Pacchetto di diversi test -property certificato ottiene/installa proprietà per il collegamento di chiavi segrete -certkey modifica il nome del provider nel certificato collegamento con chiave segreta -context test di contesto del provider -absorb assorbe tutti i certificati dai contenitori con collegamento a chiave segreta -drvtst proxy-driver test -signtool SDK signtool analog -iis gestisce IIS -hsm gestisce HSM-client -rpcc RPC su client SSL -rpcs RPC su server SSL -oid oid info/set /get -passwd imposta/modifica password -keycopy copia contenitore -keyset crea (apri) keyset -tlss avvia il server tls -tlsc avvia il client tls -tls test TLS -prf test PRF -hash test hash -makecert test di emissione certificato -certprop mostra certificato proprietà -rc verifica pkcs#10/firma del certificato -cmsenclow Test di crittografia/decrittografia dei messaggi di basso livello CMS -sfse messaggio di livello semplificato SignedAndEnveloped test -stress stress test per Acquire/ReleaseContext -ep test di esportazione della chiave pubblica -enum Enumerazione parametri CSP -cpenc CP/ Test di crittografia del livello di crittografia (advapi32) -setpp Test SetProvParam -perf Test delle prestazioni -speed Test di velocità e impostazione ottimale della maschera di funzione -testcont Installa/Disinstalla contenitori di test -installa le informazioni di installazione del CSP, cancellando il CSP -version Stampa la versione del CSP

Per vedere i parametri di una particolare opzione globale, basta chiamare questo file con questa opzione, ad esempio : Csptest -sfsign : -sign Firma i dati dal nome file di input -verify Verifica la firma sui dati specificati dal nome file di input -help Stampa questo aiuto -In Inserisci il nome del file da firmare o verificare -out Nome file di output PKCS#7 -my Certificato dall'archivio CURRENT_USER per elaborare i dati -MY File della firma scollegato -alg Algoritmo hash: SHA1, MD5, MD2, GOST - predefinito -ask Acquisisci contesto csp utilizzando il mio certificato (predefinito: none) -base64 Input/output con conversione base64DER -addsigtime Aggiungi attributo ora di firma -cades_strict Generazione di attributi Strict SigningCertificateV2 -cades_disable Disabilita la generazione dell'attributo SigningCertificateV2

Pertanto, per firmare un file tramite cmd utilizzando csptest.exe, è necessario chiamare il comando:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my MyPrograms LLC Ivanov Ivan Ivanovich

Dove:
-Mio— Indica il proprietario della chiave;
-In— Indica quale file deve essere firmato. Se il file non si trova nella cartella con csptest, è necessario specificare il percorso completo.;
-fuori— Specifica il nome del file della firma;

Puoi controllare la firma sul sito web di Gosulsug utilizzando questo collegamento.

Appena possibile. Se ora scarichi questo file sul sito Web del servizio governativo, verrà visualizzato un errore. Ciò è dovuto al fatto che sono richieste informazioni sull'autorità di certificazione. Inoltre, la data e l'ora della firma dei documenti non saranno superflue. Per fare ciò, dobbiamo aggiungere due parametri al nostro comando:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my MyPrograms LLC Ivanov Ivan Ivanovich -addsigtime -add

Se abbiamo bisogno di una firma in un formato collegato, aggiungeremo un altro parametro:

Csptest -sfsign -sign -in Dogovor.doc -out Dogovor.doc.sig -my LLC I miei programmi Ivanov Ivan Ivanovich -addsigtime -add -distaccato

Nota: Se il documento è firmato in modo errato
Impossibile aprire il file
Si è verificato un errore durante l'esecuzione del programma.
.\signtsf.c:321:Impossibile aprire il file di input.
Numero errore 0x2 (2).
Impossibile trovare il file specificato.

quando viene chiamato come nell'ultimo esempio e sei sicuro che i percorsi nei parametri -in e -out siano corretti, prova a creare una firma utilizzando il primo esempio, quindi esegui il comando con il set completo di parametri!!!

Abbiamo ricevuto il comando principale per la firma. Ora semplifichiamo un po' la procedura. Creiamo un file bat che, una volta avviato, firmerà il file Secret.txt, situato nella stessa cartella del file bat. Apriamo il blocco note e scriviamo il seguente codice:

Chcp 1251 imposta CurPath=%cd% cd C:\Programmi\Crypto Pro\CSP call csptest -sfsign -sign -in %CurPath%\Secret.txt -out %CurPath%\Secret.txt.sig -my MyPrograms LLC Ivanov Ivan Ivanovich -addsigtime -add -dependent cd %CurPath%

Fare clic su “File” -> “Salva con nome” -> Imposta nome su.bat -> “Salva”
Questo è tutto. Per riferimento:
chcp 1251— Imposta la codifica per CMD. Necessario per l'elaborazione valida delle lettere russe nel codice;
imposta CurPath=%cd%— Salva il percorso della directory CMD corrente nella variabile CurPath;
CD— Imposta il percorso CMD corrente;
chiamata— Avvia il programma;

Sistema ROSA Enterprise Linux Server 6.7 installato nella configurazione “ROSA Standard Server”, accesso ai repository (per questo è necessario utilizzare la chiave ottenuta in anticipo dal servizio di supporto eseguendo il comando echo "<ключ>"> /etc/rosa-support-id-server con diritti di amministratore).

Applicabilità

Le istruzioni descrivono l'installazione di CIPF CryptoPro CSP 4.0 per ROSA Enterprise Linux Server 6.7 per funzionare con Rutoken. L'esempio viene fornito per un'architettura AMD64 a 64 bit; per un'architettura a 32 bit, l'installazione è simile ad eccezione della specifica dei pacchetti e delle cartelle di installazione.

Nota
Quando non si dice della necessità di utilizzare i diritti di superutente, resta inteso che tutto viene eseguito con i diritti dell'utente che lavorerà in navigatore firefox. Questo utente deve rimanere lo stesso durante l'intero processo descritto.

Ottenere i pacchetti di installazione

Per installare CIPF CryptoPro CSP 4.0, è necessario prima registrarsi sul sito https://www.cryptopro.ru/ e dalla pagina di download https://www.cryptopro.ru/products/csp/downloads scaricare la versione 4.0 R2 per Linux in formato giri/min

Scaricheremo immediatamente anche il plug-in CryptoPro EDS Browser versione 2.0 | da qui

Successivamente, il browser dovrebbe essere chiuso.

Installazione

Per installare, è necessario decomprimere l'archivio risultante. Per fare ciò, apri il terminale (la scheda del terminale si trova nella parte centrale sinistra del launcher delle applicazioni)

ed eseguire i seguenti comandi:

cd ~/Download/ tar -xvf linux-amd64.tgz tar -xvf cades_linux_amd64.tar.gz

Dovrebbe apparire una cartella con i file di installazione di CryptoPro; nella console puoi accedervi con il comando

cd linux-amd64/

Installazione dei componenti di base di CryptoPro

su

e inserisci la password, quindi inserisci i comandi per l'installazione:

gnam installa redhat-lsb* ccid pangox-compat ./install.sh

Installazione di componenti CryptoPro aggiuntivi

giri/min -ivh cprocsp-rdr-pcsc-* lsb-cprocsp-pkcs11-* cprocsp-rdr-gui-gtk-*

Da segnalare anche i pacchetti di supporto dei dispositivi (token/lettori/schede di espansione). Questi pacchetti si trovano nell'archivio CSP CryptoPro, i loro nomi iniziano con cprocsp-rdr-. Se è necessario utilizzare un dispositivo specifico (ad es Rutoken EDS) dovrebbe essere installato il pacchetto corrispondente ( giri/min -ivh cprocsp-rdr-rutoken*). L'archivio contiene anche i pacchetti driver ( ifd-*) devono essere installati anche quando si utilizza il dispositivo corrispondente (Rutoken S -> giri/min -ivh ifd-rutoken*).

Non dovresti installare il pacchetto cprocsp-rdr-gui, poiché in combinazione con cprocsp-rdr-gui-gtk interrompe il funzionamento dei componenti grafici.

Installazione del plug-in del browser

CD.. rpm -ivh lsb-cprocsp-devel* yum installa cprocsp-pki-2.0.0-amd64-cades.rpm yum installa cprocsp-pki-2.0.0-amd64-plugin.rpm

Collegamento di un token

Ora puoi collegare il token di root alla porta USB del tuo computer

Eseguire il programma pcscd in una finestra della console separata con diritti di amministratore (root). In questa fase viene utilizzata l'opzione di avvio del debug.

su killall pcscd pcscd -adfffff

Dopo il lancio, non chiuderemo questa console (lì puoi vedere come il sistema comunica con la smart card).

Per i comandi successivi utilizzeremo la console che abbiamo aperto per prima. Non richiedono diritti di superutente (puoi digitare exit nel terminale per annullare la modalità root).

L'utilità dovrebbe vedere il dispositivo:

Installazione di certificati

Modifica dell'elenco dei nodi attendibili

Innanzitutto, dovresti aggiungere il sito Web CryptoPro all'elenco di quelli affidabili. Per fare ciò, chiudi il browser se era aperto e digita il comando nella console (senza diritti di amministratore):

firefox /etc/opt/cprocsp/trusted_sites.html

Inserisci il nome del sito nella riga "Aggiungi nuovo", fai clic su "+" e "Salva".

Installazione dei certificati CA

Per lavorare con i certificati, è necessario installare il certificato dell'autorità di certificazione (in questo caso, il certificato root viene installato direttamente) e il certificato dal token root nell'archivio locale. Per fare ciò è necessario scaricare dal sito dell'autorità di certificazione un file contenente una catena di certificati (solitamente un file con estensione .cer o .p7b) e un elenco di certificati revocati. Sono disponibili al seguente link (https://www.cryptopro.ru/certsrv/certcarc.asp). È necessario fare clic su "Scarica catena di certificati CA" e "Scarica ultimo CRL di base". Nella console, utilizzando i normali diritti utente, esegui i seguenti comandi:

/opt/cprocsp/bin/amd64/certmgr -inst -store uRoot -file ~/Downloads/certnew.p7b /opt/cprocsp/bin/amd64/certmgr -inst -crl -file ~/Downloads/certcrl.crl

Puoi scoprire di più sul programma certmgr. Passiamo ora a lavorare con i contenitori situati sul token. Se sul dispositivo non sono presenti contenitori, è possibile crearli. Per fare ciò utilizzare le istruzioni del paragrafo. Dopo aver installato i pacchetti (punto 5.1. e punto 5.2.), dovrebbe essere possibile vedere i contenitori sul dispositivo. Per scoprire il percorso del contenitore, nonché il fatto della sua esistenza, è possibile inserire quanto segue:

Installazione di un certificato da un contenitore su un token

Ora installa il certificato dal token root nella tua memoria personale (uMy):

/opt/cprocsp/bin/amd64/certmgr -inst -cont "<путь к контейнеру, начинающийся на \\.\>" -store uMy

Se tutto è stato completato senza errori, puoi procedere al punto

Nota
Molto spesso, l'estensione .cer corrisponde a un certificato e .p7b a un contenitore che può contenere uno o più certificati (ad esempio, una catena di essi)

Creare un certificato di prova

Creazione di un contenitore sul disco rigido

Se sul dispositivo non sono presenti contenitori, è possibile crearli. Andiamo al centro di certificazione dei test (CA) CryptoPro (http://www.cryptopro.ru/certsrv/certrqma.asp) e compiliamo i campi richiesti (è necessario compilare solo il campo “Nome:”). È necessario contrassegnare la chiave come esportabile. Vale la pena notare che per il controllo utilizzato nel paragrafo “Operazione di controllo”. Plug-in del browser» deve essere utilizzato lo standard del 2001.

Fare clic sul pulsante "Problema >".




Ora puoi copiare il contenitore sul token, ma prima devi scoprirne il nome. Per fare ciò, apri la console ed esegui il seguente comando:

/opt/cprocsp/bin/amd64/list_pcsc

È inoltre necessario trovare il nome completo del contenitore ottenuto durante la generazione del certificato:

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn

Copia di un contenitore in un token

Quindi usiamo questi nomi nel seguente comando:

/opt/cprocsp/bin/amd64/csptest -keycopy -contsrc "<полное название контейнера>" -contdest "\\.\<название токена>\<желаемое название контейнера>"


Il token ora contiene il contenitore. È possibile tornare alla sezione “Installazione di un certificato da un contenitore su un token (sezione 7.3)”, dopo aver prima eliminato il certificato installato dal contenitore sul disco rigido (generato dall'autorità di certificazione di test).

Nota
È necessario installare il certificato direttamente dal contenitore sul token in modo che il sistema associ il certificato al dispositivo

Puoi rimuovere questo certificato utilizzando il seguente comando:

/opt/cprocsp/bin/amd64/certmgr -del

E, se necessario, selezionando il numero del certificato da eliminare.

Verifica del funzionamento di una firma elettronica utilizzando il plug-in del browser

Per verificare il funzionamento del plug-in del browser, è possibile utilizzare la seguente risorsa: https://www.cryptopro.ru/sites/default/files/products/cades/demopage/simple.html Vale anche la pena verificare se non è necessario sono installati i certificati, la risorsa funziona correttamente solo se è installato un singolo certificato (è possibile utilizzare il comando /opt/cprocsp/bin/amd64/certmgr -del). Se funziona correttamente, la pagina avrà un aspetto simile a questo.

Generalizzazione

In generale, l'algoritmo di installazione è simile al seguente:

Consigli per l'utilizzo delle utilità della riga di comando CryptoPro

Impostazione delle variabili d'ambiente

Per comodità, dovresti prima fare in modo di poter eseguire i programmi senza dover specificare ogni volta il loro percorso. Questo può essere fatto in molti modi. In questo caso si propone di procedere come segue:

Nella console otteniamo i diritti di superutente (digita su e inserisci la password) Inserisci il seguente comando (per indicare il percorso a tutti gli utenti tranne il superutente):

echo "esporta PERCORSO=$PERCORSO:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64" >> /etc/profile

Se devi fare lo stesso per il superutente, usa il comando

echo "esporta PERCORSO=$PERCORSO:/opt/cprocsp/bin/amd64:/opt/cprocsp/sbin/amd64" >> /root/.bash_profile

Riavviare

Per verificare, puoi firmare il file e controllare la firma:

Utilizzando gli alias

Per i comandi utilizzati di frequente (come il comando per elencare i contenitori), vale la pena utilizzare alias semplici e digitati rapidamente. Per assegnare gli alias è necessario utilizzare il comando alias. Ad esempio, assegniamo un alias per il comando

/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn

Nella console otteniamo i diritti di superutente (digita su e inserisci la password) Inserisci il seguente comando:

echo "alias conts="/opt/cprocsp/bin/amd64/csptest -keyset -enum_cont -verifyc -fqcn"" >> /etc/bashrc

Riavvio Un esempio di lavoro può essere visto di seguito.

Letteratura sull'utilizzo delle utilità della riga di comando

Per ottenere informazioni su altri programmi è meglio utilizzare un comando con il flag “--help” (ad esempio csptest --help).

Alcuni comandi utili

Rimozione di un contenitore:

csptest -keyset -deletekeyset -container "<полное название контейнера>"

Mostra siti attendibili:

cpconfig -ini "\local\Software\Crypto Pro\CAdESplugin\TrustedSites" -view

Copiare un contenitore:

csptest -keycopy -contsrc "<полное название исходного контейнера>"-contest"<полное название контейнера назначения>"

Modifica del provider di crittografia predefinito (i tipi e i nomi disponibili possono essere visualizzati con il comando cpconfig -defprov -view_type):

cpconfig -defprov -setdef -provtype<тип провайдера>-nomeprov<название провайдера>

Scopri la versione di CryptoPro:

csptest -keyset -verifycont

Visualizza le informazioni sulla licenza:

cpconfig -licenza -view

Inserimento di una licenza (la chiave è scritta senza virgolette):

cpconfig -licenza -set<номер лицензии>

Elenca i contenitori disponibili:

csptest -keyset -enum_cont -verifyc -fqcn