Ir al contenido

Firmante del tarro

Información general

Esta guía del usuario está integrada con el jarsigner del SDK de Java se ha preparado utilizando las versiones de software y firmware que se indican a continuación: - SO Windows 10 (Español) - SO Linux Debian 11 - JDK: 8 - Firmware HSM: 5.0.26.0 (o superior) - Cliente HSM: 4.7.30 (o superior)

Requisitos

  1. Conectividad con el HSM (puerto TCP 4433).
  2. Software cliente HSM instalado (véase el tema Instalación).
  3. Servicio HSM iniciado.
  4. Credenciales de la partición HSM donde se creará o utilizará la clave privada.

Firma de código Java mediante HSM

Advertencia

En los siguientes pasos de importación, los nombres de la clave, el certificado y la cadena en el HSM deben seguir las reglas de nomenclatura definidas en el tema Aplicación. Por ejemplo clave, certificado_clave e llavero.

Firmar con jarsigner El uso del HSM se realiza a través de la API de integración JCA/JCE. Por tanto, el paso inicial es configurar la API de integración para conectar con el HSM. Para obtener más información sobre la API JCA/JCE de HSM, consulte el tema JCA/JCE.

  1. Importa o genera la clave en la partición elegida.

  2. Importe el certificado y, opcionalmente, la cadena PKCS#7 de la Autoridad de Certificación (CA) que emitió el certificado a la partición elegida.

  3. Generar el fichero de configuración JCA mediante el programa java jcaconfig.jar. Este programa se instala junto con el software cliente HSM. Para obtener más información sobre la utilidad, consulte el tema Configuración. Ubicación por defecto de los programas y bibliotecas Java de HSM es la siguiente.

    • Ventanas: C:Archivos de programaDinamo Networks\HSM Dinamo\sdk\java
    • Linux: /opt/dinamo

    El nombre del archivo de configuración generado debe ser Configuración.ND.

    java -jar jca_config.jar -addr <HSM_IP> -usr <HSM_PARTITION> -pwd <HSM_PARTITION_PASSWORD> -file Configuration.ND
    

    Donde - <HSM_IP>Dirección IP del HSM - <HSM_PARTITION>Partición HSM - <HSM_PARTITION_PASSWORD>Contraseña de la partición

  4. Copie el archivo de configuración generado en la misma carpeta donde ejecutará el comando jarsigner.

  5. Copiar los archivos ndjca.jar e tacndjavalib.jar a la carpeta de extensiones de Java. Normalmente esta carpeta tiene la siguiente ruta, donde <VERSION> es la versión del JDK instalada.

    • Ventanas: C:\Program Files\Java\jdk<VERSION>\jre\lib\ext
    • Linux: /usr/local/openjdk-<VERSION>/jre/lib/ext/
  6. Ejecute el comando jarsigner con los siguientes parámetros.

    jarsigner -tsa http://timestamp.digicert.com -providerName ND -storetype TAC -providerClass br.com.trueaccess.provider.netdfence.ND -keystore /dev/null -storepass <HSM_PARTITION_PASSWORD> <JAR_APPLICATION> key`
    

    Donde - <HSM_PARTITION_PASSWORD>: contraseña de partición - <JAR_APPLICATION>Aplicación Java (.jar) que tendrá su código firmado. - clavees el nombre de la clave privada que se ha generado o importado en el HSM.

    La firma de un ACT (Autoridad de Sellado de Tiempo), con la adición de marca de tiempo es opcional (parámetro -tsa).

Verificación

  1. La comprobación de un archivo .jar firmado también se realiza con el programa jarsigner:

    jarsigner -verify -verbose app.jar
    
    s        1782 Wed Aug 31 18:04:42 UTC 2022 META-INF/MANIFEST.MF
            1876 Wed Aug 31 18:04:42 UTC 2022 META-INF/KEY.SF
            12143 Wed Aug 31 18:04:42 UTC 2022 META-INF/KEY.RSA
                0 Tue Aug 30 21:50:40 UTC 2022 META-INF/
                0 Tue Aug 30 21:50:40 UTC 2022 br/
                0 Tue Aug 30 21:50:40 UTC 2022 br/com/
                0 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/
                0 Tue Aug 30 21:50:40 UTC 2022 com/
                0 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/
    sm        170 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/NetDFence.class
    sm       2265 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/TacAccessToken.class
    sm       1252 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/TacException.class
    sm      60370 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/TacNDJavaLib.class
    sm       2360 Tue Aug 30 21:50:40 UTC 2022 br/com/trueaccess/TacSPBException.class
    sm      34425 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/Dinamo.class
    sm        718 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/HSMAllInfo.class
    sm        631 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/HSMCounterInfo.class
    sm        413 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/HSMDiskInfo.class
    sm        490 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/HSMStatInfo.class
    sm        576 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/JwsComponents.class
    sm       2006 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/PIXHTTPReqDetails.class
    sm        401 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/PIXResponse.class
    sm       1073 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/SVaultGenTokenInfo.class
    sm        514 Tue Aug 30 21:50:40 UTC 2022 com/dinamonetworks/SVaultGenTokenResponse.class
    
      s = signature was verified
      m = entry is listed in manifest
      k = at least one certificate was found in keystore
      i = at least one certificate was found in identity scope
    
    - Signed by "CN=Dinamo Networks, O=Dinamo Networks, ST=Distrito Federal, C=BR"
        Digest algorithm: SHA-256
        Signature algorithm: SHA256withRSA, 3072-bit key
      Timestamped by "CN=DigiCert Timestamp 2022 - 2, O="DigiCert, Inc.", C=US" on Wed Aug 31 18:04:42 UTC 2022
        Timestamp digest algorithm: SHA-256
        Timestamp signature algorithm: SHA256withRSA, 4096-bit key
    
    jar verified.
    
    The signer certificate will expire on 2023-03-14.
    The timestamp will expire on 2031-11-09.