P. 1
Java

Java

|Views: 3.379|Likes:
Publicado porUno Tercero

More info:

Published by: Uno Tercero on Feb 11, 2012
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, TXT or read online from Scribd
See more
See less

08/12/2013

pdf

text

original

El SDK de Java posee una utilidad muy poderosa que permite comprimir varias clases
en un archivo que posee extensión JAR. Normalmente se empaqueta toda una
aplicación en cada archivo JAR.
En el caso de las applets, se recomienda mucho su uso ya que reducen notablemente
la carga al ser archivos comprimidos. Además facilitan el mantenimiento de las applets
ya que hay que publicar un solo archivo.
Su uso es sencillo, hay que entender que un archivo JAR es un tipo especial de
paquete. El compilador del SDK entiende su uso, las applets no tienen problema
tampoco en usarlo e incluso se pueden colocar otros tipos de archivos (como imágenes,
audio,...) dentro del conjunto comprimido JAR y se pueden recuperar utilizando
getClass().getResource(rutaArchivo)
El programa jar del SDK es el que realiza esta operación. Pero casi todos los
entornos de programación poseen facilidades de creación de archivos JAR. Ejemplos:

jar cvf archivo.jar archivo1.class archivo2.class

Comprime las dos clases en un solo archivo

jar tvf archivo.jar

Lista el contenido del archivo jar

jar xvf archivo.jar

descomprime el archivo. Extrae su contenido

manifesto

Los archivos JAR incluso pueden incluir carpetas dentro e incluir un texto descriptivo
llamado manifiesto (manifesto). Gracias a este texto se le pueden dar funcionalidades
avanzadas a los archivos JAR. El manifiesto es un archivo de texto que contiene líneas

© Jorge Sánchez Asenjo’ 2004

241

que van colocadas en pares Nombre-Valor. Se encuentra dentro de la carpeta META-
INF
dentro de los archivos JAR.
Entre las indicaciones que se pueden utilizar están: el algoritmo de cifrado, nombre
de clases, creador del manifesto, clases importadas,...
Ejemplo:

Manifest-Version: 1.0
Created-By: NetBeans IDE
Specified-By: pruebaJAR/a1.jarContent

Name:H41.class
RevisionNumber:4.0

Name:H42.class
RevisionNumber:2.0

Más información en http://java.sun.com/j2se/1.3/docs/guide/jar/jar.html

uso de archivos JAR en las páginas web

Se realiza utilizando el atributo archive de la etiqueta applet:

<applet code=”reloj” archive=”utilidades.jar”>

Ejemplos:

1> Si tenemos en el paquete applets la página web y dentro un archivo JAR
que contiene el archivo class, Applet1.class

applets

páginaHTML

ap.jar

e

Applet1.class

<applet code=applets.Applet1.class archive=ap.jar>

Manual de Java

applets

242

2> La misma situación, pero ahora hay una carpeta llamada jars en la que se
encuentra el archivo jar:

applets

páginaHTML

ap.jar

e

Applet1.class

jars

<applet code=applets.Applet1.class archive=jars/ap.jar>

3> Ahora la página web se encuentra en una carpeta y el archivo jar en otra que
parten de la misma raíz

applets

páginaHTML

ap.jar

e

Applet1.class

jars

webs

<applet code=applets.Applet1.class archive=../jars/ap.jar>

el administrador de seguridad

Se trata del programa conocido como Security Manager. Está incluido dentro de los
navegadores y sirve para controlar las operaciones realizadas por las applets. Los
usuarios pueden configurarlo con lo que es imposible saber la configuración de
seguridad en cada ordenador.
En un caso normal este administrador prohíbe:
Leer y escribir archivos en el ordenador del usuario
Abrir conexiones de red hacia un ordenador distinto del que se utilizó para crear
el applet
No pueden ejecutar programas en el ordenador del usuario.

© Jorge Sánchez Asenjo’ 2004

243

applets firmados

Se trata de una posibilidad interesante. Permite autentificar al autor del applet y de esta
forma conseguir que haya applets de confianza a los que se les permite un acceso menos
restringido al sistema.

