Plataforma OpenSSL. Pág. 1 29/10/2015. Luis Mengual (C)

Documentos relacionados
Seguridad y Autorización: Plataforma OpenSSL

SOLICITUD, INSTALACIÓN y CONFIGURACIÓN DE UN CERTIFICADO DE SERVIDOR SEGURO EN APACHE MEDIANTE OPENSSL

CONFIGURACIÓN DEL CERTIFICADO DIGITAL EN OUTLOOK EXPRESS 6.0

Gestión de Certificados y Mecanismos de Seguridad con OpenSSL

SOLICITUD, INSTALACIÓN y CONFIGURACIÓN DE UN CERTIFICADO DE SERVIDOR SEGURO EN APACHE MEDIANTE OPENSSL

SOLICITUD E INSTALACIÓN DE UN CERTIFICADO DE SERVIDOR SEGURO EN APACHE 2.X MEDIANTE OPENSSL EX

ANEXO APLICACIÓN DE FIRMA

SEGURIDAD Y AUTORIZACIÓN

MANUAL DE CONFIGURACIÓN DEL CERTIFICADO DIGITAL EN OUTLOOK EXPRESS 6.0

Instructivo para Solicitud de Certificado de Servidor 080-ISS-I017

Criptografía básica. (extracto de ponencia Administración Electrónica ) EUITIO Universidad de Oviedo. Alejandro Secades Gómez

Clase 19: 21 de Abril de Certificados Digitales (HTTPS) Eduardo Mercader Orta emercade [at] nic. cl

Apache2, sitios virtuales y SSL APUNTES ASIR JOHN ALEXANDER MONTES LOPEZ

INSTALACIÓN Y VERIFICACIÓN DE LA TARJETA CRIPTOGRÁFICA

MANUAL DE CONFIGURACION DE ADOBE PARA LA VALIDACION DE LA FIRMA DE UN DOCUMENTO

INSTALACIÓN Y VERIFICACIÓN DE LA TARJETA CRIPTOGRÁFICA

FIRMA ELECTRÓNICA INSTALACIÓN Y USO DE CERTIFICADOS EN ARCHIVO PKCS#12 MANUAL DE USUARIO V1.1 14/07/2015

CERTIFICADO DIGITAL EN OUTLOOK 2002

MANUAL DE CONFIGURACIÓN DEL CERTIFICADO DIGITAL EN OUTLOOK 2010

Regidoria de Modernizació de l Administració APLICACIÓN DE CIFRADO

MANUAL INSTALACIÓN Y USO CERTIFICADO DIGITAL EN OUTLOOK Versión 1.0

Analiza y elabora un manual de uso con ejemplos de la herramienta OpenSSL.

ANEXO 11: ESTÁNDARES RECONOCIDOS PARA LA ACREDITACIÓN

Asegurar s con MS Exchange 2003

Instrucciones para la instalación de WebSigner en Mozilla Firefox

Creación y administración de certificados de seguridad mediante OpenSSL

CANTABRIA GOBIERNO DE

MANUAL INSTALACIÓN Y USO CERTIFICADO DÍGITAL EN OUTLOOK 2003.

Aplicaciones criptográficas 2

Instrucciones de configuración del acceso remoto (VPN) de la UCLM para Windows, Mac y Linux

Criptografía y firma digital

Garan5a y Seguridad en Sistemas y Redes

INSTALACIÓN Y CONFIGURACIÓN DEL SERVIDOR MCAFEE Guía paso a paso

Capítulo 3. Qué es un Prestador de Servicios de Certificación?

Solicitud de Certificados de servidor web

Manual de usuario de configuración de Navegadores para Sede Electrónica del SEPE

Juan Carlos Rodríguez (S21Sec) Juan José Carrasco (IZENPE) Rames Swart (SmartAccess)

Seguridad Apache con SSL

A. Integración del certificado Digital a Outlook Express

LICENCIAS DEL SUPERVISOR X PARA CÁMARAS Y DISPOSITIVOS IP

DOCUMENTO DE RECOMENDACIONES DE INSTALACIÓN

Manual para crear Llaves Privadas y Públicas en Windows.

La Firma Digital. Seguridad en Redes TCP/IP. Tabla de Contenidos

Envı o seguro de documentacio n

CGPE Manual de Configuración del Correo Electrónico. Manual para la configuración del correo electrónico en Outlook Express

SOPORTE HTTPS EN APACHE

Petición de certificados de servidor con Apache y Openssl

MANUAL DE PROCEDIMIENTO PARA LA UTILIZACIÓN DEL SISTEMA CIFRADOC/CNMV/D

