Semnătura digitală românească pe Linux

Semnătura digitală românească pe Linux

Notă importantă: Informațiile din acest articol sunt bazate pe documentație publică și experiențe raportate de utilizatori. Nu au fost testate recent pe un sistem Linux actual cu un certificat românesc real. Dacă ai testat acest proces și vrei să contribui cu experiența ta, te rugăm să ne contactezi sau să lași un comentariu. Orice corecție sau completare este binevenită.

Ce este semnătura digitală calificată?

Semnătura digitală calificată este echivalentul electronic al semnăturii olografe, recunoscută legal în România și în Uniunea Europeană conform Regulamentului eIDAS (EU 910/2014). Ea garantează identitatea semnatarului și integritatea documentului semnat.

În România, certificatele de semnătură digitală calificată sunt emise de furnizori acreditați de MCID (Ministerul Cercetării, Inovării și Digitalizării):

  • certSIGN - cel mai răspândit furnizor
  • DigiSign
  • Trans Sped
  • DIGISIGN (pentru servicii ANAF)

Certificatul vine de obicei pe un token USB criptografic - un dispozitiv care arată ca un stick USB obișnuit, dar conține un cip securizat pe care este stocată cheia privată. Există și variante pe smart card fizic, care necesită un cititor de card separat.

Este compatibil cu Linux?

Răspuns scurt: tehnic da, practic cu rezerve.

Certificatele românești sunt bazate pe standarde internaționale deschise - PKCS#11, X.509 și eIDAS - deci nu există o incompatibilitate fundamentală cu Linux. Problema principală nu este standardul, ci software-ul furnizorului, care este gândit aproape exclusiv pentru Windows.

Furnizorii români nu testează și nu susțin oficial Linux. Asta înseamnă că:

  • Driverele există, dar sunt adesea versiuni mai vechi față de cele pentru Windows
  • Documentația pentru Linux este inexistentă sau depășită
  • Dacă ceva nu funcționează, suportul tehnic al furnizorului va recomanda Windows
  • Unele aplicații desktop ale ANAF sunt exclusiv pentru Windows

Cu toate acestea, comunitatea internațională de utilizatori Linux a rezolvat multe dintre aceste probleme prin proiectul OpenSC, o implementare open-source a standardului PKCS#11.

Ce ai nevoie

Software de bază

# Instalare pachete esențiale
sudo apt install opensc opensc-pkcs11 pcscd pcsc-tools libccid
 
# Pornire și activare serviciu card reader
sudo systemctl enable --now pcscd
  • pcscd - daemonul PC/SC care gestionează comunicarea cu tokenul
  • opensc - librărie open-source pentru tokenuri PKCS#11
  • pcsc-tools - utilitare de diagnosticare (include pcsc_scan)

Driver specific furnizorului

Pe lângă OpenSC, unii furnizori oferă propriul driver.

certSIGN folosește SafeNet Authentication Client:

# Pachetul .deb se descarcă de pe site-ul certSIGN (secțiunea Suport/Download)
sudo dpkg -i SafenetAuthenticationClient-*.deb
Verifică dacă există o versiune Linux a driverului pentru tokenul tău specific, înainte de a achiziționa certificatul.

Verificarea tokenului

După conectarea tokenului USB și instalarea driverelor:

# Verifici dacă tokenul este detectat de sistem
pcsc_scan
 
# Listează sloturile disponibile
pkcs11-tool --list-slots
 
# Listează obiectele de pe token (certificate, chei)
pkcs11-tool --list-objects
 
# Cu biblioteca SafeNet (dacă e instalată)
pkcs11-tool --module /usr/lib/libeToken.so --list-slots

Utilizare în browser - ANAF / SPV

Spațiul Privat Virtual (SPV) al ANAF permite autentificarea cu certificat digital calificat. Pe Linux, Firefox este browserul recomandat, deoarece permite adăugarea manuală a modulelor PKCS#11.

Configurare Firefox

  1. Deschide PreferințeConfidențialitate și securitate
  2. Derulează în jos până la secțiunea Dispozitive de securitate
  3. Click pe Încarcă și navighează la librăria .so a driverului
  4. Repornește Firefox după adăugarea modulului
  5. Accesează portalul ANAF/SPV și selectează autentificarea cu certificat digital

Locații uzuale pentru librăria PKCS#11:

/usr/lib/libeToken.so                          # SafeNet / certSIGN
/usr/lib/opensc-pkcs11.so                      # OpenSC (varianta veche)
/usr/lib/x86_64-linux-gnu/opensc-pkcs11.so     # OpenSC (Ubuntu/Debian)
/usr/lib64/opensc-pkcs11.so                    # Fedora / RHEL
Chromium și Google Chrome nu au o interfață grafică pentru PKCS#11. Configurarea este mai complexă și nu este recomandată pentru utilizatori începători.

Semnarea documentelor PDF

JSignPdf (recomandat)

JSignPdf este o aplicație Java open-source dedicată semnării digitale a fișierelor PDF. Funcționează pe orice sistem care are Java instalat.

# Instalare Java (dacă nu este deja instalat)
sudo apt install default-jre
 
# Descarcă JSignPdf de pe https://jsignpdf.sourceforge.net
# Rulează aplicația
java -jar JSignPdf.jar

În interfața grafică a JSignPdf:

  • Keystore type: selectează PKCS11
  • Keystore source: calea către fișierul .so al driverului
  • Selectează documentul PDF de semnat și locul unde va fi salvat

LibreOffice (integrat)

LibreOffice Writer și Calc au suport nativ pentru semnătura digitală, dacă tokenul este recunoscut de sistem:

FișierSemnături digitaleSemnează documentul

Linie de comandă cu OpenSSL

openssl smime -sign \
  -engine pkcs11 \
  -keyform engine \
  -inkey "pkcs11:token=NUME_TOKEN;object=CHEIE_PRIVATA" \
  -signer certificat.pem \
  -in document.pdf \
  -out document.pdf.sig

Ce funcționează și ce nu

Funcționalitate Status
Detectarea tokenului USB ✅ Funcționează cu OpenSC
Autentificare SPV/ANAF în Firefox ✅ Funcționează cu configurare
Semnare PDF cu JSignPdf ✅ Funcționează
Semnare în LibreOffice ✅ Funcționează
Aplicații desktop ANAF (.exe) ❌ Exclusiv Windows (posibil prin Wine)
Suport tehnic oficial de la furnizor ❌ Indisponibil pentru Linux
Tokenuri mai noi (firmware recent) ⚠️ Incert - depinde de driver

Depanare

Problemă Soluție posibilă
Tokenul nu este detectat sudo systemctl restart pcscd
Firefox nu vede modulul Repornire Firefox după adăugarea librăriei PKCS#11
Eroare la autentificare Verifică PIN-ul; după 3 greșeli tokenul se blochează
PIN blocat pkcs11-tool –unblock-pin sau SafeNet AC pe Windows
Librăria .so nu există find /usr -name „*pkcs11*“
pcsc_scan nu găsește niciun cititor systemctl status pcscd

Resurse suplimentare

Contribuie la acest articol

Dacă ai testat cu succes (sau fără succes) utilizarea unui certificat românesc pe Linux, informațiile tale sunt valoroase pentru întreaga comunitate. Distribuția folosită, versiunea driverului, tipul tokenului și furnizorul certificatului ne ajută să îmbunătățim acest articol.

Alătură-te discuției pe forum sau Matrix