Firma con código Java.
Imprima este artículo
Actualizado el:
May 26, 2015 1:24 PM
Se requieren varias herramientas para agrupar y firmar el código Java, incluyendo keytool, jar y jarsigner. Empezando con JDK 5.0, jarsigner puede generar firmas que incluyen un sello de tiempo, permitiendo validez que se firmó el archivo JAR, así como también que el certificado con firma codificada esté aún válida.
Acercamiento 1 – Solicitar un nuevo certificado con firma codificada
- Si es necesario, descargue JDK desde el siguiente vínculo:
http://java.sun.com/javase/downloads/index.jsp - Solicite un certificado con firma codificada de Starfield Technologies.
- Cree un nuevo almacén de clave. Es un lugar en el cual se almacenan los certificados de seguridad. Este ejemplo creará un almacén personal de clave codesignstore, solo para usarse para un certificado con firma codificada y la clave privada asociada.
keytool -genkey -alias codesigncert -keypass <yourkeypwd> -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass <yourstorepwd>
- Cree una Solicitud para firma de certificado (CSR, por sus siglas en inglés). Se creará y se almacenará una clave privada codesignstore. Un archivo CSR llamado mycsr.pem, se creará en el directorio actual de trabajo.
keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
- Compre un certificado con firma codificada.
- Haga clic en el crédito del certificado con firma codificada en My Account. Esto lo llevará a la aplicación de internet Secure Certificate Services Account Management de Starfield. El método generador de CSR deberá cambiarse a manual en la forma de la solicitud para que el campo CSR sea visible.
- Envíe una CSR como parte de una solicitud con firma codificada.
- Después de abrir el archivo mycsr.pem en un editor, copie y coloque todo el contenido del archivo (incluyendo las líneas que contienen BEGIN NEW CERTIFICATE REQUEST y END NEW CERTIFICATE REQUEST) dentro de la sección correspondiente de la forma de solicitud con firma codificada.
- Se verificará la información de compañía que haya proporcionado. La Autoridad de Registro (RA, por sus siglas en inglés) puede contactarle para ofrecerle una información adicional, si se requiere.
- Una vez que se haya emitido el certificado con firma codificada, usted recibirá un mensaje por correo electrónico con un vínculo para descargar el archivo del certificado y cualquier certificado intermedio asociado.
- Cree un nuevo almacén de clave. Es un lugar en el cual se almacenan los certificados de seguridad. Este ejemplo creará un almacén personal de clave codesignstore, solo para usarse para un certificado con firma codificada y la clave privada asociada.
- Instale el certificado con firma codificada en el mismo almacén de clave creado anteriormente. El siguiente ejemplo supone que el archivo de certificado con firma codificada sea mycert.spc. El archivo del certificado supone estar en la carpeta de trabajo actual y en formato PKCS#7.
keytool -import -trustcacerts -keystore codesignstore -storepass <yourstorepwd> -alias codesigncert -file mycert.spc
- Cree un archivo JAR en los archivos clase Java, usando la herramienta jar
jar cvf myapp.jar myapp.class
- codesignstore es un alias para el almacén de la clave la cual contiene el certificado con firma codificada, la clave privada y todos los demás certificados en la cadena.
- El nombre del archivo de entrada es myapp.jar y será reemplazado por la versión firmada del archivo. Use la opción de línea del comando -signedjar para especificar la separación de los nombres en los archivos de entrada y salida.
- codesigncert es un alias para la clave privada en el almacén de la clave.
jarsigner -verbose -keystore codesignstore -storepass <yourstorepwd> -keypass <yourkeypwd> -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert - Firme el archivo JAR usando jarsigner, con el certificado con firma codificada y la clave privada
jarsigner -verbose -keystore codesignstore -storepass <yourstorepwd> -keypass <yourkeypwd> myapp.jar codesigncert
- Verifique el archivo JAR firmado
jarsigner -verify -verbose -certs myapp.jar
- Distribuya el código
Acercamiento 2 – Use el archivo existente PKCS#12, que contiene tanto el certificado con firma codificada como la clave privada
- Si es necesario, descargue JDK desde el siguiente vínculo:
http://java.sun.com/javase/downloads/index.jsp - Verifique que el archivo PFX/P12 puede usarse con jarsigner. Ejecute el siguiente comando, el nombre alias requerido en el paso 5 aparecerá cerca de la parte superior de la salida:
keytool -list -storetype pkcs12 -keystore mycert.pfx -v
- Cree un archivo JAR en los archivos clase Java, usando la herramienta jar:
jar cvf myapp.jar myapp.class
- Firme el archivo JAR usando jarsigner, con el certificado con firma codificada y la clave privada:
jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
- mycert.pfx es la ruta completa para el archivo PFX/P12 que contiene el certificado con firma codificada y la clave privada. El archivo también deberá incluir todos los certificados intermedios.
- aliasname aparecerá en la salida del paso 2, cerca de la parte superior. Si el archivo PFX/P12 fue exportado desde Windows, el nombre alias será GUID.
- Al ser requerida, ingrese la contraseña asociada con la clave privada en el archivo PFX/P12. También podría incluir la opción -storepass para especificar la contraseña en la línea de comando.
- El archivo sin firma de entrada es myapp.jar y será reemplazado con la versión firmada del archivo. Use la opción de la línea del comando -signedjar para especificar nombres de archivos con entradas y salidas separadas.
jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname" - Verifique el archivo JAR firmado
jarsigner -verify -verbose -certs myapp.jar
- Distribuya el código
Vínculos
- Documentos Sun JDK 6 jarsigner, solo en inglés
- Documentos para sellado de tiempo Sun JDK 6, solo en inglés
- Tareas SignJar usando el comando jarsigner, solo en inglés