PKI centralizada (SSL/TLS, S/MIME)

Solicitudes MINECO. Manual de usuario de firma electrónica

SAER v2.0 Guías. Guía para generar Certificados Digitales ikey Guía para generar Certificados Digitales Iam.

Manual de Usuario para instalación de Antivirus BitDefender 2010

La instalación de certificados SSL en Apache cpanel

Manual Importación Encriptada

PROCEDIMIENTO PARA GENERAR LOS REQUERIMIENTOS DE SELLOS DIGITALES

Creación y administración de certificados de seguridad mediante OpenSSL.

TEMA 3: IMPLANTACIÓN DE TÉCNICAS DE ACCESO REMOTO. Victor Martin

Nota de Régimen Interior (N.R.I.)

Contenido Introducción... 1 Instalación del Cliente... 2 Acceso vía Web... 7 He olvidado la contraseña... 8 Quiero cambiar la contraseña...

SSL. Web segura. Sesión 2 Unidad 5 Desarrollo de Software Libre I

CONFIANZA Uno de los principales desafíos a que se enfrentan los medios telemáticos es asegurar la identidad de las partes que intervienen en cualquie

Taller de TeamViewer. Manual De TeamViewer

Microsoft Word. Microsoft Word 2013 SALOMÓN CCANCE. Manual de Referencia para usuarios. Salomón Ccance CCANCE WEBSITE

Procedimiento para el pago

Firma y validación de ficheros PDF con Acrobat 8

CGPE Manual de Configuración del Correo Electrónico. Manual para la configuración del correo electrónico en Outlook 2000

SOLICITUD E INSTALACIÓN DE UN CERTIFICADO DE SERVIDOR SEGURO PARA TOMCAT 4.X Y 5.X (SISTEMAS WINDOWS)

PROYECTO 2 Parte 1 BASES DE DATOS. Curso (2 Semestre) Grupos 4F2M y 4F1M-1 (aula 5102) CONSULTAS REMOTAS EN JAVA A UNA BASE DE DATOS

Universidad Autónoma del Estado de México ADMINISTRACIÓN Y SEGURIDAD EN SISTEMAS OPERATIVOS SEGURIDAD SOBRE WINDOWS POR: J. JAIR VÁZQUEZ PALMA

OpenSSL. Ing Jean Díaz

MICROSOFT OUTLOOK 2016

Manual Usuario. v2.6 MOAD H. Diputación Provincial de Jaén

Para comenzar nos dirigiremos a la web:

Práctica #1 Crear Base de Datos

Servidores WEB (Apache) en Debian

3. TÉCNICAS DE CIFRADO

BANCO CENTRAL DEL ECUADOR ENTIDAD DE CERTIFICACIÓN DE INFORMACIÓN

Cómo obtener el certificado digital?

MANUAL DE USUARIO. Renovación de certificados

Consulta a servicio OCSP. Consulta en línea de estado de Certificados

Clave Pública y Clave Privada

Circular de Tecnología Pautas para el uso de Certificados Digitales Personales

INSTALACIÓN CERTIFICADOS DIGITALES FNMT

Práctica 7: Seguridad en las comunicaciones

Guía de Instalación CS-Time

AGESIC Área de tecnología

MANUAL DE USUARIO VU ASIGNAR ROL USUARIOS EXTERNO

Solicitud de certificado digital - Scotia en Lí nea.

USER MANUAL VISUALIZADOR FINGERTEC TCMS V2

Firma y cifrado de correos electrónicos utilizando Cédula de Identidad

Sistema de Gestión y almacenamiento de archivos en el Campus Virtual

Servicios en Red Ejercicio 1 FTP

Ubuntu Server HOW TO : UBUNTU SERVER EN ESTE SE REALIZA LO SIGUIENTE: En este how to se le va a enseñar como instalar un servidor de ubuntu.

Office 365 Pro Plus ACTVACIÓN EN EQUIPOS COMPARTIDOS

VERIFICACIÓN Y CONFIGURACIÓN DOCUMENTOS PDF (ADOBE READER X)

HOWTO: Cómo gestionar los certificados X509 con XCA para su correcta implementación en Panda GateDefender Integra.

Tramitar Certificado de Sello Digital

Transcripción:

Pág. 1 29/10/2015

