Guía de tecnologías

SoftHSM: instalación y uso en Ubuntu

7 min read Seguridad Actualizado 22 Sep 2025
SoftHSM en Ubuntu: instalación y guía práctica
SoftHSM en Ubuntu: instalación y guía práctica

Introducción

Los tokens hardware o Hardware Security Modules (HSM) se usan en distintas aplicaciones para almacenar claves criptográficas (públicas y privadas) y certificados. Ejemplos de HSM hardware son NitroKey y Smartcard-HSM. También existen alternativas software como SoftHSM (v2), desarrollado dentro del proyecto OpenDNSSEC.

SoftHSM es, en esencia, una implementación de un almacén criptográfico accesible a través de la interfaz PKCS#11. PKCS#11 es un estándar usado para comunicar o acceder a dispositivos criptográficos como HSMs y tarjetas inteligentes. El propósito principal de los HSM es generar claves criptográficas y firmar/encriptar información sin exponer la clave privada.

Contexto breve: OpenDNSSEC necesitaba una opción que permitiera a sus usuarios trabajar sin comprar hardware físico. Para eso surgió SoftHSM, una implementación software genérica compatible con PKCS#11 y pensada para integrarse con OpenDNSSEC y otros productos criptográficos.

Variantes de intención y términos relacionados

  • Instalar SoftHSM en Ubuntu
  • Configurar SoftHSM con PKCS#11
  • Uso de SoftHSM vs HSM hardware
  • Integración SoftHSM y OpenSC

Dependencias

Puedes compilar SoftHSM usando las bibliotecas criptográficas Botan u OpenSSL. Si usas Botan, asegúrate de compilar con soporte para GNU MP (–with-gnump) para mejorar el rendimiento en operaciones con clave pública.

Importante: instala también las cabeceras de desarrollo (por ejemplo openssl-dev o libssl-dev según la distribución) antes de ejecutar ./configure.

Instalación desde fuentes

SoftHSM está disponible en el sitio de OpenDNSSEC y puede descargarse con wget:

wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz

Archivo tar.gz del paquete SoftHSM descargado

Extrae el paquete:

tar xzf softhsm-2.3.0.tar.gz

Salida del comando tar al extraer el paquete SoftHSM

Después de la extracción, ejecuta el script configure para comprobar dependencias:

./configure

Ejecución del script configure de SoftHSM

Si falta alguna cabecera, configure mostrará errores. Por ejemplo, al faltar las cabeceras de OpenSSL verás un mensaje similar a este:

Error de configure por falta de cabeceras de OpenSSL

Soluciona la dependencia instalando el paquete de desarrollo apropiado. En algunas distribuciones el paquete se llama openssl-dev; en Ubuntu suele ser libssl-dev:

apt-get install libssl-dev

Instalación del paquete de desarrollo de OpenSSL

Vuelve a ejecutar ./configure; si todo está correcto verás que las dependencias están satisfechas:

Salida del configure indicando que las dependencias están satisfechas

Opciones de configure

El script configure ofrece varias opciones para elegir backend criptográfico, soporte de ECC/GOST, integración con p11-kit y almacenamiento de objetos. Puedes verlas con:

./configure --help
--disable-ecc       Disable support for ECC (default enabled)
--disable-gost      Disable support for GOST (default enabled)
--disable-visibility    Disable hidden visibilty link mode [enabled]
--with-crypto-backend   Select crypto backend (openssl|botan)
--with-openssl=PATH Specify prefix of path of OpenSSL
--with-botan=PATH   Specify prefix of path of Botan
--with-migrate      Build the migration tool. Used when migrating
        a SoftHSM v1 token database. Requires SQLite3
--with-objectstore-backend-db
            Build with database object store (SQLite3)
--with-sqlite3=PATH Specify prefix of path of SQLite3
--disable-p11-kit   Disable p11-kit integration (default enabled)
--with-p11-kit=PATH Specify install path of the p11-kit module, will
            override path given by pkg-config

Selecciona las opciones según tus requisitos. Por ejemplo, para usar OpenSSL como backend y habilitar la migración desde v1 podrías usar:

./configure --with-crypto-backend=openssl --with-migrate

Compila el código fuente:

make

