Firma de Código en Java

13 oct 2022

Firma de Código en Java

Introducción

Este artículo será el artículo predeterminado después de la implementación de los nuevos Requisitos Mínimos para la Firma de Código el 1 de febrero de 2017.

Prerrequisitos

 Esta guía asume que usted ha realizado y/o tiene acceso a lo siguiente:

  • Descargó e instaló su certificado en su token de seguridad. 
  • Instalado el JDK de Java.
  • Es posible que se necesiten derechos administrativos en función de los permisos establecidos en la carpeta bin de Java JDK.

Configuración de la Firma

  1. Para permitir que el JDK acceda al token de seguridad, primero deberá crear un archivo de configuración. Abra cualquier editor de texto sin formato y cree un archivo denominado eToken.cfg. El archivo debe contener 2, posiblemente 3, líneas:
    name=eToken
    library=c:\WINDOWS\system32\eTPKCS11.dll
    slot=3 

    Nota: El número de slot predeterminado cuando no se especifica es 0. SafeNet eToken 5100 se asignará automáticamente al slot 0, por lo tanto, no habrá necesidad de la línea de slot en el archivo de .cfg. Sin embargo, es posible que sea necesario cambiar esto en función del número de lectores de eTokens/SmartCard instalados. El número de slot predeterminado para SafeNet Ikey 4000 es el slot 3. La línea de slot será necesaria cuando se utilice un SafeNet iKey 4000.
  2. Guarde este archivo en la carpeta JDK bin, por defecto es:

    C:\Archivos del Programa (x86)\Java\jdk1.7.0_67\bin 
  3. Abra el símbolo del sistema: Iniciar > Ejecutar > cmd
  4. Navegue a su carpeta Java JDK Bin:

    cd C:\Archivos del Programa (x86)\Java\jdk1.7.0_67\bin 
  5. Para usar el token para firmar, deberá encontrar el alias de su llave privada. Esto le permitirá hacer referencia al certificado adecuado al firmar. Ejecute el siguiente comando desde la carpeta bin:

    keytool -list -keystore NONE -storetype PKCS11 -providerclass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg
    Ingrese la contraseña del almacén de llaves: "Su contraseña de token"

    Nota de error: Si recibe el siguiente error: "java.security.KeyStoreException: PKCS11 no encontrado" en este punto. Hay 2 problemas potenciales con la configuración:
    • Establezca el número de slot en cero en el archivo eToken.cfg (slot=0). Intente ejecutar la lista de comandos de nuevo, incrementando el número de slot en 1 con cada interacción del error. Eventualmente, debería recibir el mensaje Ingrese la Contraseña del Almacén de Llaves que aceptará su contraseña de SafeNet Token. *Consulte: Configuración de la firma Paso 1.
    • Los controladores safeNet no están instalados correctamente. Asegúrese de que se instalan los controladores adecuados.
  6. La salida se compone del alias de llave, el tipo de llave y la huella digital del certificado. Necesitaremos el alias del Certificado de Firma de Código para realmente firmar el archivo.

    le-d0e453de-66db-414a-8fa8-0a07cfad66b5, PrivateKeyEntry, Certificate fingerprint (SHA1): 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 
  7. Si hay más de un certificado en su token, es posible que deba discernir qué certificado usaremos. Abra el cliente de autenticación de Safenet, presione el icono de engranaje en la parte superior:

    desk1.jpg
  8. Busque el certificado de firma de código de GlobalSign instalado y haga doble clic en él. Esto mostrará los detalles del certificado. Seleccione la pestaña Detalles, desplácese hasta la parte inferior y la huella digital estará allí:

     desk2.jpg
  9. La huella digital del certificado deberá coincidir con el alias adecuado en su salida. En este caso será la primera entrada:

    le-d0e453de-66db-414a-8fa8-0a07cfad66b5, PrivateKeyEntry, Certificate fingerprint (SHA1): 00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00 
  10. Copie el alias (por ejemplo, le-d0e453de-66db-414a-8fa8-0a07cfad66b5) para usarlo en el siguiente comando.

Firmar un Archivo .jar

  1. Ahora que hemos accedido con éxito al token y recibido nuestro alias de certificados, podemos firmar el archivo .jar. Deberá colocar el archivo .jar que está iniciando sesión en el directorio bin.
  2. En la línea de comandos, navegue hasta el directorio bin del SDK de Java (por ejemplo, C:Archivos del Programa (x86)Javajdk1.7.0_67bin)

    El comando utilizado para firmar es:
    jarsigner -keystore NONE -storetype PKCS11 -tsa http://timestamp.globalsign.com/tsa/r6advanced1 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg eToken.cfg test.jar "le-d0e453de-66db-414a-8fa8-0a07cfad66b5" 

Nota: El sello de tiempo de su código es extremadamente importante y es muy recomendable para cada pieza de código que firme. Esta marca de tiempo permitirá que el archivo que firme siga siendo válido mucho después de que el propio certificado haya caducado.

Errores comunes

  1. Advertencia: La cadena de certificados del firmante no está validada.
    Deberá importar el Certificado Intermedio de Firma de Código Estándar de GlobalSign en su token para garantizar que las cadenas de firma se realicen correctamente. Nota: Debe importar el certificado intermedio correspondiente de acuerdo con su tipo de certificado

Related Articles

Alertas de Sistema de GlobalSign

Ver alertas recientes del sistema.

Ver Alertas

Atlas Discovery

Escanee sus puntos finales (endpoints) para localizar todos sus Certificados.

Registrarse

Prueba de Configuración para SSL

Verifique la instalación de su certificado para detectar problemas y vulnerabilidades de SSL.

Contacte a Soporte