OpenSSL es un entorno integrado que permite la creación y gestión de certificados digitales. OpenSSL dispone de la infraestructura necesaria para crear una Autoridad de Certificación, firmar certificados de usuario, revocar certificados etc. OpenSSL es además un paquete de herramientas de administración y librerías de seguridad para la gestión de certificados y la implementación de mecanismos de seguridad. OpenSSL proporciona un entorno mediante el cual es posible mediante línea de comandos crear certificados, firmas digitales, cifrado/descrifrado información, mensajes S/mime etc.además proporciona librerías para implemementar aplicaciones de seguridad en entorno C/C++ en sistemas operativos windows/linux Esta librería criptográfica surge a partir del proyecto SSLeay, que fue iniciado por Eric A. Young y Tim J.Houston, y como propuesta inicial pretendía ofrecer el protocolo SSL para cualquier aplicación de seguridad. El proyecto OpenSSL fue iniciado en 1995, y actualmente es la librería criptográfica más usada. Algunas de las razones que la hacen tan popular son: Es distribuida, usando una licencia de código libre. Esto permite a los usuarios realizar cambios y optimizaciones constantes en los elementos criptográficos que la componen. Es posible integrarla en cualquier aplicación comercial sin necesidad de abonar tasas, permitiendo ofrecer soporte SSL criptográfico, comparable con casi cualquier librería comercial. Puede ser ejecutada en numerosas plataformas, permitiendo la exportación de las aplicaciones que la utilizan a cualquier sistema operativo. Pág. 2 29/10/2015

La herramienta openssl, que se invoca mediante la línea de mandatos, proporciona acceso a un gran conjunto de funciones criptográficas correspondientes a la librería criptográfica crypto. Algunas de las operaciones que se pueden realizar mediante dicha librería son: Creación y gestión de certificados digitales X.509, solicitudes de certificados digitales (CSR) y listas de revocación de certificados (CRL). Creación y gestión de claves privadas y claves públicas Operaciones relacionadas con la criptografía de clave pública Cálculo de resúmenes de mensajes mediante funciones hash. Firma digital Cifrado y descifrado con un amplio conjunto de algoritmos Api para el desarrollo de aplicaciones SSL/TLS cliente-servidor Manejo de e-mails S/MIME cifrados y firmados Generación y verificación de sellos de tiempo Pág. 3 29/10/2015

Una vez instalado el entorno OpenSSL hay que poner en la variable path del sistema C:\OpenSSL-Win32\bin que es la instalación por defecto de la plataforma. De esta forma podemos ejecutar la herramienta desde cualquier directorio del sistema. La forma de invocar la herramienta es tecleando openssl. Momento en el cual entramos en el entorno OpenSSL> En la figura se observan el conjunto de comandos disponibles de la herramienta.. Pág. 4 29/10/2015

Los certificados X.509 tiene un estándar PKCS#6 pueden almacenarse en formato binario DER con extensiones.crt,.cer,.der. Tambíen pueden alamcenarse en formato PEM con extension.pem. La claves privada al igual que los certificados pueden estar en formato DER o PEM. Y las extensiones de los ficheros serían.der o.pem. El formato de las claves sigue el estandar PKCS#8. El formato PEM es la conversión base64 del formato DER a la que se añaden unos delimitadores del tipo -BEGIN CERTIFICATE- y -END CERTIFICATE Los archivos con extensión.p12 se utilizan para almacenar en un único fichero cifrado el certificado de clave pública de un usuario y su clave privada. La extensión.pfx (Personal information exchange) es similar que la *.p12 en el entorno windows. El formato de estos ficheros sigue el estándar PKCS#12. El entorno Openssl nos permite convertir formatos de certificados segun sean requeridos por nuestras aplicaciones Pág. 5 29/10/2015

Vamos a empezar a utilizar la herramienta creando un par clave privada-pública. La clave privada la vamos a tener en un fichero que podemos opcionalmente proteger con una clave y un algoritmo simétrico como DES, AES 256 La clave pública también la podemos crear en un fichero. Se extrae a partir de la clave privada. Pág. 6 29/10/2015

