Thales Luna HSM

Para obtener información sobre cómo instalar, configurar e integrar EJBCA con Thales Luna HSM, consulte la Guía de integración de Thales EJBCA con Thales Luna HSM .


Notas de instalación y configuración

A continuación se incluyen notas sobre la instalación y configuración que pueden ser relevantes para su integración con EJBCA.

Instalación

Para obtener información sobre la instalación de Luna HSM, consulte la documentación de Thales Luna HSM para obtener más información.

Uso de Luna 6.x/7.x en modo FIPS

Según FIPS 186-3/4, los métodos RSA permitidos para generar claves son 186-3 con primos y 186-3 con primos auxiliares. Por lo tanto, la generación de claves RSA PKCS y X9.31 ya no está aprobada para funcionar en un Luna HSM compatible con FIPS. Si utiliza el Luna HSM en modo FIPS, configure el siguiente ajuste en el archivo de configuración para redirigir el mecanismo de llamada anterior a un nuevo mecanismo aprobado en modo FIPS:

 Misc = { RSAKeyGenMechRemap = 1; } 

Configuración

Para obtener instrucciones de configuración, consulte la Ayuda en línea de Luna SA, documento n.° 800274-xxx que se incluye en el CD de instalación.

Realice todos los pasos de la sección A - Configuración (Configurar el dispositivo después de la instalación) y tenga en cuenta lo siguiente con respecto a la configuración:

  • Paso 3: Tenga en cuenta que al cambiar muchas de las políticas se restablecerá el HSM y no podrá cambiar ninguna de estas políticas más adelante.

  • Paso 4: Se puede agregar una nueva partición en cualquier momento. Cada partición se representará como una ranura PKCS#11. Asegúrese de escribir la contraseña de cliente de partición de registro (TP) en un archivo de texto. En el ejemplo, la contraseña es btqx-EFGH-3456-7/K9 para la primera partición creada (ranura 1). La TP se usará posteriormente como PIN para la ranura.

  • Paso 5: Recomendamos permitir la activación de las particiones (ranuras p11). Si una partición no está activada, deberá insertar la llave negra en el PED e ingresar el PIN cada vez que el cliente utilice un recurso del HSM. A continuación, se muestra un comando de ejemplo para permitir la activación de una partición:

    lunash:>partition changePolicy -partition partition1 -policy 22 -value 1
  • Paso 6: Recomendamos ejecutar desde un directorio de su propiedad (sin tener que usar sudo) en lugar de ejecutar desde el directorio /usr/LunaSA/bin .
    A continuación se muestra un ejemplo de ejecución desde su propio directorio:

    $ /usr/lunasa/bin/ctp admin@lunasa.int.primekey.com:server.pem .

    A continuación se muestran ejemplos de cuándo se debe utilizar sudo: registro del servidor y adición de certificados de cliente (se utilizan y actualizan archivos y directorios propiedad de la raíz):

    $ sudo /usr/lunasa/bin/vtl addServer -n lunasa.int.primekey.com -c server.pem
    $ sudo /usr/lunasa/bin/vtl createCert -n milton
  • Paso 7: Cada partición asignada a un cliente se representará mediante una ranura PKCS#11 para este cliente. Cada partición recién añadida se colocará al final de la lista de ranuras, y el número de ranura será el índice de la lista de ranuras más 1 (el índice de la lista empieza por 0 y el número de ranura empieza por 1). Para ver la asignación de ranuras de la partición en el cliente, ejecute lo siguiente. El cliente podrá entonces usar estas ranuras con EJBCA y sus herramientas.

    $ /usr/lunasa/bin/vtl verify
    were found: The following Luna SA Slots /Partitions de Luna SA:
    # Label Slot Serial
    ==== ======== =====
    1 950784001 partition1
    2 950784002 partition2

Activación de ranuras

Una partición (ranura) debe activarse antes de que un cliente pueda usarla, como se describe en B - Administración y mantenimiento > Activación y activación automática de particiones de la Ayuda en línea de Luna SA, documento n.° 800274-xxx, incluido en el CD de instalación. La política de partición necesaria para la activación debe estar configurada (consulte el paso 5 anterior). A continuación, se muestra un ejemplo de activación de una partición con la contraseña configurada en el paso 4 anterior:

lunash:>hsm login
lunash:>partition activate -partition partition1 -password btqx-EFGH-3456-7 /K9

Generar claves en una ranura