Esta autentificación se consigue por medio de una firma digital. Esta firma
autentifica al creador de la applet y así, si el usuario confía en ese creador, se podrán
realizar operaciones que, de otro modo, prohibiría el administrador de seguridad.
Las firmas se basan en un sistema de codificación de datos por clave pública, lo cual
significa que la firma en realidad es una clave pública que sirva para codificar nuestros
datos. Una segunda clave (privada) permitirá decodificarlos. El usuario receptor de la
applet recibe esa clave pública.
La cuestión es ¿cómo podemos estar seguros de que esa clave pertenece a quien dice
pertenecer? Es decir, cómo se verifica la autenticidad de la clave. Eso se realiza
mediante certificados de autenticidad (CA). Estos certificados son emitidos por una
entidad emisora que verifica que esa clave pertenece realmente a quien dice pertenecer.
Esto significa que la confianza se traspasa ahora a esta entidad.
Podría surgir la duda de si esa entidad es válida. El problema puede continuar
intentando verificar la identidad del CA, pero ahora las posibilidades son cada vez más
reducidas al haber menos claves a verificar.

certificados de sitio

Estos certificados se envían al navegador para validar las firmas de los archivos JAR.
Estos certificados se pueden guardar para asignarles más o menos privilegios cuando
utilicemos sus applets.

certificados de usuario

Estos se envían en dirección contraria, es decir al sitio. Son los certificados que verifican
la identidad del usuario.

cómo se consiguen certificados

Uno mismo genera sus claves pública y privada. Después se envía la pública a una
entidad verificadora de certificados que creará (previo envío de información y, a veces,
de pago) su certificado.

firmar archivos

keytool es una utilidad que viene con el SDK de Java que permite manejar toda una
base de datos de identidades. Mientras que jarsigner permite firmar los archivos jar
que se deseen. Se puede obtener información de:
http://java.sun.com/products/jdk/1.2/docs/tooldocs/win32/keytool.html
http://java.sun.com/products/jdk/1.2/docs/tooldocs/win32/jarsigner.html

almacenes de claves. Comando keytool

keytool es un programa gratuito que permite exportar certificados. Para ello tenemos
que poseer el certificado en un archivo CER. Después hay que almacenarle en un
almacén de certificados. Normalmente se almacenan los certificados en el archivo
.keystore que está en la carpeta de usuario. Pero se puede cambiar. Ejemplo:

Manual de Java

applets

244

c:\>keytool -import -file jorge.cer -alias jorge -storepass
mimono

Esto importa el certificado y lo almacena en el almacén por defecto con el alias jorge y la
contraseña mimono. Después nos pregunta la utilidad keytool si podemos confiar en el
certificado, al decir que sí, estamos diciendo que confiamos en el certificado.
Sin embargo este certificado instalado sólo vale para confiar en él. Si deseamos
incorporar nuestro certificado para firmar, entonces necesitamos conseguir un
certificado que incluya la clave privada (keytool tiene capacidad para conseguir claves
privadas). Con nuestra clave pública y privada deberemos acudir a un organismo emisor
y así tendremos un archivo que valida nuestras contraseñas. Para añadirle:

c:\>keytool -import -alias Jorge -file Jorge.x509 -keypass
palencia -storepass mimono

palencia es la contraseña que nos permite acceder a la clave privada, mimono es la
contraseña para almacenar.
Más tarde podemos firmar un archivo JAR de esta forma:

C:\>jarsigner -storepass mimono archivo.jar Jorge

En el archivo META-INF del archivo JAR se añadirá una entrada Jorge.SF (firma del
archivo) y Jorge.DSA (firma binaria real).
Para probar se puede crear una autofirma (aunque sin validez al no haber
certificador), de esta forma:

c:\> keytool -genkey -alias Jorge2 -file Jorge2.csr -keypass
palencia -storepass mimono

245

pprrooggrraammaacciióónn eenn rreedd

introducción

Sin duda la red es el contexto de trabajo fundamental de java. Lo mejor de Java está
creado para la red. El paquete java.net es el encargado de almacenar clases que
permitan generar aplicaciones para redes. En él podremos encontrar clases orientadas a
la programación de sockets y herramientas de trabajo con URLs.
También se utiliza mucho el paquete java.io (visto en el tema dedicado a la entrada
y salida, página 93). Esto se debe a que la comunicación entre clientes y servidores se
realiza intercambiando flujos de datos, por lo que las clases para controlar estos flujos
son las mismas que las vistas en el tema citado.

You're Reading a Free Preview

Descarga
scribd
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->