Comandos de Jarsigner
Al utilizar los comandos de Jarsigner en este tema, asegúrese de utilizar los indicadores de comandos descritos en Prerequisites for Keytool and Jarsigner.
Firma de un archivo Jar con una clave
Esta operación firma un archivo JAR con una clave. El comando se ejecuta con jarsigner con JCE.
Sintaxis de comandos:
jarsigner \
-J-cp -J<dedicated_kms_jce_jar_path> \
-J-Djava.security.properties=<java_security_override_file>
-keystore <local-keystore-name>.dkms -storepass <example-password> -storetype DKKS -keypass <example-password> \
-signedjar <signed-jar-name> \
-digestalg <digest-algorithm> -sigalg <signature-algorithm> -certs <jar-to-be-signed> <hsm-key-alias>
Si recibe un mensaje de advertencia que indica "The signer's certificate chain is invalid. Reason: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested targeThe signer's certificate chain is invalid
", el almacén de claves local carece de un certificado firmado.
Puede resolver un error de cadena de certificados con las siguientes operaciones:
-
Utilice el programa keytool para generar una CSR correspondiente a la clave en el HSM.
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -certreq \ -alias <example-alias> \ -file <CSR-stored-file>.csr \ -keyalg <key-algorithm> -keysize <key-size> -sigalg <signature-algorithm> \ -dname <example-distinguished-name> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \
Tenga en cuenta los siguientes puntos:
-certreq
se utiliza para generar una CSR.-alias
indica el alias de la clave especificada. Especificando este alias, si la clave no existe en el almacén de claves, el almacén de claves DKKS busca en el HSM una etiqueta que coincida con este alias.-keyalg rsa -keysize 4096
especifica el algoritmo y el tamaño de clave para el par de claves-sigalg sha512withrsa -dname
proporciona los detalles de la CSR
-
Utilice openssl para crear un nuevo certificado local autofirmado ca X.509 (archivo .crt) y una clave privada RSA (archivo .pem).
openssl req -x509 -newkey rsa:4096 -sha512 -nodes \ -out <local-ca-crt>.crt \ -outform pem -keyout <local-ca-pem>.pem \ -subj /C=US/ST=CA/L=SanJose/O=ExampleCA/OU=Signing/CN=exampleca.com
-
Inserte el certificado de propietario de CA en el almacén de claves.
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -importcert -noprompt \ -alias <local-ca-cert-alias> \ -file <local-ca-crt>.crt \ -keypass <example-password> -keystore <keystore-name>.dkms -storepass <example-password> -storetype DKKS \
Tenga en cuenta lo siguiente
-importcert
se utiliza para importar un certificado-noprompt
indica al programa que no utilice peticiones de datos-alias
especifica el alias al que se asignará el certificado de CA-file
es el archivo para el certificado-keypass
define una contraseña para la clave
-
Muestre el certificado para asegurarse de que el certificado CA local está en el almacén de claves:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -list \ -alias <local-ca-cert-alias> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \
El comando devuelve una salida similar a la siguiente:
Your keystore contains 1 entry
-
Con openssl, cree un certificado X.509 con la CSR generada y la CCR local. A continuación, defina el número de serie del nuevo certificado:
openssl x509 -req -days 365 \ -in <CSR-stored-file>.csr \ -CA <local-ca-crt>.crt \ -CAkey <local-ca-pem>.pem \ -set_serial <example-serial-number> \ -out <output-crt>.crt
-
Con keytool, importe el archivo <output-crt>.crt al almacén de claves:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -importcert -noprompt \ -alias <output-crt-alias> \ -file <output-crt>.crt \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \
-
Confirme que el certificado se ha importado correctamente:
keytool \ -J-cp -J<dedicated_kms_jce_jar_path> \ -list \ -alias <output-crt-alias> \ -keypass <example-password> -keystore <keystore-name> -storepass <example-password> -storetype DKKS \
El programa devuelve una salida similar a la siguiente:
Your keystore contains 1 entry
La firma de un archivo jar con una nueva clave garantiza que la operación de firma no genere un error de cadena de certificados, ya que el certificado de la nueva clave se agrega al almacén de claves local durante la creación. Utilice las instrucciones de Generate Key Pair para crear una nueva clave con la herramienta de claves.
Verificación de los Detalles de Firma del Archivo JAR
Utilice el indicador -verify
para verificar los detalles de firma de un archivo JAR firmado, incluida la clave que se ha utilizado para firmar el archivo. El comando se ejecuta con jarsigner con JCE.
Sintaxis de comandos:
jarsigner \
-J-cp -J<dedicated_kms_jce_jar_path> \
-verify \
-keystore <local_keystore><local-keystore-name>.dkms -storepass <example-password> -storetype DKKS -keypass <example-password> \
-certs <signed-jar-name> <example-key-alias>