5. administracioìn de claves y certificados
description
Transcript of 5. administracioìn de claves y certificados
![Page 1: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/1.jpg)
Criptografía en aplicaciones Java
Administración de claves y certificados
![Page 2: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/2.jpg)
Índice de contenidos
Introducción. Herramienta keytool. Infraestructura de clases.
Clase KeyStore.APIs para la gestión.
![Page 3: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/3.jpg)
Introducción
La administración de claves constituye uno de los aspectos más apasionantes del establecimiento de un sistema de seguridad.
La administración de claves, a partir de JDK 1.2, se basa en el concepto de almacén de claves (Keystore).
Definición: contenedor de claves secretas, pares de claves pública-secreta y certificados que prueban la validez de una clave pública.
![Page 4: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/4.jpg)
Introducción
Existen una serie de tareas importantes:Generación de claves.Almacenamiento de claves.Acuerdo/Distribución de claves.Verificación de claves.
Para manejar todo esto de una forma potente aparece el concepto de Keystore:
Base de datos, protegida por un password, que contiene claves y certificados.
![Page 5: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/5.jpg)
Introducción
![Page 6: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/6.jpg)
Introducción
Un almacén de claves puede contener dos tipos de entradas:
Entrada de clave.Entrada de certificado fiable.
Cada una de las entradas de un Keystore está asociada a un único alias, nos permiten identificar dichas entradas cuando queremos recuperarlas.
![Page 7: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/7.jpg)
Introducción
Las bibliotecas criptográficas de Java proporcionan soporte para tres tipos de almacenes de clave:
JKS: almacén de claves disponible en el JDK tradicionalmente (proveedor “SUN”).JCEKS: almacén de claves (proveedor “SunJCE”).PKCS12: almacén de claves (proveedor “SunJSSE”).
JCEKS debe utilizarse si, de alguna forma, se necesita utilizar funcionalidades de la extensión criptográfica de Java, en cualquier otro caso no será necesario.
![Page 8: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/8.jpg)
Introducción
Los almacenes de claves pueden gestionarse de dos formas diferentes:
Mediante una herramienta en línea de comandos, keytool.De forma programática aprovenchando la API que proporciona toda implementación de seguridad.
Se analizan a continuación ambas alternativas.
![Page 9: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/9.jpg)
Herramienta keytool
Esta herramienta se encarga de administrar claves.
Es una utilidad incluida en JRE. Permite crear nuevas claves, importar
certificados digitales, exportar claves existentes y, en general, interactuar con el sistema de gestión de claves.
![Page 10: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/10.jpg)
Herramienta keytool
Trabaja en línea de comandos:
![Page 11: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/11.jpg)
Herramienta keytool
Trabaja en línea de comandos:La sintaxis a utilizar es muy simple:
>keytool -opcion1 valor1 -opcion2 valor2 ...
![Page 12: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/12.jpg)
Herramienta keytool
Opciones Globales:−alias alias.−dname distinguishedName.−keypass password.−keystore filename.−storepass password.−storetype storetype.−v.
![Page 13: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/13.jpg)
Herramienta keytool
Vamos a describir a continuación un conjunto de operaciones habituales:
Creación de una entrada para clave.Generación de una petición de certificado.Importación de un certificado.Creación de una entrada para certificado.Modificación de entradas de almacén de claves.Borrado de entradas de almacén de claves.Exploración de los datos de un almacén.Cambio de clave.
![Page 14: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/14.jpg)
Creación de una entrada para clave
Opción -genkey:Se puede crear una nueva clave sobre el almacén por defecto: Almacén por defecto: .keystore . No se utiliza la opción -keystore . Para acceder al almacén debemos conocer su clave de
acceso.
Se puede crear una nueva clave sobre un nuevo almacén: Se utiliza la opción -keystore. Creamos un password asociado al nuevo almacén de
claves.
![Page 15: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/15.jpg)
Creación de una entrada para clave
Almacén por defecto:
![Page 16: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/16.jpg)
Creación de una entrada para clave
Una nueva clave sobre un nuevo almacén:
![Page 17: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/17.jpg)
Generación de una petición para certificado
Para obtener un certificado de una Autoridad certificadora (CA), se debe generar una petición (CSR -Certificate Signing Request-).
Opciones globales:−alias alias −keypass keypass −keystore keystore −storepass storepass −storetype storetype −v
![Page 18: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/18.jpg)
Generación de una petición para certificado
Opciones específicas:−sigalg signatureAlgorithm: Algoritmo usado para firmar la petición.
−file outputFile: Fichero donde se va a almacenar la petición generada.
![Page 19: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/19.jpg)
Borrado de una entrada
Opción -delete:Si utiliza la opción -alias, borra la entrada asociada a dicho alias tras insertar la clave del almacen. Si no indicas el alias te lo pide.
![Page 20: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/20.jpg)
Exploración de un almacen
Opción -list:Te permite explorar el almacén o alguna de sus entrada.
![Page 21: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/21.jpg)
Exploración de un almacen
Opción -list:Uso de la opción -v: aparecerá el contenido del certificado.
Uso de la opción -rfc: el certificado aparecerá en formato RFC 1421.
No se pueden mezclar ambas opciones.
>keytool -list -keystore almacen -v
>keytool -list -keystore almacen -rfc
![Page 22: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/22.jpg)
Exportación de una entrada
Opción -export:
Nota: Se utiliza la opción -alias para indicar qué entrada quiere
exportarse y -file para indicar dónde almacenar la exportación.
Si quieremos guardar en formato imprimible usaremos la opción: -rfc
>keytool -export -alias clave1 -keystore almacen -file cert1
![Page 23: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/23.jpg)
Importación de un certificado
Opción -import:Se puede incluir en nuestro almacén de claves un certificado que ha sido creado previamente.
Opciones particulares: −file inputFile.−noprompt.−trustcacerts.
![Page 24: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/24.jpg)
Importación de un certificado
![Page 25: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/25.jpg)
Infraestructura de clases
Las clases e interfaces necesarios para manejar almacenes de claves, certificados, listas de revocación, etc, se encuentran en los paquetes:
java.security: En este paquete se encuentran todas las clases e
interfaces que nos permiten tratar con almacenes de claves y sus entradas.
java.security.cert: En este paquete se encuentran todas las clases e
interfaces que permiten manejar certificados, listas de revocación, etc.
![Page 26: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/26.jpg)
Clase KeyStore
La clase java.security.KeyStore encapsula la noción del almacén de claves.
Es una clase abstracta que ejecutan implementaciones específicas del proveedor.
El tipo de almacén de claves que soporta JDK 1.2 es JKS para el almacén de claves de Java.
El tipo PKCS12 también se define pero no se implementa.
![Page 27: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/27.jpg)
Clase KeyStore
Los métodos de administración de KeyStore son los siguientes:
getInstance(String type).getInstance(String type, String provider).getDefaultType().getType().getProvider().store(...).size() ...
http://java.sun.com/j2se/1.4.2/docs/api/
![Page 28: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/28.jpg)
Clase KeyStore
![Page 29: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/29.jpg)
Clase KeyStore
Existen dos formas de pedir un almacén de claves: especificando el tipo de keystore, o el tipo y el proveedor:
KeyStore ks = KeyStore.getInstance("JKS"); El sistema determina si hay una implementación
disponible de ese keystore en el entorno, si hay más de una selecciona en función de un criterio.
KeyStore ks = KeyStore.getInstance("JKS", "SUN"); El sistema determina si hay una implementación
disponible de ese keystore en el paquete solicitado y si no lo hay lanza una excepción.
Antes de poder utilizarlo se deberá utilizar el método load().
![Page 30: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/30.jpg)
Clase KeyStore
¿Cuál es el proveedor que estoy utilizando?
![Page 31: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/31.jpg)
Clase KeyStore
¿Tipo de KeyStore?
![Page 32: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/32.jpg)
Clase KeyStore
El manejo de un almacen de claves de forma programática se realiza de la siguiente manera:
Obtención del almacen: este proceso es algo más complejo.Gestión del almacen.
![Page 33: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/33.jpg)
Clase KeyStore
Obtención del almacen:Paso 1: Obtener la instancia del almacen: Método getInstance().
Paso 2: Obtener el flujo de entrada asociado al fichero que representa al almacen y contraseña de acceso.Paso 3: Asociar el almacen al objeto anteriormente creado: Método load().
![Page 34: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/34.jpg)
Clase KeyStore
Gestión del almacen:Una vez creada adecuadamente la instancia de KeyStore, su gestión consiste en el manejo de sus métodos asociados: aliases(): devuelve el nombre de todos los alias de las
entradas en el almacen. deleteEntry(): borra una entrada. getCertificate(): se obtiene un certificado a partir de su
alias. getCertificateChain(): devuelve una cadena de
certificados. getEntry(): devuelve una entrada.
![Page 35: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/35.jpg)
Clase KeyStore
Gestión del almacen: setEntry(): guarda una entrada en el almacen de claves. setCertificateEntry: guarda un certificado en el almacen
de claves. ...
Una vez que se ha terminado de operar sobre un almacen se debe utilizar el método store() para actualizar los cambios.
![Page 36: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/36.jpg)
Clase KeyStore
Las entradas del almacén de claves:KeyStore.PrivateKeyEntry: entrada asociada a clave privada.KeyStore.SecretKeyEntry: entrada asociada a clave secreta.KeyStore.TrustedCertificateEntry: entrada asociada a certificado de confianza.
![Page 37: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/37.jpg)
JarSigner
Herramienta que genera firmas para ficheros jar y verifica la firma de ficheros jar que ya han sido firmados.
Sintaxis:jarsigner [ opciones ] jar-file aliasjarsigner -verify [ opciones ] jar-file
![Page 38: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/38.jpg)
JarSigner
Opciones:-keystore url.-storetype storetype.-keypass password.-sigfile file.-signedjar file. ...
![Page 39: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/39.jpg)
JarSigner
Ejemplos:jarsigner -keystore /working/mystore -storepass myspass -keypass j638klm -signedjar sbundle.jar bundle.jar janejarsigner -verify sbundle.jar.
Cuando un fichero jar es firmado el contenido del fichero es el mismo, excepto en que aparecen dos nuevos ficheros en un directorio META-INF:
Fichero con extensión .SF .Fichero con extensión .DSA .
![Page 40: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/40.jpg)
JarSigner
![Page 41: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/41.jpg)
APIs para la gestión
Keytool: línea de comandos. Gestión de claves programáticamente. Java proporciona APIs para leer y escribir
almacenes de claves y sus entradas. Las clases e interfaces más significativas son:
interface Principal.clase KeyStore.
![Page 42: 5. administracioìn de claves y certificados](https://reader034.fdocuments.ec/reader034/viewer/2022052504/553922ce550346e93a8b4924/html5/thumbnails/42.jpg)
TrustStore
JSSE introduce el concepto de Truststore como una base de datos que almacena certificados. Este concepto tiene una serie de elementos en común con un keystore:
Tiene el mismo formato que un Keystore.Son administrados mediante la herramienta keytool.Ambos son representados, programáticamente hablando, mediante instancias de la clase KeyStore.
La diferencia entre un keystore y un truststore es el tipo de servicio que ofrece.