Firma de código Java: Generar una CSR

A partir de enero de 2014, todas las aplicaciones Java ejecutadas en navegadores comenzaron a requerir certificados de firma de código. Después de comprar un certificado de firma de código, deberás firmar el código Java.

Se requieren varias herramientas para empaquetar y firmar código Java, incluyendo keytool, jar y jarsigner. Empezando con JDK 5.0, jarsigner puede generar firmas que incluyen un sello de tiempo, permitiendo validar que el archivo JAR se firmó mientras el certificado de firma de código aún era válido.

Enfoque 1 – Solicita un nuevo certificado de firma de código

  1. Si fuera necesario, descarga JDK desde el siguiente enlace:
    http://java.sun.com/javase/downloads/index.jsp
  2. Solicita un certificado de firma de código de GoDaddy.
    • Crea un nuevo depósito de claves. Es un lugar donde se almacenan los certificados de seguridad. Este ejemplo creará un depósito de claves personalizado "codesignstore" para usarse exclusivamente con un certificado de firma de código y la correspondiente clave privada.
      keytool -genkey -alias codesigncert -keypass -keyalg RSA -keysize 2048 -dname "CN=displayname,O=companyname,C=US,ST=state,L=city" -keystore codesignstore -storepass
    • Crea una solicitud para firma de certificado (CSR). Se creará y se almacenará una clave privada en el depósito de claves "codesignstore". Se creará un archivo CSR denominado "mycsr.pem" en el directorio actual de trabajo.
      keytool -certreq -v -alias codesigncert -file mycsr.pem -keystore codesignstore
    • Compra un certificado de firma de código.
    • Haz clic en el crédito del certificado de firma de código en "Mi cuenta". Esto te llevará a la aplicación web de GoDaddy Secure Certificate Services Account Management. El método generador de CSR deberá configurarse en manual en el formulario de solicitud para que el campo CSR esté visible.
    • Envía una CSR como parte de la solicitud de firma de código.
      • Después de abrir el archivo "mycsr.pem" en un editor, copia y pega todo el contenido del archivo (incluyendo las líneas que contengan "BEGIN NEW CERTIFICATE REQUEST" y "END NEW CERTIFICATE REQUEST") en la sección correspondiente del formulario de solicitud de firma de código.
    • Se verificará la información de la empresa que hayas proporcionado. Puede que la Autoridad de registro (RA) se contacte contigo para ofrecerte información adicional, si fuera necesario.
    • Una vez que se haya emitido el certificado de firma de código, recibirás un mensaje por correo electrónico con un enlace para descargar el archivo del certificado y cualquier certificado intermedio asociado.
  3. Instala el certificado de firma de código en el mismo depósito de claves creado anteriormente. El siguiente ejemplo supone que el nombre del archivo de certificado de firma de código es "mycert.cer". El archivo del certificado supone estar en la carpeta de trabajo actual y con el formato PKCS#7.
    keytool -import -trustcacerts -keystore codesignstore -storepass -alias codesigncert -file mycert.cer
  4. Firma el archivo JAR con jarsigner, usando el certificado de firma de código y la clave privada
    jarsigner -verbose -keystore codesignstore -storepass -keypass myapp.jar codesigncert
    • 'codesignstore' es un alias para el depósito de claves donde se encuentra el certificado de firma de código, la clave privada y todos los demás certificados en la cadena.
    • El nombre de archivo de entrada sin firmar es "myapp.jar" y se sobrescribirá con la versión firmada del archivo. Utiliza la opción de la línea de comandos "-signedjar" para especificar nombres de archivos de entrada y salida por separado.
    • 'codesigncert' es un alias para la clave privada en el depósito de claves.
    El siguiente ejemplo agrega opciones de sello de tiempo al mismo ejemplo presentado arriba.
    jarsigner -verbose -keystore codesignstore -storepass -keypass -tsa http://tsa.starfieldtech.com/ myapp.jar codesigncert
  5. Verifica el archivo JAR firmado
    jarsigner -verify -verbose -certs myapp.jar
  6. Distribuye el código

Enfoque 2 – Utiliza el archivo existente PKCS#12, que contiene tanto el certificado de firma de código como la clave privada

  1. Si fuera necesario, descarga JDK desde el siguiente enlace:
    http://java.sun.com/javase/downloads/index.jsp
  2. Verifica que el archivo PFX/P12 pueda usarse con jarsigner. Ejecuta 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
  3. Crea un archivo JAR a partir de los archivos de clase Java, utilizando la herramienta jar:
    jar cvf myapp.jar myapp.class
  4. Firma el archivo JAR mediante jarsigner, utilizando el certificado de firma de código y la clave privada:
    jarsigner -storetype pkcs12 -keystore mycert.pfx myapp.jar "aliasname"
    • "mycert.pfx" es la ruta completa del archivo PFX/P12 que contiene el certificado de firma de código y la clave privada. El archivo también debiera incluir todos los certificados intermedios.
    • "aliasname" aparece en la salida del paso 2, cerca de la parte superior. Si el archivo PFX/P12 se exportó desde Windows, el nombre de alias de hecho será un GUID.
    • Cuando se solicite, ingresa la contraseña asociada con la clave privada en el archivo PFX/P12. También puedes incluir la opción "-storepass" para especificar la contraseña en la línea de comandos.
    • El nombre de archivo de entrada sin firmar es "myapp.jar" y se sobrescribirá con la versión firmada del archivo. Utiliza la opción de la línea de comandos "-signedjar" para especificar nombres de archivos de entrada y salida por separado.
    El siguiente ejemplo agrega opciones de sello de tiempo al mismo ejemplo presentado arriba:
    jarsigner -storetype pkcs12 -keystore mycert.pfx -tsa http://tsa.starfieldtech.com/ myapp.jar "aliasname"
  5. Verifica el archivo JAR firmado
    jarsigner -verify -verbose -certs myapp.jar
  6. Distribuye el código

Enlaces


¿Este artículo fue útil?
Gracias por tus comentarios. Para hablar con un representante de servicio al cliente, usa el número de teléfono de asistencia técnica o la opción de chat que aparece más arriba.
¡Nos complace haber ayudado! ¿Hay algo más que podamos hacer por ti?
Lo sentimos. Cuéntanos lo que te resultaba confuso o por qué la solución no resolvió tu problema.