Las claves se pueden generar en la interfaz de administración de EJBCA o mediante la CLI de clientToolBox. La CLI es útil para probar HSMs rápidamente. Las claves generadas con la CLI también están disponibles desde la interfaz de usuario, y viceversa.

A continuación se muestra un ejemplo para generar claves en una ranura usando la contraseña btqx-EFGH-3456-7/K9 del paso 4 anterior:

$ . /ejbcaClientToolBox .sh PKCS11HSMKeyTool generate /usr/lunasa/lib/libCryptoki2_64 .so 2048 rsa2048_1 1
0 [main] INFO org.ejbca.util.keystore.KeyTools - Using SUN PKCS11 provider: sun.security.pkcs11.SunPKCS11
PKCS11 Token [SunPKCS11-Luna] Password:
Created certificate with entry rsa2048_1.
$ . /ejbcaClientToolBox .sh PKCS11HSMKeyTool generate /usr/lunasa/lib/libCryptoki2_64 .so secp160r1 secp160r1_1 1
0 [main] INFO org.ejbca.util.keystore.KeyTools - Using SUN PKCS11 provider: sun.security.pkcs11.SunPKCS11
PKCS11 Token [SunPKCS11-Luna] Password:
Created certificate with entry secp160r1_1.

Lista y claves de prueba utilizadas por EJBCA

A continuación se muestra un ejemplo de listado y prueba de todas las claves que EJBCA podría usar:

$ . /ejbcaClientToolBox .sh PKCS11HSMKeyTool test herramienta clave PKCS11HSM /usr/lunasa/lib/libCryptoki2_64 .so 1
Test of keystore with ID 1.
0 [main] INFO org.ejbca.util.keystore.KeyTools - Using SUN PKCS11 provider: sun.security.pkcs11.SunPKCS11
PKCS11 Token [SunPKCS11-libCryptoki2_64.so-slot2] Password:
Testing of key: rsa2048_1
SunJCE version 1.7SunPKCS11-libCryptoki2_64.so-slot2 version 1.7; modulus length: 2048; byte length 245. The docoded byte string is equal to the original!
test Signature of key rsa2048_1: signature length 256; first byte 28; verifying true
Key statistics.
Signings per second: 369; Decryptions per second: 135
Testing of key: secp160r1_1
test Signature of key secp160r1_1: signature length 48; first byte 30; verifying true
Key statistics.
Signings per second: 68 No crypto available for this key.

Crear token criptográfico y CA en EJBCA

Para crear una CA, primero cree un token criptográfico en EJBCA. Para crear un token criptográfico PKCS11, asegúrese de que EJBCA conozca la ubicación de la biblioteca de controladores PKCS#11. Las referencias a los archivos de la biblioteca PKCS#11 se configuran en conf/web.properties en EJBCA, y EJBCA reconoce las ubicaciones más comunes de los controladores PKCS#11 de Luna.

En la interfaz de administración de EJBCA, haga clic en Tokens criptográficos en Funciones de CA para generar un nuevo token criptográfico PKCS#11 con la biblioteca Luna. Con el token criptográfico creado, cree CAs utilizando las claves del HSM y seleccionando el token criptográfico correcto.

Propiedades de muestra del token CA

A continuación, se muestra una configuración de muestra de las propiedades del token de CA para el token PKCS#11 al crear una CA usando la CLI, bin/ejbca.sh ca init , creando un nuevo token criptográfico.

sharedLibrary= /usr/lunasa/lib/libCryptoki2_64 .so
slotLabelType=SLOT_NUMBER
slotLabelValue=1
certSignKey=myECCKey
crlSignKey=myECCKey
defaultKey=default

Las propiedades del token de CA al crear una CA mediante la CLI con un token criptográfico existente, o al usar el comando bin/ejbca.sh ca changecatoken son:

certSignKey=myECCKey
crlSignKey=myECCKey
defaultKey= default

Comandos útiles de Luna

A continuación se enumeran comandos nativos útiles de Luna cmu.

Para enumerar objetos y sus identificadores:

. /cmu list -display=index,handle,class,keyType,label

Si ha creado claves con comandos nativos o claves importadas, probablemente no exista ningún objeto de certificado, como lo requiere el proveedor PKCS#11 de Java. Para crear un certificado autofirmado que haga referencia al identificador privado, ejecute:

. /cmu selfSign -privatehandle=87 -CN= "caSign00001" -startDate=20020101
-endDate=20451231 -serialNum=0133337f

Tenga en cuenta que 87 debe reemplazarse con el identificador de la clave privada que se encuentra al ejecutar el comando de lista.