Firmar Archivos JAR con el Comando CLI de Jarsigner

Un Certificado Firma de Código con Validación Extendida de DigiCert se adapta perfectamente a la firma de los archivos JAR de Java. La firma digital proporcionada por un Certificado Firma de Código con EV ofrece a su clientes la confianza en su código que acaban de descargar. Esto ayuda a mejorar la adopción de las aplicaciones Java, si a los usuarios se les da una advertencia de que su código está firmado por un editor desconocido, muchos simplemente cancelarán la instalación.

Junto con un proceso de validación más estricta, Certificados Firma de Código con EV ofrecen una protección superior, en forma de una autenticación HSM o de dos factores con un token de hardware USB protegido por contraseña.

¡Comprar un Certificado Firma de Código con EV Hoy!

Comprar
  1. Crear un archivo denominado eToken.cfg y que contiene las siguientes dos líneas, y guardarlo en la carpeta bin del JDK
    (Por ejemplo, C:\Program Files (x86)\Java\jdk1.7.0_05\bin)

    nombre=eToken
    librería=c:\WINDOWS\system32\eTPKCS11.dll
  2. En el Explorador, navegar hasta la carpeta donde está instalado el JDK y mantener pulsado Shift mientras hacer clic derecho, y a continuación elijir 'Abrir ventana de comandos aquí' ('Open command window here')

    Abrir el símbolo del sistema en el Explorador de Windows

  3. En el Command Prompt, ejecutar el comando siguiente en una sola línea para conseguir el alias del certificado:

    keytool -list -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./etoken.cfg

    Se muestra como CertificateAlias, PrivateKeyEntry.

    A continuación, ejecutar la siguiente línea para firmar su código:

    jarsigner -verbose -keystore NONE -storetype PKCS11 -providerClass sun.security.pkcs11.SunPKCS11 -providerArg ./eToken.cfg "C:\path\to\your-widget.jar" "CertificateAlias"

    Usted debe ver una pantalla similar a la de abajo si el comando se ejecutó correctamente.

    Java Firma de Código con EV utilizando keytool y jarsigner

Solución de Problemas

El error de "error jarsigner: java.lang.ClassNotFoundException: sun.security.pkcs11.SunPKCS11" se produce cuando se utiliza una versión de 64 bits del JDK. Descargar y utilizar una versión de 32 bits del JDK para eliminar este error.

Si se obtiene el error: "jarsigner error: java.lang.RuntimeException: keystore load: load failed" es posible que haya introducido una contraseña incorrecta.

Si se obtiene el error: "keytool error: java.security.KeyStoreException: PKCS11 not found" el archivo de configuración no se cargó correctamente o el archivo de configuración apunta a un archivo que no existe. (Por ejemplo, librería=c:\WINDOWS\system32\eTPKCS11.dll) lo que podría suceder si los controladores de dispositivo del token no se instalan en el ordenador.

Si después de ejecutar el comando keytool o jarsigner el programa sólo parece hacer una pausa y no pide una contraseña, desenchufar el aparato y volver a conectarlo a continuación. Intentar a ejecutar el comando de nuevo y debería funcionar.