Compilación de SoftHSM mediante make

Instala los binarios y bibliotecas:

make install

Instalación de SoftHSM

Nota: make install puede requerir privilegios de administrador (sudo) según el prefijo de instalación.

Archivo de configuración

La ubicación por defecto del archivo de configuración es /etc/softhsm2.conf. Puedes cambiarla exportando la variable de entorno SOFTHSM2_CONF antes de ejecutar herramientas de SoftHSM:

export SOFTHSM2_CONF=Path_of_SoftHSM_Conf_file

El archivo de configuración define la ubicación física del almacén (token database), opciones de backend y parámetros del objeto.

Ejemplo del contenido por defecto de /etc/softhsm2.conf

Inicializar un token SoftHSM

Antes de usar SoftHSM debes inicializar un token. Puedes usar la utilidad softhsm2-util o interactuar por PKCS#11.

Inicializa un token en la ranura 0 y asígnale una etiqueta:

softhsm2-util --init-token --slot 0 --label "Token-1"

Salida de softhsm2-util al inicializar un token

Durante la inicialización se te pedirá establecer un PIN de Security Officer (SO) y un PIN de usuario. El SO PIN sirve para tareas de administración como re-inicializar el token. El PIN de usuario lo usará la aplicación que necesite acceder al token (por ejemplo, Mozilla Firefox).

Nota: una vez inicializado un token, SoftHSM añade automáticamente nuevos slots para tokens no inicializados. Los tokens inicializados pueden reasignarse a otra ranura según su número de serie. Para buscar un token es más seguro usar la etiqueta o el número de serie en la lista de slots.

Otras opciones útiles de softhsm2-util incluyen listado de objetos, exportación e importación de claves según el soporte del backend.

Opciones adicionales de softhsm2-util

Lista de slots y tokens:

Listado de ranuras y tokens detectados por SoftHSM

Respaldo

Todos los tokens y sus objetos se almacenan en la ubicación indicada por softhsm2.conf. Por tanto el respaldo puede realizarse mediante copia de archivos del directorio configurado. Asegura permisos adecuados y confidencialidad del respaldo: los archivos contienen objetos en formato que deben tratarse como secretos.

Importante: cifra y controla el acceso a las copias de respaldo y almacénalas fuera del servidor de producción cuando sea posible.

SoftHSM con utilidades OpenSC

Para acceder a SoftHSM con utilidades PKCS#11 puedes usar OpenSC. En Debian/Ubuntu:

apt-get install opensc

Instalación de OpenSC

Ejemplo de test con pkcs11-tool (el parámetro -t prueba el mecanismo):

pkcs11-tool --module /usr/local/lib/softhsm/libsofthsm2.so -l -t

Salida de pkcs11-tool interactuando con SoftHSM

Buenas prácticas y seguridad

  • Control de acceso: limita quién puede leer el archivo de configuración y el directorio de tokens. Usa permisos mínimos (por ejemplo 600 para archivos sensibles).
  • Backup seguro: cifra las copias de respaldo y registra su localización. No almacenes backups en el mismo host sin cifrado.
  • Rotación de PIN/clave: define políticas de rotación y revocación para PINs y claves internas.
  • Entorno de producción: considera usar un HSM hardware para cargas críticas o cumplimiento de normativas. SoftHSM es útil para pruebas, desarrollo y entornos con requisitos moderados.
  • Monitorización: registra accesos y fallos de autenticación. Integra con sistemas de auditoría si es necesario.

Cuándo no usar SoftHSM

  • No utilices SoftHSM como sustituto de un HSM hardware en entornos donde la seguridad física y el cumplimiento regulatorio exigen módulos certificados (por ejemplo, FIPS 140-2/3, Common Criteria).
  • Evita SoftHSM para claves maestras que protejan datos altamente sensibles en producción si no controlas adecuadamente la infraestructura.

Alternativas y migración

  • HSM hardware: NitroKey, Thales, YubiHSM, Gemalto. Ideales para entornos de alta seguridad.
  • Otras soluciones software: dependientes del caso de uso; comparar compatibilidad PKCS#11 y soporte del proveedor.
  • Migración desde SoftHSM v1: SoftHSM incluye una herramienta de migración que requiere SQLite3. Compila con –with-migrate si necesitas migrar bases de tokens.