Vamos ahora a crear un certificado digital X.509. Este certificado nos permitirá autenticarnos frente a un servidor e implementar mecanismos de seguridad adicionales como la firma electrónica. Vamos a poner los siguientes campos en el certificado de la CA ----- Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:MA Locality Name (eg, city) []:BOA Organization Name (eg, company) [Internet Widgits Pty Ltd]:FIM Organizational Unit Name (eg, section) []:UPM Common Name (eg, YOUR name) []:ALU1_CA Email Address []:ALU1_CA@fi.upm.es OpenSSL> Nótese que el comando para crear el certificado toma como parámetro de entrada el fichero de clave privada creada anteriormente. Podemos igualmente usar una clave privada cifrada; en este caso se nos pedirá la clave que cifra el fichero. Vamos a convertir el certificado a formato binario DER creando un fichero con extension *.crt. Ahora pinchando en el fichero desde el entorno Windows podemos ver que ha sido creado correctamente. También podemos crear un fichero con extension *.p12 que contenga el certificado de clave pública y la clave privada. Pinchando en el fichero obtenido desde el entorno windows se inicia un proceso de instalación del certificado. Éste se instalará en un almacén de certificado de usuario. Por último podemos ver en formato texto el certificado construido. El certificado obtenido es un certificado autofirmado en el que el emisor(emitido por) es igual que el propietario (Enviado a). Pág. 7 29/10/2015

Pág. 8 29/10/2015

Ahora nos vamos a crear un certificado de usuario pero firmado por una Autoridad de Certificación. El certificado que nos hemos creado con anterioridad coincidían los campos emisor y propietario, es decir era un certificado autofirmado. Ahora nos vamos a crea un certificado emitido por la Autoridad de Certificación. El proceso es el siguiente: En primer lugar generamos el par clave privada-pública. A continuación generamos una solicitud de firma, que en definitiva es un fichero con extensión *.csr. Este fichero lleva incorporado el certificado de usuario autofirmado con solicitud de ser firmado por una Autoridad de Certificación. Finalmente la Autoridad de Certificación tomando como parámetro su clave privada firmará el certificado. Los campos que pondremos en el certificado de usuario son los siguientes: Country Name (2 letter code) [AU]:ES State or Province Name (full name) [Some-State]:MA Locality Name (eg, city) []:BOA Organization Name (eg, company) [Internet Widgits Pty Ltd]:FIM Organizational Unit Name (eg, section) []:UPM Common Name (eg, YOUR name) []:alumno1seg Email Address []:alumno1seg@fi.upm.es Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:oooooo An optional company name []:oooooo Si queremos utilizar este certificado para firmar y cifrar mensajes con una aplicación de correo electrónico (como p.e outlook) necesitamos que el campo Email Address este correctamente rellenado a la direcciónió de correo del usuario. P.e si el usuario tiene la cuenta enel correo gmail el campo de Email Address deberá ser rellenado a alumno1seg@gmail.com. Pág. 9 29/10/2015

De forma similar a como hicimos con el certificado de la Autoridad de Certificación convertimos el certificado a formato binario DER (extensión *.cer) y también construimos el fichero *.p12 con el certificado de usuario y la clave privada protegidas por contraseña. Pinchando en el fichero usrcertificado.crt se observa que efectivamente se trata de un certificado firmado ya que los campos emisor (emitido por) y propietario (Enviado a) son diferentes. El emisor del certificado es la Autoridad que firma, que en nuestro caso se la Autoridad de Certificación que nos hemos creado. Pág. 10 29/10/2015

Pág. 11 29/10/2015

OpenSSL nos proporciona la infraestructura necesaria para crear nuestra propia Autoridad de Certificación, en adelante CA (Certification Authority). Nuestra CA será una entidad capaz de crear firmar certificado previa solicitud de un usuario, de revocar certificados, de conservar una base de Datos con los certificados firmados/revocados etc.. Para poder crear y gestionar nuestra propia CA es necesario crear un fichero de configuración de OpenSSL basado en el fichero por defecto openssl.cfg. Este nuevo fichero que lo llamaremos MyCA.cfg nos permitirá crear certificados firmados con las características particulares de nuestra organización Así mismo es necesario crear un árbol de directorios en el que almacenar los certificados creado/revocados, las bases de datos de los certificados creados y revocados y distintos ficheros de configuración. Con todo ello el siguiente paso sería crearnos el certificado de la CA. El que utilizaremos para firmar certificados de usuario. En general, los certificados de las Autoridades de Certificación deben ser dados a conocer por los usuarios. De esta forma los usuarios podrán (si lo consideran oportuno) instalar el certificado de la CA en su almacén de entidades emisoras raíz de confianza. Después de todos los pasos anteriores ya estaremos en condiciones de firmar certificados de usuario. Pág. 12 29/10/2015

Para crear nuestro fichero de configuración que llamaremos MyCA.cfg, modificamos el fichero original openssl.cfg en tres secciones: [CA_default], [req_distinguished_name] y [policy_match] En [CA_default] especificamos la carpeta donde vamos a guardar el certificado de la CA, su clave privada, los certificados firmados, los revocados y los ficheros de registro de los certificados firmados y revocados. Pág. 13 29/10/2015

