Blia.it NON utilizza cookie (v. informativa)

Pagine principali

(clicca sul titolo per altri link o qui per il menu completo)

libri on line

firma digitale e cns

Esperimenti con HTML5

Link

Logo Saela.eu

Logo Neapolis Rai
Old Blia.it su Neapolis (Rai)

Opensignature

NO Bitcoin

Innovatore.it

Sixthlane

Road Trip Italy

Sandro Leggio

Centro Ibleo di Atletica Leggera

Logo ASD Libertas Acate
ASD Libertas Acate

Logo Blia.it

Novità del sito: Verifica fattura elettronica ordinaria e PA

  

Novità del sito: Verifica fattura elettronica ordinaria e PA

Istruzioni per firmare digitalmente (CAdES compatibile)

in ambiente Linux e Windows con Openssl e smartcard (per esperti o sviluppatori)


Novità:
Siamo lieti di annunciarvi che il 27/01/2019 gli sviluppatori di Openssl hanno approvato ed eseguito il commit nel ramo ufficiale (github.com/openssl/openssl) di Openssl, del nostro codice che integra in Openssl il supporto CAdES.
Da questo momento, quindi, non ci sarà più bisogno di applicare la patch ma sarà sufficiente scaricare e compilare la versione ufficiale in sviluppo di Openssl.
Grazie a tutti coloro che hanno contribuito a questo risultato con test e consigli.

Software da scaricare:
  • Sorgenti di Openssl v.1.0.1g
    Patch realizzata da noi per il supporto CAdES di Openssl
    Engine PKCS11 per Openssl (sudo apt-get install libengine-pkcs11-openssl)

    oppure, su openssl 1.1.0
    sorgenti di Openssl v.1.1.0
    patch per openssl 1.1.0

  • Engine PKCS11 per Openssl 1.1.0 (sudo apt-get install libp11-3)

  • Opensc (sudo apt-get install opensc)

  • Driver PKCS11 del produttore della smart card (quello usato in questo esempio, libbit4xpki.so, lo potete scaricare da qui: www.pec.it/download-software-driver.aspx), c'è da aggiungere che non sempre è facile trovare online il driver pkcs11, anzi, facciamo un appello ai produttori di smart card affinché rendano disponibili nei loro siti internet i driver PKCS11 (in fondo alla pagina i nomi di alcuni di questi driver o librerie o middleware, vari nomi con cui potete trovarli).

  1. Per prima cosa dobbiamo applicare la patch e compilare openssl
    - patch -Np1 -r /dev/null < cades.patch
    - ./config && make && sudo make install

  2. assicuriamoci che la versione di openssl con la patch sia stata compilata correttamente eseguendo il comando /usr/local/ssl/bin/openssl cms ? tra le varie opzioni dovremmo trovare -cades, se sì, openssl è pronto

  3. procuriamoci alcuni dati che ci serviranno successivamente:
    - pkcs11-tool --module libbit4xpki.so -O (elenca gli oggetti presenti nella smart card), dovremmo trovarci qualcosa del genere:
    Certificate Object, type = X.509 cert
    label: DS User Certificate1
    ID: 123456
    - prendiamo nota dell'ID della chiave/certificato 123456
    - scarichiamo il certificato con pkcs11-tool --module libbit4xpki.so -r --type cert --id 123456 > certificato.der
    - convertiamo il certificato dal formato binario (DER) al formato test (PEM) con openssl x509 -in certificato.der -inform der -text -out certificato.pem

  4. Creiamo un file di configurazione per openssl, ad esempio openssl.cnf in cui scriviamo
    openssl_conf = openssl_init
    [openssl_init]
    engines = engine_section
    [engine_section]
    pkcs11 = pkcs11_section
    [pkcs11_section]
    engine_id = pkcs11
    dynamic_path = /usr/lib/x86_64-linux-gnu/engines-1.1/pkcs11.so
    MODULE_PATH = /usr/lib/libbit4xpki.so
    (ovviamente i percorsi dei file possono cambiare)

  5. creiamo un file con comandi bash, ad esempio firma.sh in cui mettiamo:
    OPENSSL_CONF=./openssl.cnf
    export OPENSSL_CONF
    openssl cms -nosmimecap -md sha256 -nodetach -binary -cades -stream -outform DER -sign -signer certificato.pem -inkey 123456 -keyform engine -in $1 -out $1.p7m -engine pkcs11
    (N.B. se si tratta di aggiungere una firma ad un documento precedentemente firmato, quindi nel caso di controfirma o firme multiple occorre sostituire la terza riga dello script con:
    openssl cms -nosmimecap -md sha256 -nodetach -binary -cades -stream -outform DER -resign -signer certificato.pem -inkey 123456 -keyform engine -inform der -in $1 -out $1.p7m -engine pkcs11 )

  6. siamo pronti per firmare: firma.sh miotesto.txt

Su Windows presto saranno disponibili le istruzioni, intanto potete scaricare l'eseguibile compilato con il supporto CAdES all'indirizzo: sites.google.com/site/antiac/openssl.zip.

Driver PKCS#11

incryptoki2.dll (Incard)
bit4ipki.dll (Incard)
bit4opki.dll (Oberthur)
bit4xpki.dll (Incard e Oberthur)
bit4cpki.dll (HID)
bit4tpki.dll (HID)
OCSCryptoki.dll (Oberthur)
Cryptoki.dll (Oberthur)
asepkcs.dll (Athena)
SI_PKCS11.dll (Siemens)
CardOS_PKCS11.dll (Siemens)
cmP11.dll (CryptoVision)
cvP11_M4.dll (CryptoVision)
IpmPki32.dll (Siemens)
IPMpkiLC.dll (Siemens)
IpmPkiLU.dll (Siemens)
eTPKCS11.dll (SafeNet)
stPKCS11.dll (SafeNet)
inp11lib.dll (Incard)
opensc-pkcs11.dll (OpenSC)
SissP11.dll (Siemens)
aetpkss1.dll (Gemalto)
bit4p11.dll (Athena)
siecap11.dll (Siemens)

libbit4opki.so (Oberthur)
libbit4ipki.so (Incard)
libbit4xpki.so (Incard e Oberthur)
opensc-pkcs11.so (OpenSC)
libASEP11.so (Athena)
libeTPkcs11.so (SafeNet)
stPKCS11.so (SafeNet)
libsiecap11.so (Siemens)

libopensc.dylib (OpenSC)
libbit4xpki.dylib (Incard e Oberthur)
libbit4ipki.dylib (Incard)
libbit4opki.dylib (Oberthur)
libASEP11.dylib (Athena)
libeTPkcs11.dylib (SafeNet)
libaetpkss.dylib (Gemalto)
libOcsCryptoki.dylib (Oberthur)

Per dubbi, commenti e proposte potete usare l'email in fondo alla pagina.

lo staff di Blia.it