Download Prácticas DYA - PoliformaT
Document related concepts
no text concepts found
Transcript
PRÁCTICA 9 E Seguridad sta práctica consta de dos partes. La primera parte consiste en la creación y ejecución de un applet firmado. La segunda parte consiste en la utilización del protocolo Secure Sockets Layer SSL en la web (protocolo https) mediante la técnica de tunneling. 9.1.- Applets firmado El objetivo de esta parte de la práctica es resolver los problemas de seguridad para ejecución de applets, los cuales requieren permisos más amplios que los permisos por defecto de la plataforma Java. En particular la práctica pretende eliminar los problemas de seguridad surgidos con la ejecución en web del cliente del applet de echo mediante la firma del applet con un certificado de seguridad. DYA 105 Applets firmado 9.1.1.- El entorno de trabajo Esta práctica no se realizará con el entorno Eclipse sino con la herramientas keytool y jarsigner del JDK. Para ello habrá que abrrir un intérprete de comandos en el que habrá que establecer la variable PATH adecuadamente: SET PATH= Directorio de Java/bin Se partirá de un fichero JAR con el applet realizado en la práctica de introducción a los applets. Denominaremos este fichero prj-applet.jar y a su correspondiente página HTML EchoApplet.html. Si no dispone de estos ficheros realizados en la práctica anterior, puede utilizar los del fichero zip de apoyo a esta práctica. Para la utilización de applets firmados se restablecerá la política de defecto de la plataforma Java. Para ello, borre el ficheros .java.policy del directorio $HOME (C:\Documents and Settings\usuario en Windows) realizado en la práctica de applets, en el que se concedía todo tipo de permisos a todas las aplicacione java. 9.1.2.- Creación de un JAR firmado Los pasos a seguir para firmar el applet son: 1. Generar un almacén de firmas, denominado jvstore, con una entrada denominada firma1 que será la que servirá para firmar el fichero JAR. Se solicitarán dos claves: una para el almacén de firmas y la otra como clave secreta de la firma. Pueden ser ambas la misma. También se solicitarán los datos personales del firmante. keytool -genkey -alias firma1 -keystore jvstore 2. Firmar el fichero JAR. El fichero resultante se denominará sprj-applet.jar. jarsigner -keystore jvstore -signedjar sprj-applet.jar prj-applet.jar firma1 3. 4. Crear una página HTML, denominada SEchoApplet.html, para referenciar el fichero sprjapplet.jar. Extraer el certificado del almacén de firmas (exportar) y depositarlo en un fichero .cer. Este certifcado contiene la clave publica del emisor de la firma. keytool -export -keystore jvstore -alias firma1 -file JoanVila.cer 9.1.3.- Verificación de un JAR firmado Puede verificar un fichero JAR firmado. Esta labor normalmente la realiza el que recibe un fichero JAR firmado y consta de los siguientes pasos: 1. Observar los datos del certificado. En Windows simplemente hay que pincharlo. En cualquier caso simpre se puede utilizar 106 Seguridad El protocolo SSL y la técnica de tunneling keytool -printcert -file JoanVila.cer 2. Importar el certificado y guardarlo en un almacen denominado receptorstore como una entrad con nombre unafirma: keytool -import -alias unafirma -file JoanVila.cer -keystore receptorstore 3. Verificar la firma del JAR: jarsigner -verify -verbose -keystore receptorstore sprj-seguridad.jar 9.1.4.- Ejecución del applet firmado Para la ejecución del applet firmado deberá ubicarlo en un directorio atendido por un servidor web según se explica en el apartado 6.3.3.- (pág. 77). Posteriormente deberá accederlo mediante su URL correspondiente. Con un applet firmado no deberían aparecer ya problemas de seguridad con el applet firmado. En cualquier caso, si tiene problemas en la invocación RMI, revise los ficheros java.security y java.policy. En el directorio doc del fichero zip de apoyo a esta práctica encontrará información detallada de como configurar estos ficheros. también puede utilizar la herramienta policytool. 9.2.- El protocolo SSL y la técnica de tunneling El entorno de trabajo en esta práctica son la herramientas stunnel y openssl disponibles en las distribuciones habituales de Linux. No obstante también existen versiones para Windows. En principio, los programas que deseen utilizar SSL deberían modificar su código para utilizar las funciones de la biblioteca SSL. Para evitarlo se propuso realizar esto mediante tunneling (figura 6 (pág. 108)). Esto permite añadir la capa SSL utilizando un proceso externo que haga de proxy (wrapper) entre la red y un servidor no seguro. Suforma de operar es similar al portforwarding de SSH.., La utilidad stunnel fué diseñada para ofrecer la seguridad SSL a servidores (demonios) o clientes que no han sido programados con soporte SSL. Puede actuar en la parte del cliente o en la parte del servidor. DYA 107 El protocolo SSL y la técnica de tunneling FIGURA 6. Técnica de tunneling 9.2.1.- stunnel como cliente Al igual que con socket podemos conectarnos a cualquier puerto de cualquier ordenador conectado a internet: $socket www.upv.es 80 GET / HTTP/1.0 Nos retorna la página principal de la UPV. Con la siguiente orden se consigue el mismo resultado, pero utilizando una conexión segura. $ /usr/sbin/stunnel conf-cli $ GET / HTTP/1.0 El fichero conf-cli debe ser configurado del siguiente modo: client = yes connect = www.upv.es:443 # el puerto estandar de http seguro es el 443 (ver /etc/services). 9.2.2.- stunnel como servidor La siguiente orden deja en ejecución en segundo plano (background) un servidor stunnel proporcionando tunneling al port 9500 y utilizando para encriptar el certificado del fichero server.pem. En este port se propocionará la salida de la orden $ ls -l. $ stunnel conf-ser2 El fichero conf-ser2 debe ser configurado del siguiente modo: cert = /home/usuarios/jvila/ssl/server.pem #key = /home/usuarios/jvila/ssl/server.pem #debug = 1 foreground = yes pid = #outfile = /tmp/error #local = futura.disca.upv.es 108 Seguridad El protocolo SSL y la técnica de tunneling [lsd] accept = 9500 exec = /bin/ls execargs = ls -l pty = yes Una cuestión importante es que la clave privada a partir de la cual se crea el certificado server.pem no debe estar protegida con password para que el servidor (web) pueda hacer uso de ella para encriptar la información: • El fichero con el certificado deben contener primero la clave privada (sin password), seguido del certificado. • Tras la clave privada y el certificado debe aparecer una línea en blanco. • Por tanto, al fichero creado por la orden: $ openssl req new x509 nodes keyout server.pem out server.pem se le ha de han de añadir un retorno de carro después de la clave privada y otro al final (después del certificado). otra cuestión interesante puede ser la conversión de certificados creados en el entorno Java a certificados pem. Los certificados de Java son DER codificados en X.509 y no en ASN.1. Esta conversión puede realizarse con: $ openssl x509 -inform DER -outform PEM -in JoanVila.cer -out JoanVila.pem DYA 109 El protocolo SSL y la técnica de tunneling 110 Seguridad