Sumario de Herramientas

Las herramientas keytool, jar, jarsigner, y policytool están disponibles en el JDK 1.2 para facilitar varias operaciones relacionadas con la seguridad. (Observa que jar también estaba disponible en el JDK 1.1.)

Las herramientas keytool y jarsigner reemplazan a javakey, que fue una herramienta interina introducida en JDK 1.1. Estas nuevas herramientas proporcionan más características que javakey, incluyendo la habilidad de proteger el keystore y las claves privadas con password, y la habilidad de verificar ficheros JAR firmados, además de generarlos. La nueva arquitectura del keystore reemplaza la base de datos de identidades que javakey creaba y manejaba. Es posible importar información desde una base de datos de identidades en un keystore, mediante un comando keytool.

Key and Certificate Management Tool (keytool)

Se usa para crear parejas de claves pública/privada, emitir peticiones de certificados (que nosotros enviamos a la Autoridad de Certificación apropiada), importar respuestas de certificados (obtenidos de la Autoridad de Certificación), designar claves públicas pertenecientes a terceras partes como verdaderos, y manejar nuestro keystore.

Las claves y certificados se usan para firmar digitalmente nuestras aplicaciones y applets . Un keystore es una base de datos protegida que contiene claves y certificados. Los accesos al keystore están protegidos por una password (definida en el momento de su creación, por la persona que la creo y sólo modificable introduciendo la password actual). Además, cada clave privada en el keystore está protegida por su propia password.

El formato básico para el comando keytool es:

keytool opciones de comando
Comandos de ejemplo:
  • -certreq - Genera una "Certificate Signing Request (CSR)" para enviarla a la Autoridad de Certificacion (CA) para que autentifiquen nuestra clave pública.
  • -delete - Elimina la entrada especifica.
  • -export - Exporta a un fichero el certificado de la clave pública de la entrad especificada.
  • -genkey - Crea una entrada en el keystore conteniendo una clave privada recientemente generada y su correspondiente clave pública. Esta última se sitúa en un certificado auto-firmado.
  • -import - Importa un certificado para ser tratado como "certificado verdadero" o una respuesta de certificado devuelto por una CA. Esto último será usado para reemplazar el certificado auto-firmado.
  • -identitydb - Importa información desde una base de datos de identidades del estilo JDK 1.1.x.
  • -keypasswd - Asigna una password a la clave privada en una entrada.
  • -list - Lista las entradas del keystore.
  • -printcert - Imprime la información de un fichero especificado que contiene un certificado.
  • -storepasswd - Asigna una password al keystore.
Cada comando tiene un número de opciones, algunas de las cuales son obligatorias, y algunas que tienen valores por defecto so no se especifican.

Hay tres opciones que podrían aparecer para todos los comandos de operación de un keystore:

  • -storetype storetype - especifica el tipo de keystore a ejemplarizar.
  • -keystore keystore El nombre (y opcionalment el path) del keystore.
  • -storepass storepass - especifica la password que se usará para protefer la integridad del keystore.
  • -v storepass - esto especifica la salida verbosa.

Otras opciones son:

  • -alias aliasName - especifica el alias usado para referirse a una entrada particular del keystore.
  • -validity numDays - especifica el tiempo durant el cual el certificado deberá considerarse válido (por defecto:90 días).
  • -keypass keypass - especifica la password usada para protefer la integridad de la calve privada de una entrada del keystore.

Puedes ver ejemplos de uso de keytool en las lecciones Firmar Código y Concederle Permisos y Intercambiar Ficheros.

Herramienta Java Archive (jar)

Esta herramienta se utiliza para crear ficheros JAR (llamándola usando el comando jar).

El formato de fichero JAR, nos permite juntar varios ficheros en un único archivo. Típicamente un fichero JAR contendrá los ficheros class y los recursos auxiliares asociados con los applets y las aplicaciones. Cuando queremos "firmar digitalmente" un código, se usa la herramienta jar para situarlo en un fichero JAR y la herramienta jarsigner para firmarlos (después de generar e importar las claves asociadas dentro del keystore usando keytool).

