Closed tflagella closed 3 years ago
Inizializzando il token come non-root user viene provato ad accedere il file di default /etc/softhsm2.conf che punta ai token salvati sotto la directory /var/lib/softhsm/tokens/ i cui ownership/permission sono limitati all'utente di root e ai suoi gruppi associati. Cambiare ownership/permission della directory /var/lib/softhsm/tokens non risolve il problema.
Una soluzione può essere: cd $HOME mkdir -p $HOME/lib/softhsm/tokens cd $HOME/lib/softhsm/ echo "directories.tokendir = $PWD/tokens" > softhsm2.conf export SOFTHSM2_CONF=$HOME/lib/softhsm/softhsm2.conf echo "name = softhsm" > softhsm_java.conf echo "library = /usr/lib64/libsofthsm2.so" >> softhsm_java.conf
Inizializzare poi softhsm come segue, fornendo i due pin di gestione e di uso: $ softhsm2-util --init-token --slot 0 --label "Token-1" --so-pin 1234 --pin 123456
A questo punto il dispositivo può essere usato come un normale keystore java: keytool -list -keystore NONE -storetype PKCS11 -storepass 123456 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg $HOME/lib/softhsm/softhsm_java.conf
Keystore type: PKCS11 Keystore provider: SunPKCS11-softhsm Your keystore contains 0 entries
Si deve poi creare una chiave privata attraverso la creazione di una CSR. A titolo di esempio si può usare il seguente comando per creare una coppia di chiavi selfsigned: keytool -genkey -keyalg RSA -alias esempio_selfsigned -keystore NONE -storepass 123456 -validity 3650 -keysize 2048 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg $HOME/lib/softhsm/softhsm_java.conf -storetype PKCS11
Riutilizzando il comando keytool -list precedente si può verificare la creazione della coppia di chiavi.
Usare opzione -Djava.security.debug=sunpkcs11 per avere i log di debug
Necessità: Verificare la compatibilità di GovWay con hardware pkcs11, come smart-cart e dispositivi HSM.
Soluzione: Java supporta in maniera trasparente keystore pkcs11 tramite il provider built-in sun.security.pkcs11.SunPKCS11 che può essere configurato per qualunque dispositivo che supporti pkcs11, tramite un parametro con un file di configurazione che punti alla libreria pkcs11 del dispositivo.
Per mettere a punto uno scenario d'uso si può utilizzare softhsm, il simulatore pkcs11 di dnssec. Di seguito le istruzione per l'uso su fedora:
1) installare softhm tramite:
yum install opensc softhsm
2) predisporre il file /etc/softhsm_java.conf come:
name = softhsm library = /usr/lib64/libsofthsm2.so
3) inizializzare softhsm come segue, fornendo i due pin di gestione e di uso:
softhsm2-util --init-token --slot 0 --label "Token-1"
4) testare il device virtuale con:
pkcs11-tool --module /usr/lib64/libsofthsm2.so -l -t
5) A questo punto il dispositivo può essere usato come un normale keystore java:
keytool -list -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg /etc/softhsm_java.conf
NOTA: Per default l'accesso al device funziona solo da superutente