Modelo mental rápido

Piensa en SoftHSM como una “caja fuerte digital” accesible mediante una interfaz estándar (PKCS#11). Las aplicaciones piden a la caja realizar operaciones (firmar, cifrar) sin obtener la clave privada.

Lista de verificación por rol

Administrador:

  • Verificar dependencias y compilar con el backend deseado.
  • Configurar permisos y backups cifrados.
  • Documentar el proceso de recuperación.

DevOps:

  • Automizar la instalación y el despliegue del archivo de configuración.
  • Añadir pruebas de integración que validen operaciones PKCS#11.

Responsable de seguridad:

  • Revisar políticas de PIN y almacenamiento de backups.
  • Auditar accesos y configurar alertas.

Procedimiento (SOP) rápido para instalar y preparar SoftHSM

  1. Instala dependencias (libssl-dev, sqlite3 si usas DB, build-essential).
  2. Descargar paquete: wget https://dist.opendnssec.org/source/softhsm-2.3.0.tar.gz
  3. Extraer: tar xzf softhsm-2.3.0.tar.gz
  4. Configurar: ./configure –with-crypto-backend=openssl –with-migrate (opcional)
  5. Compilar: make
  6. Instalar: sudo make install
  7. Configurar /etc/softhsm2.conf y establecer SOFTHSM2_CONF si hace falta.
  8. Inicializar token: softhsm2-util –init-token –slot 0 –label “Token-1”
  9. Probar con pkcs11-tool o la aplicación destino.

Pruebas y criterios de aceptación

  • La biblioteca PKCS#11 se carga correctamente desde la ruta de instalación.
  • softhsm2-util enumera al menos un slot y permite inicializar un token.
  • Las operaciones de firma/prueba con pkcs11-tool devuelven éxito con -t.
  • Backups restaurados desde copia permiten recuperar tokens e identificar objetos por etiqueta/serial.

Migración y compatibilidad

  • Para migrar desde SoftHSM v1, compila con soporte de migración (–with-migrate) y usa la herramienta incluida.
  • Comprueba compatibilidad de la ruta de instalación de la librería PKCS#11 con las aplicaciones que la referencian (p. ej., Firefox, OpenSSL con engine PKCS#11, servidores TLS).

Glosario (1 línea cada término)

  • PKCS#11: estándar API para acceder a tokens criptográficos.
  • Token: entidad lógica que contiene claves/objetos criptográficos.
  • SO PIN: PIN del Security Officer para administración del token.
  • User PIN: PIN usado por aplicaciones para operaciones de usuario.

Resumen final

SoftHSM ofrece una alternativa software útil para desarrollo, pruebas y algunos despliegues donde un HSM hardware no es imprescindible. Su compatibilidad con PKCS#11 facilita la integración con muchas aplicaciones. Sin embargo, para cargas críticas y requisitos regulatorios, se recomienda HSM hardware certificado.

Importante: trata los archivos de tokens y backups como secretos. Controla el acceso, cifra respaldos y documenta procedimientos de recuperación.

Anuncio corto

SoftHSM facilita probar y desarrollar integraciones PKCS#11 sin necesidad de hardware HSM. Instálalo en Ubuntu, inicializa tokens y realiza pruebas con pkcs11-tool o OpenSC.

Criterios de aceptación

  • Instalación y pruebas completadas sin errores.
  • Backups realizados y verificados.
  • Políticas de acceso y rotación definidas.

Fin del artículo.

Autor
Edición

Materiales similares

Ocultar y mostrar canciones en Spotify
Guía

Ocultar y mostrar canciones en Spotify

Arreglar cámara trasera en Snapchat
Soporte técnico

Arreglar cámara trasera en Snapchat

Capturar datos de red en Android — Guía práctica
Seguridad

Capturar datos de red en Android — Guía práctica

iOS 12.1.2: solución al fallo que corta datos móviles
Noticias Móviles

iOS 12.1.2: solución al fallo que corta datos móviles

Capturar datos de red en Android — Guía práctica
Seguridad Android

Capturar datos de red en Android — Guía práctica

Medir carga y descarga de batería en Android
Android

Medir carga y descarga de batería en Android