En el campo [policy_match] se establece la política a seguir a la hora de firmar una solicitud de certificado certificado. Esta se podía denegar si en la solicitud aparece el campo cuntryname diferente al que tiene la CA. En nuestro fichero de configuración hemos quitado estas restricciones Como se aprecia en la figura eliminamos todas las restricciones a la hora de firmar un certificado por nuestra CA. Pág. 14 29/10/2015

[req_distinguished_name] Se puedeen proporcionar valores por defecto a la hora de crear el certificado de la CA. Pág. 15 29/10/2015

Para construir la infraestructura de una CA básica hay que crear un árbol de directorios que empieza en CA y que contenga las carpetas: Certs, newcerts, crl, csr, private, Además tiene que contener los ficheros serial, index.text, clrnumber y crl.pem. Estos cuatro ficheros deben de estar en la carpeta CA. index.txt y crl.pem deben estar vacios. Los ficheros serial y crlnumber deben tener el valor 01 y un salto de línea. Los dos primeros ficheros (serial, index.text) se utilizan para registrar los certificados firmados y los dos otros (clrnumber y crl.pem) se utilizan para registrar los certificados revocados Por último hay que añadir el mismo fichero de configuración MyCA.cfg Pág. 16 29/10/2015

Las carpetas necesarias para crear la infraestructura de la CA se describen en la figura. Pág. 17 29/10/2015

Con nuestras infraestructura de CA, la autoridad de Certificación no podrá firmar dos veces el mismo certificados para la misma máquina si haber revocado previamente el anterior. Si se intenta se obtendrá un mensaje de error diciendo que no se puede actualizar el fichero index.txt. Pág. 18 29/10/2015

Una vez creada la carpeta CA en el directorio C:\OpenSSL-Win32 podemos invocar desde el anterior directorio los comando de la figura. Con el primer comando en línea nos creamos el fichero de certificado de la Autoridad de certificación CACertificado.pem en el directorio CA y el fichero con la clave privada de la CA CAClavePrivada.pem en la carpeta /CA/private/ req -new -x509 -days 3650 -config./ca/myca.cfg -keyout /CA/private/CAClavePrivada.pem -out./ca/cacertificado.pem Con los dos comandos siguientes podemos construir el certificado de la CA en formato crt y en formato *.p12. Los ficheros generados CACertificado.crt y CA.p12 quedaran almacenados en la carpeta CA x509 -inform PEM -in./ca/cacertificado.pem -outform DER out./ca/cacertificado.crt pkcs12 -export -in./ca/cacertificado.pem inkey./ca/private/caclaveprivada.pem -out./ca/ca.p12 De esta forma obtendríamos el certificado en formato *.crt que podríamos instalar en el almacén de entidades emisoras raíz de confianza. Pág. 19 29/10/2015

Pág. 20 29/10/2015

Pág. 21 29/10/2015

Pág. 22 29/10/2015

Vamos a suponer como hemos visto anteriormente que un usuario genera una solicitud de firma de certificado. Desde el directorio C:\OpenSSL-Win32 ejecutamos los comandos que aparecen en la figura. Pág. 23 29/10/2015

Nuevamente recordar que debemos estar en el directorio C:\OpenSSL-Win32 El fichero con la petición lo cargamos en la carpeta csr y lo vamos cambiamos de nombre según creemos nuevas peticiones y nuevos certificados Si tratamos de firmar una misma petición por segunda vez, la infraestructura de nuestra CA basada en OpenSSL nos dará el siguinete error: Certificate is to be certified until Oct 7 13:25:00 2010 GMT (365 days) y) Sign the certificate? [y/n]:y failed to update database TXT_DB error number 2 error in ca Pág. 24 29/10/2015

Pág. 25 29/10/2015

Pág. 26 29/10/2015

Pág. 27 29/10/2015

Pág. 28 29/10/2015

En la figura se aprecia el contenido del fichero index.txt después de firmar dos certificados de usuario con el certificado de nuestra CA. También se aprecia en la figura la carpeta en la que se almacenan estos certificados Pág. 29 29/10/2015

Para revocar un certificado hay que copiarlo en primer lugar en la carpeta /CA/certs. A continuación se invocan desde el directorio C:\OpenSSL-Win32 los comandos que aparecen indicados en la figura. Pág. 30 29/10/2015

En la figura seaprecia el resultado de la invocación del comando de revocación del segundo certificado Pág. 31 29/10/2015

