## 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):
> - jar documentation with Windows examples
> - jar documentation with Solaris examples
> - jarsigner documentation with Windows examples
> - jarsigner documentation with Solaris examples
> - keytool documentation with Windows examples
> - keytool documentation with Solaris examples
> - policytool documentation with Windows examples
> - policytool documentation with Solaris examples

Ozito