Firma de Código de Validación Extendida en Java (con certificado en token)
28 abr 2023
Firma de Código de Validación Extendida en Java (con certificado en token)
Prerrequisitos
Esta guía asume que usted ya ha:
- Descargó e instaló su Certificado en su token de seguridad
- Instalado el JDK de Java.
- Es posible que se necesiten derechos administrativos según los permisos establecidos en la carpeta bin de Java JDK.
Configuración de Firma
- Para habilitar el JDK para acceder al token de seguridad, primero deberá crear un archivo de configuración. Abra cualquier editor de texto sin formato y cree un archivo llamado eToken.cfg. El archivo debe contener 2, posiblemente 3, líneas:
name=eToken
library=c:\WINDOWS\system32\eTPKCS11.dll
slot=3
Nota: El token predeterminado que proporciona GlobalSign es el eToken 5110. El número de ranura predeterminado cuando no se especifica es 0. SafeNet eToken 5110 se asignará automáticamente a la ranura 0, por lo que no será necesario para la línea de la ranura en el archivo .cfg. Sin embargo, es posible que esto deba cambiarse según la cantidad de lectores de eTokens / SmartCard instalados. El número de ranura predeterminado para SafeNet Ikey 4000 es la ranura 3. La línea de ranura será necesaria cuando se utilice SafeNet iKey 4000.
- Guarde este archivo en la carpeta bin de JDK, por defecto es:
C:\Program Files (x86)\Java\jdk1.7.0_67\bin
- Abrir el Command Prompt: Inicio > Ejecutar > cmd
- Navegue a la carpeta Bin de Java JDK:
cd C:\Program Files (x86)\Java\jdk1.7.0_67\bin
- 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:
- El número de ranura especificado no es la ranura correcta. Para encontrar la ranura adecuada, establezca el número de ranura en cero en su archivo eToken.cfg (ranura = 0). Intente ejecutar el comando de lista nuevamente, incrementando el número de ranura en 1 con cada iteración del error. Eventualmente, debería recibir el mensaje Ingrese la contraseña del almacén de claves que aceptará su frase de contraseña del token de SafeNet. *Consulte: Configuración de la firma, paso 1.
- Los controladores SafeNet no están instalados correctamente. Asegúrese de que estén instalados los controladores adecuados .
- 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 de Validación Extendida para 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
- Si hay más de un Certificado en su token, es posible que deba elegir que Certificado usaremos. Abra Safenet Authentication Client, presione el icono de engranaje en la parte superior:
- Busque su Certificado de Firma de Código de Validación Extendida de GlobalSign instalado y haga doble clic en él. Esto abrirá los detalles del certificado. Seleccione la pestaña Detalles, desplácese hasta la parte inferior y la Huella digital estará allí:
- Haga coincidir la huella digital del certificado 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
- Copie el alias (por ejemplo, le-d0e453de-66db-414a-8fa8-0a07cfad66b5) para usarlo en nuestro siguiente comando.
Firmar un archivo .jar
- 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.
- En la línea de comando, navegue hasta el directorio bin del SDK de Java (p. ej., C:\Program Files (x86)\Java\jdk1.7.0_67\bin)
El comando que se usa 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: La marca de tiempo de su código es extremadamente importante y se recomienda encarecidamente 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 Certificado haya caducado.
Errores Comunes
- Advertencia: la cadena de certificados del firmante no está validada.
Deberá importar el certificado intermedio de GlobalSign Extended Validation Code Signing CA - SHA256 - G2 en su token para garantizar que la firma se encadene correctamente.