En la figura se aprecia el contenido del fichero index.txt y crl.pem. El primero contiene la lista de los certificados válidos y revocados. En el segundo esta el certificado completo revocado. La lista de certificados revocados debe ser puesta a disposición de los usuarios de la red de forma similar a como ponemos nuestra autoridad de certificación. Esto permite a los usuarios descargarse la lista de certificados revocados e instalarla en su ordenador, pudiendo comprobar que los certificados que le llegan, además de haber sido firmados por nuestra CA, continúan siendo validos para nuestra CA que los ha firmado. Pág. 32 29/10/2015

El mecanismo de firma digital es esencial para implementar servicios como el no repudio. Un usuario que firma un documento con una clave privada asociada a un certificado de clave publica (avalado por una Autoridad de Certificación reconocida) no puede negar haber firmado un documento. El mecanismo de firma consiste en hacer un resumen de documento (aplicar una función hash) y cifrar el resultado con la clave privada del usuario: ClavePrivada[Hash(documento)]= BloqueCifrado El proceso de verificación de firma consiste en el proceso inverso: Se aplica la clave pública al BloqueCifrado anterior y se compara con el resumen del documento ClavePública[BloqueCifrado] se compara con Hash(documento) Si el resultado de esta comparación es afirmativa se considera verificada la firma. En la figura se muestra cómo generar resúmenes y el bloque cifrado con la línea de comandos OpenSSl. La firma de documentos se hace a partir de un fichero que contiene la clave privada. La verificación se hace extrayendo la clave pública del usuario de un fichero. Pág. 33 29/10/2015

También se puede firmar un documento utilizando un fichero p12 en formato *.pem, es decir un fichero que contiene el certificado de usuario y su clave privada. Recordemos como generar el formato PEM a partir de un fichero *.p12: pkcs12 -in cert_user.p12 -out cert_userp12.pem Pág. 34 29/10/2015

Un documento también podría cifrase con la clave pública obteniendo un bloque cifrado. En este caso sólo el propietario de la clave privada par de la anterior podría descifrar ese bloque cifrado. A diferencia del mecanismo de firma (cifrado con clave privada), el cifrado con clave pública lleva implícito el servicio de confidencialidad: Nadie puede acceder a los contenidos del bloque cifrado salvo el propietario de la clave privada. Los algoritmos de la criptografía asimétrica son lentos. Están pensados para cifrar poca cantidad de información. El ejemplo más común es usarlos para cifrar las claves de sesión intercambias entre dos usuarios. El protocolo SSL lo hace así: en el mensaje Intercambio_clave_cliente se envía las claves de sesión cifradas con la clave pública del servidor extraída de su certificado. En la figura se muestran los comando OpenSSL necesarios para cifrar con la clave pública un documento. La clave pública también se puede extraer así: rsa -in cert_userp12.pem -out publica.pem -pubout Pág. 35 29/10/2015

El entorno OpenSSL proporciona de manera estándar muchos algoritmos de cifrado simétrico, incluidas diferentes variantes de cada uno. En la figura se muestra como cifra un documento de texto incluyendo la clave de cifrado en el comando. La clave también se puede introducir por teclado: des -in documento.txt -out documento_cifrado_des des d -in documento_cifrado_des -out documento_original_des.txt Pág. 36 29/10/2015

Se pueden utilizar otros algoritmos de cifrado : OpenSSL> des3 -in documento.txt -out documento_cifrado_des3 -pass pass:clave OpenSSL> des3 -d -in documento_cifrado_des3 -out documento_original_des3.txt -pass pass:clave OpenSSL> aes-256 -ecb-in documento.txt -out documento_cifrado_aes -pass pass:clave OpenSSL> aes-256-ecb -d -in documento_cifrado_aes -out documento_original_aes.txt -pass pass:clave OpenSSL> rc4 -in documento.txt -out documento_cifrado_rc4 -pass pass:clave OpenSSL> rc4 -d -in documento_cifrado_rc4 -out documento_original_rc4.txt - pass pass:clave OpenSSL> idea-ecb -in documento.txt -out documento_cifrado_idea -pass pass:clave OpenSSL> idea-ecb -d -in documento_cifrado_idea -out documento_original_idea.txt -pass pass:clave Pág. 37 29/10/2015

