[opensc]. Implementación de un HSM [Hardware Security Module] genérico que proporciona un almacén criptográfico [token] al que se accede mediante la interfaz estándar PKCS#11. OpenDNSSEC es un sistema completo de firma de zonas DNSSEC, muy fácil de usar y que prioriza la estabilidad y la seguridad. Originalmente se desarrolló como parte del sistema de firma de zonas DNSSEC [OpenDNSSEC] pero se puede usar con cualquier aplicación compatible con PKCS#11: firma digital, cifrado, generación de claves, DNSSEC, certificados, etc. No es un HSM físico (no tiene protección de hardware contra extracción de claves), pero sirve muy bien para desarrollo, pruebas y entornos donde no se quiere o no se puede usar un HSM real. Incluye las aplicaciones softhsm2-dump-file, softhsm2-keyconv, softhsm2-migrate y softhsm2-util. El archivo de configuración en /etc/softhsm/softhsm2.conf.
# softhsm2-util --show-slots
# softhsm2-util --init-token --slot 0 --label "MiToken"
# softhsm2-util --init-token --free --label "MiToken" --so-pin 1837799417 --pin linux
Se puede volver a lanzar el "show-slots" para listar de nuevo los slots y ver el slot asignado
# pkcs11-tool --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so --slot 1837799417 --pin linux --keypairgen --key-type rsa:2048 --id 01 --label "MiClaveRSA"
# softhsm2-util --import clave.pem --token "MiToken" --label "MiClaveImportada" --id A1B2 --pin linux
# softhsm2-util --import clave.pem --token "MiToken" --label "MiClaveImportada" --id A1B2 --pin linux --file-pin <pin-del-archivo>
# softhsm2-util --delete-token --token "MiToken"
# softhsm2-keyconv --in Kexample.com.+007+05474.private --out rsa.pem
# softhsm2-keyconv --in Kexample.com.+007+05474.private --out rsa.pem --pin PIN
# softhsm2-dump-file /var/lib/softhsm/tokens/e54c9587-60ac-2c30-5c01-d7d96d8a97f9/7742a212-3920-9ee2-07e1-1cfa67b26c4c.object
1.-
El proceso para firmar datos es el siguiente
$ cd pruebas
$ echo "Linux es un sistema genial" > datos.txt
$ openssl dgst -sha256 -binary datos.txt > datos.sha256
# pkcs11-tool --module /usr/lib/x86_64-linux-gnu/softhsm/libsofthsm2.so --slot 1837799417 --pin linux --sign --mechanism RSA-PKCS --id 01 --input-file datos.sha256 --output-file firma.bin