El formato básico delcomando para crear un fichero JAR es:

jar cf jar-file input-file(s)
Vemos las opciones y argumentos usados en este comando:
  • La opción c indica que queremos crear un fichero JAR.
  • La opción f indica que queremos que la salida vaya a un fichero en vez de a stdout.
  • jar-file es el nombre que queremso para el fichero JAR resultante. Podemos usar cualquier nombre. Por convención, los ficheros JAR tienen la extensión .jar, aunque no es obligatorio.
  • El argumento input-file(s) es una lista separada por espacios de uno o más ficheros que queremos situar dentro del fichero JAR. Este argumento puede contener el símbolo de asterisco *. Si alguno de los "input-files" son directorios, el contenido de dichos directorios se añadirá al fichero JAR, de forma recursiva.

Las opciones c y f pueden aparecer en cualquier orden, per no debe haber espacio entre ellas.

Podemos añadir otras opciones a cf del comando básico. Una que nosotros utilizaremos en nuestras lecciones es la opción v:

  • v - produce salida verbose sobre stdout mientras se construye el fichero JAR. La salida verbosa escribe el nombre de cada fichero que se añade al fichero JAR.

Puedes ver la sección Ficheros JAR para ver más detalles sobre la herramienta jar. También puedes ver las lecciones Firmar Código y Concederle Permisos e Intercambiar Ficheros.

Herramienta de Firma y Verificación JAR (jarsigner)

Esta herramienta s eusa para firmar ficheros JAR o para verificar las firmas de ficheros JAR firmados.

La herramienta jarsigner accede a un keystore que es creado y manejado por keytool, cuando necesita encontrar la clav eprivada y su cadena de certificados asociada para usarlos cuando se firma el fichero JAR. Como los accesos al keystore y a la clave privada están protegidos por passwords, sólo la gente que conozca las passwords puede acceder a ellas y usarlas para firmar el fichero JAR. La herramienta jarsigner pide la passwords necesarias.

La forma básica del comando para firmar ficheros JAR es:

jarsigner options jar-file alias
En este comando:
  • options son especificaciones opcionales, algunas de las cuales se describen abajo.
  • jar-file es el nombre (y path) del fichero JAR a firmar.
  • alias es el alias que identifica la clave privada que se va a utilizar para firmar el fichero JAR, y el certificado (o cadena de certificados) asociado.

La herramienta jarsigner nos pedirá las passwords del keystore y de la entrada referenciada por el alias.

Esta forma básica del comando asume que el keystore a usar está en un fichero llamado .keystore en nuestro directorio home. Sobreescribirá el fichero JAR original con el fichero JAR firmado.

En la práctica, querremos suar esté comando en conjunción con una o más de las siguientes opciones, que deben preceder al nombre jar-file:

  • -keystore url - especifica un keystore a usar si no queremos usar el fichero por defecto.
  • -storepass password - nos permite introducir la password del keystore en la línea de comandos en vez de que nos la pida.
  • -keypass password - nos permite introducir la password de la entrada del alias en la línea de comandos en vez de que nos la pida.
  • -signedjar file - especifica el nombre el fichero JAR a crear su no queremos que sobreescriba el fichero original.

Puedes ver la lección Empezando de la sección "Archivos JAR" para más información sobre esta herramienta, o puedes ver la lección Intercambiar ficheros para encontrar ejemplos que usan la herramienta jarsigner.

Policy Tool (policytool) GUI tool

Esta herramienta se usa para crear y modificar los ficheros de configuración de policía externa que define la polícia de seguridad de nuestra instalación.

Esta herramienta tiene un Interface Gráfico de Usuario, donde seleccionamos botones y otras opciones en vez de teclear comandos como en las otras herramientas. Puedes ver las lecciones Rápida Visión para Controlar Applets, Rápida Visión para Controlar Aplicaciones, y Firmar Código y Concederle Permisos para ver ejemplos del uso de esta herramienta.

Documentacón Online sobre Herramientas

En la site pública de Sun puedes encontrar la siguiente documentación sobre las herramientas de seguridad (en Inglés):

Ozito