El correo electrónico es una aplicación unidireccional en la cual no se requiere en principio una contestación del usuario receptor. Si se quiere implementar servicios de seguridad en una aplicación que utiliza un solo intercambio hay que arbitrar algún procedimiento adicional. Si se quiere incorporar el servicio de confidencialidad, es conveniente cifrar la información con una clave de sesión que sólo conozcan el emisor y el receptor. Una forma de distribuir esta clave junto con los datos cifrados, es enviar la clave cifrada con la clave pública del receptor. Lógicamente el emisor debería conocer el certificado de clave pública del receptor. Si se quiere incorporar el servicio de no repudio, el emisor puede hacer un resumen del mensaje a enviar, cifrarlo con su clave privada y enviarlo junto al mensaje. Adicionalmente puede enviar su certificado de clave pública. El receptor del mensaje podrá verificar la firma utilizando la clave pública del certificado recibido. Los servicios de confidencialidad y de no repudio se puede proporcionar juntos en un mensaje de correo. Primero se firma el mensaje y luego se firma. Pág. 38 29/10/2015

El formato PKCS#7 cifra un documento con una clave simétrica y un algoritmo de cifrado simétrico. Posteriormente, la clave de sesión se cifra con la clave pública del usuario que se extrae de su certificado de clave pública. El usuario receptor hace el proceso inverso: utiliza su clave privada para extraer la clave simétrica. Posteriormente utiliza la clave simétrica para descifrar el documento. El formato PKCS#7 es el formato estándar utilizado en mensajes de correo electrónico para implementar servicios de confidencialidad y autenticación. En la figura se indican los comandos OpenSSL necesarios para generar un bloque con formato PKCS#7 conteniendo un documento cifrado. Pág. 39 29/10/2015

La firma de documentos con el formato PKCS#7 es muy común hoy en día. El formato de esta firma es que se utiliza en la aplicación de correo electrónico. El bloque de firma generado con PKCS#7 consta de los siguientes elementos: 1. Texto en claro 2. ClavePrivadaUsr[hash(texto en claro)] 3. Certificado de Usuario El receptor de dicho bloque hace un hash del primer elemento criptográfico, aplica la clave pública (recibida del certificado) al segundo elemento de este bloque y finalmente verifica que los resultados coinciden. En la figura se muestran los comandos OpenSSL para realizar la firma y verificación de documentos. Nótese que la verificación del bloque criptográfico smime se puede hacer verificando además la firma del certificado de usuario. Para ello necesitamos el certificado de la Autoridad de certificación que ha firmado el certificado. Pág. 40 29/10/2015

Pág. 41 29/10/2015

En la figura mostramos como combinar los mecanismos de firma y cifrado simétrico para proporcionar los servicios de confidencialidad y no repudio. Primero firmamos el documento con la clave privada del usuario emisor del mensaje. En segundo lugar deberíamos cifrar el bloque firmado con una clave de sesión, que a su vez cifraríamos con la clave pública del usuario receptor del mensaje. En el ejemplo de la figura estamos haciendo la suposición de que el emisor es el mismo que el receptor del mensaje. Una vez que el mensaje llegara al receptor este realizaría los siguiente pasos: En primer lugar descifraría del bloque recibido la clave de sesión simétrica. Una vez obtenida la clave, descifraría con el algoritmo simétrico el bloque de firma. Una vez obtenido el bloque de firma procedería a su verificación como se ha hecho en ejemplos anteriores Pág. 42 29/10/2015

Apache es un servidor de páginas web que permite a una organización proporcionar a usuarios remotos (potenciales clientes) el acceso a la información pública o restringida de esa organización. La información pública puede ser servida sin establecer mecanismos de seguridad. Por ejemplo el catálogo de productos de la compañía, especificaciones técnicas, etc.. Sin embargo la información restringida requiere incorporar mecanismos de seguridad bien sea para proteger la información en tránsito, o bien para identificar al usuario (autenticación). Esta necesidad de incorporar mecanismo de seguridad se hace crítica cuando desde el portal web de la organización se va a realizar la compra de un producto y el cliente tiene que proporcionar datos de carácter confidencial. Por todo ello el servidor Apache incorpora el protocolo SSL a partir de las librerías de OpenSSL. En la figura se presenta el proceso de instalación del servidor apache 2.2.11 incorporando las librerías de Openssl apache_2.2.11-win32-x86-openssl-0.9.8i.msi Pág. 43 29/10/2015

Podemos ver las opciones que tenemos en la instalación eligiendo una instalación personalizada Pág. 44 29/10/2015

Instalamos las opciones por defecto. Pág. 45 29/10/2015

Por defecto el servidor Apache después de la instalación no incorpora el protocolo SSL. Por defecto el servidor Apache sirve la página index.html localizada en: "C:/Archivos de programa/apache Software Foundation/Apache2.2/htdocs sin ningún mecanismo de seguridad. La opciones de configuración del servidor Apache están en el fichero httpd.conf de la carpeta C:\Archivos de programa\apache Software Foundation\Apache2.2\conf2\conf Para que nuestro servidor Apache pueda incorporar el protocolo SSL es necesario modificar el fichero de configuración original en dos apartados: Primero hay que cargar el Módulo de Seguridad OpenSSL con el protocolo SSL con la opción LoadModule d ssl_module l modules/mod_ssl.so. d l En segundo lugar hay que referenciar un fichero de configuración que será cargado al inicial el servidor web que gestionará la conexión segura mediante el protocolo SSL. Esto se hace con la opción #Include conf/extra/httpd-ssl.conf Pág. 46 29/10/2015

El fichero en el que se configura el protocolo SSL es httpd-ssl.conf y se haya en la carpeta C:\Archivos de programa\apache Software Foundation\Apache2.2\conf\extra. Para poder configurar el protocolo SSL en el servidor Apache hay que indicar por un lado donde están el certificado del servidor (SSLCertificateFile: cert_user.pem ) y la clave privada asociada (SSLCertificateKeyFile: privkey_user.pem ). Por otro lado hay que indicar la carpeta (SSLCACertificatePath) y el nombre del certificado de la Autoridad de Certificación (SSLCACertificateFile) que firma el certificado anterior. En la figura la carpeta es: C:\Archivos de programa\apache Software Foundation\Apache2.2\conf y el el certificado es ca.pem. Nótese que los certificados y la clave privada del servidor están en formato PEM Pág. 47 29/10/2015

Una de las opciones que permite el protocolo SSL es la Autenticación del cliente. El servidor puede solicitar al cliente un certificado. La situación más simple sería aquella en la que el servidor solicita un certificado de cliente firmado por la Autoridad de Certificación que hemos configurado en el apartado anterior Pág. 48 29/10/2015

Finalmente podemos configurar la lista de revovacion de certificados contenida en el fichero crl.pem. Este fichero lo configuramos para que sea accesible desde el servidor Apache. Recordar que todas estas configuraciones deben de hacerse con el servidor Apache parado. Pág. 49 29/10/2015

Vemos en la figura un ejemplo del servidor Apache funcionando en modo local. Asumimos que nuestro servidor Apache tiene configurado la Autoridad de Certificación denominada Alumno_CA y que el certificado del servidor esta emitido o tiene en el campo Common Name, CN el valor: localhost y lógicamente está firmado por la autoridad Alumno_CA. En la parte inferior izquierda vemos que el cliente se trata de conectar a la URL https://localhost/. lh / Al intentar conectarse un cliente, el servidor Apache nos pide un certificado fiable para poder hacerlo. De entro los certificados que dispone el cliente en el almacén de certificados hay que escoger uno que esté firmado por la Autoridad de Certificación Alumno_CA. Pág. 50 29/10/2015

Vemos que efectivamente el certificado alumno1seg está firmado por la Autoridad de Certificación Alumno_CA. Pág. 51 29/10/2015

Vemos asimismo que el certificado Alumno1seg es fiable para nuestro sistema. Esto es así porque previamente en nuestro almacén de certificados hemos tenido que instalar el certificado alumno_ca en el almacén de entidades raíz de confianza. Pág. 52 29/10/2015

En este momento que representa la figura, el protocolo SSL está accediendo a la clave privada asociada al certificado alumno1seg para firmar el conjunto de mensajes SSL de la sesión. Es el mensaje verificación certificado. Pág. 53 29/10/2015

Finalmente, puesto que el certificado del cliente es valido podemos en primera instancia recoger la página que sirve el servidor Apache SSL. Sin embargo esta condición es necesaria, pero no suficiente. Se tiene que cumplir una segunda condición: El certificado del servidor debe proteger el sitio (la URL) a la que nos conectamos. Es decir la URL tiene que estar en el Common Name del certificado del servidor (darían igual el resto de los campos. Además de estar firmado por una Autoridad de Certificación fiable. En resumen, el cliente confía (o debe de confiar) en el certificado del servidor por dos motivos: 1: Está firmado por una entidad fiable. Es decir, el certificado de la CA está instalado dentro del almacén correspondiente a las entidades raíz de confianza. 2: La URL a la quesequiere conectar está en el campo Common Name, CN del certificado que recibe del servidor (protege el sitio). Pág. 54 29/10/2015

Si intentamos acceder a nuestro sitio web con un certificado que ha sido revocado obtendríamos el siguiente mensaje. Pág. 55 29/10/2015