Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guía - Lab-FISC7

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

UNIVERSIDAD TECNOLÓGICA DE PANAMÁ

FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES


DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Facilitador(a): __________________________________ Asignatura: _____________________________


Estudiante: _________________________________ Fecha: __________________ Grupo: ___________

A. TÍTULO DE LA EXPERIENCIA: Aplicaciones Criptográficas

B. TEMAS:
Protocolo SSL.

C. OBJETIVO(S):
• Familiarizarse con la herramienta OpenSSL, la cual es software libre que permite la administración de
Certificados Digitales.
• Comprender el papel de una Autoridad Certificadora en el esquema de seguridad de los Certificados
Digitales.
• Conocer los procesos involucrados en dar de alta a un Certificado Digital para su utilización.
• Describir la importancia de las Listas de Revocación de Certificados (CRL) en el esquema de los
Certificados Digitales.
• Afianzar los conceptos de cifrado, descifrado y firma digital a través de algoritmo RSA y AES

D. RECURSOS:
• Máquina virtual: VirtualBox o WMware.
• Herramienta OpenSSL.
• Sistema operativo Linux.

E. METODOLOGÍA:
El alumno realizará cada sección de la guía, y deberá demostrarlo para ser evaluado presencialmente. Sin
embargo, al final encontrará unas preguntas las cuales deberá colocarla en la plataforma Moodle.

F. ENUNCIADO DE LA EXPERIENCIA O PROCEDIMIENTO:

ENTORNO DE LA PRÁCTICA:

• Se utilizarán dos shells. En uno de ellos se utilizar al usuario root y en otro al usuario ubuntu.
• Durante la ejecución de la práctica se crearán las llaves correspondientes a cada uno de los
usuarios mencionados.
• Para la creación de la Autoridad de Certificación será necesario tener instalado servicio
Apache.
• Es MUY importante que ud. sepa en cada caso con que usuario esté trabajando. Le
recomendamos que al abrir los dos shells los organice de la siguiente forma.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

OpenSSL, es una herramienta de software libre desarrollado por los miembros de la comunidad OpenSource, que
permite la creación y administración de certificados digitales, además de contar con librerías relacionadas con la
criptografía, útiles para proporcionar funciones criptográficas, como OpenSSH y navegadores Web seguros (https).
Se estará desarrollando lo siguiente:
• Instalación de OpenSSL
• Creación de la Autoridad Certificadora (AC) y su certificado
• Creación del certificado para el servidor Web. Realizar la petición de firma para la autoridad certificadora
(AC), y se firma el servidor Web con la del AC
• Configuración de Apache para utilizar los certificados SSL
• Generación de certificados digitales
• Utilización de las Listas de Revocación de Certificados (CRL)
• Cifrado y descifrado de archivos
• Uso de firma digital

SECCIÓN NO. 1 Instalación de OpenSSL y Creación del Certificado SSL para


servidor Apache

Autoridad Certificadora (AC)


Una AC, es una organización confiable que recibe solicitudes de certificados de otras entidades, las valida, genera
certificados y mantiene la información de su estado.
Entre las principales funciones de una Autoridad Certificadora, se pueden mencionar:
• Administración de certificados
• Autenticación del sujeto
• Generación de certificados
• Distribución de certificados
• Anulación de certificados
• Almacenes de datos

CRL, Listas de Revocación de Certificados


Los certificados tienen un período de validez, durante el cual la AC debe mantener la información de las entidades.
Entre los datos más importantes que deben ser actualizados, se encuentra el estado de anulación del certificado, el
cual indica que el período de validez ha terminado antes de tiempo y el sistema que lo emplee no debe confiar en él.
Las CRL, son un mecanismo a través del cual la AC, da a conocer y distribuye la información acerca de los
certificados anulados a las aplicaciones que los emplean. Estas estructuras de datos firmadas por la AC, contienen
su fecha y hora de publicación, el nombre de la entidad certificadora y los números de serie de los certificados
anulados que aún no han expirado.
Un administrador de redes debe obtener la última CRL de la entidad que firma el certificado que emplean sus
aplicaciones y verificar que los números de series de sus certificados no estén incluidos en dicha lista. Las listas de
revocación deben ser publicadas para que sean consultadas por los usuarios, por ejemplo, en un servidor Web.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
Para crear un certificado digital, en primera instancia se debe realizar una solicitud del certificado a una AC que
respalde la información del certificado solicitado. Algunas AC reconocidas son Verisign, Visa, etc., éstas previo
pago, devuelven certificados firmados por ellas. Para sustituir a dichas AC, se creará una propia, para firmar los
certificados que se generen.

1. Iniciar sesión dentro del sistema operativo, ingresando la cuenta de root con su correspondiente contraseña.
2. Abrir una terminal de shell para instalar la herramienta.

Después pondremos el comando:


#openssl genrsa –des -out Llaves.key
En mi caso le coloque Llaves.key es el nombre de la clave que mi servidor tendrá, pero pueden poner el nombre que
quieran.
Cuando solicite la frase, pueden introducir la que deseen, pero recuérdenla, ya que el mismo puede ser utilizado en
cualquier momento.

!!!!!En ambientes de producción, esta contraseña debe tener una alta complejidad ya que de ser vulnerada,
se comprometerían todos los certificados emitidos por esta AC!!!!!

El siguiente comando es:


#openssl rsa –in Llaves.key –out Llaves.key
Lo que hacemos con este comando es sustituir la clave antigua del servidor por la que hemos creado previamente.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
El siguiente comando es:
#openssl req –new –key Llaves.key –out Secury.csr

Con esto vamos a dar un nombre al servidor Secury.csr y le asignamos la clave anteriormente creada, Llaves.key

El siguiente comando es:


#openssl x509 -req –days 365 –in Secury.csr -signkey Llaves.key –out Secury.crt
Describa la función del comando anterior y las principales características del mismo
_____________________________________________________________________
_____________________________________________________________________
_____________________________________________________________________

Con este comando le asignamos la duración a nuestro certificado, el servidor y la contraseña ya antes creadas.

Hasta este punto, se ha creado la AC, que validará los certificados que se generen durante la práctica.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
Ahora vamos a crear la carpeta ssl con el siguiente comando:
#mkdir /etc/apache2/ssl

Después, vamos a mover, el servidor y la clave del servidor a la carpeta ssl con este comando:
#mv Llaves.key Secury.crt /etc/apache2/ssl

Ahora vamos a habilitar el módulo de SSL con este comando:


#a2enmod ssl

Para verificar que el puerto 443 no este comentado con un “#”, abriremos el archivo “ports.conf” con un editor de
texto:
#nano /etc/apache2/ports.conf
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Para concluir con la parte de comandos, para configurar SSL, usaremos el siguiente:
#nano /etc/apache2/sites-available/default-ssl.conf

Lo que haremos es abrir el archivo default-ssl.conf para buscar las líneas “SSLCertificateFile y
SSLCertificateKeyFile” y las modificaremos por las siguientes:
SSLCertificateFile/etc/apache2/ssl/Secury.crt
SSLCertificateKeyFile/etc/apache2/ssl/Llaves.key
Y comentar las líneas similares con un “#”

Por último reiniciaremos los servicios “default-ssl y apache2” con los comandos:
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
#a2ensite default-ssl
#service apache2 restart

Ahora entraremos a nuestro explorador para ver la configuración que realizamos.

Dar un click en Advanced el cual se expandirá indicando que es inválido el certificado de seguridad de localhost y
que no es de confianza, que solo es válido para la nombre que aparece. Dar click en Add Exception…
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Dar un click en el botón Confirm Security Exception, su explorador debe quedar de la siguiente manera:
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Observe en la parte superior aparece un candado indicando la validez y confianza del certificado en el servidor.
Para el desarrollo de la presente práctica, se empleará la configuración por defecto.

SECCIÓN NO. 2 Crear Autoridad de Certificación (CA)

Una Autoridad Certificadora, lo que hace, es firmar certificados SSL, permitiendo asegurar, que el certificado y el
dominio ó site son nuestros.
Nosotros vamos a ser nuestra propia Autoridad Certificadora “privada”. Nuestra CA no será válida para utilizar en
internet. Por lo tanto, no vamos a enviar nuestro certificado de seguridad a una entidad certificadora, como por
ejemplo Verisign.

Ahora, creamos el directorio CA que va contener los certificados de nuestra entidad certificadora “privada”:
cd /etc/ssl
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
mkdir CA
mkdir newcerts

Lo siguiente, es crear el archivo “serial“, que establece la numeración de los certificados, y el fichero index.txt,
que guarda la base de datos de los certificados:

cd CA
echo '01' > serial
touch index.txt

A partir de este momento, hacemos un backup el fichero openssl.cnf, y editamos un nuevo fichero
openssl.cnf:

sudo cp openssl.cnf openssl.cnf.old


sudo nano /etc/ssl/openssl.cnf

Editamos el archivo openssl.cnf con la siguiente información: (solo cambiar en la sección CA)

[ ca ]
default_ca = CA_default
[ CA_default ]
dir = /etc/ssl
serial = $dir/CA/serial
database = $dir/CA/index.txt
new_certs_dir = $dir/newcerts
certificate = $dir/CA/ca.crt #nombre del archivo del certificado raiz
private_key = $dir/CA/ca.key #nomre dela clave privada de certificado r$
default_days = 3650
default_md = md5
preserve = no
email_in_dn = no
nameopt = default_ca
certopt = default_ca
policy = policy_match

Lo siguiente, es crear el certificado y la clave privada de nuestra Autoridad Certificadora “privada“:


cd /etc/ssl/CA
sudo openssl req -x509 -newkey rsa:2048 -days 3650 -keyout ca.key -out ca.crt -config /etc/ssl/openssl.cnf

Para comprobar le contenido:


sudo openssl x509 -in ca.crt -text

Al servidor Web creado, le procedemos a firmar con la CA “privada”:


sudo openssl ca -batch -config /etc/ssl/openssl.cnf -notext -in /home/usuario1/Secury.csr -out
Secury.crt
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
Después de esto nos dará un resumen.
Podemos comprobar el contenido, con el siguiente comando:
openssl x509 –in CA/ca.crt -noout -text

Generar un certificado para el servidor Apache a través de una autoridad certificadora

Creación del pedido del certificado


Para proceder con la creación de un certificado para un servidor, lo primero que hacemos es generar el pedido de
certificado:

#cd /etc/ssl

#openssl req -config openssl.cnf -new -nodes -keyout /etc/apache2/CA/apachessl.key -out apachessl.csr -days
3650

Generating a 1024 bit RSA private key

• La opción "nodes" es necesaria para que la clave privada no sea protegida con una passphrase. Si el
certificado no se va a utilizar para la autenticación de servidores, no se debería incluir en la opción anterior.
• El "Common Name" (CN) es la información que identifica de forma única al servicio, por lo que debemos
asegurarnos de escribirlo correctamente.
• Se recomienda rellenar todos los campos que nos pidan, ya que si los dejamos vacíos, se nos rellenarán con
los datos por defecto, y en ocasiones pueden inducirnos a pensar que hay algún error en ellos.

Al finalizar se crean dos archivos:


• apachessl.csr: El pedido de certificado.
• /etc/apache2/CA/apachessl.key: La clave privada, que no ha sido protegida con una passphrase.

Firma del pedido de certificado para generar el certificado para el servidor


A continuación, firmamos el pedido de certificado para generar el certificado para el servidor:
openssl ca –config openssl.cnf -cert CA/ca.crt -policy policy_anything –out
CA/apachessl.crt –infiles apachessl.csr
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

• La opción "-policy policy_anything" indica que no se requiere que los campos "Country", "State" o "City"
coincidan con los de la CA.

Al finalizar se crean dos nuevos archivos:


• CA/apachessl.crt: Certificado del servidor, que puede hacerse públicamente disponible.
• newcerts/01.pem: El mismo certificado pero con el número de serie como nombre de archivo, no es necesario.

Creación de un archivo pkcs12 para instalar en navegadores


Como penúltimo paso, nos queda generar un archivo pkcs12, listo para ser cargado en los navegadores que
necesitemos que tengan acceso a nuestro sitio.
Openssl pkcs12 –export –in CA/apachessl.crt -inkey /etc/apache2CA/apachessl.key
-certfile CA/ca.crt -out apachessl_pck12.p12
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Ahora nos vamos a nuestro buscador Firefox. Menú-Preferencias. Seleccionar Ver certificados.

Escogeremos sus certificados e Importar.

Buscamos la carpeta donde está el certificado creado del servidor Apache, para nuestro caso lo tenemos en /etc/ssl
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Le pedirá la contraseña. Aquella cuando crearon el certificado para servidor Apache.


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

Después de eso, cerciórese de que aparezca en Ver certificados.

SECCIÓN NO. 3 Utilización de las Listas de Revocación de


Certificados (CRL)

Si deseamos que un certificado deje de ser válido debemos revocarlo. Esto se puede hacer con el comando:
# openssl ca -config openssl.cnf -revoke /etc/ssl/CA/Secury.crt
Entonces debemos generar un nueva CRL (Certificate Revokation List):
# openssl ca -config openssl.cnf -gencrl -out crl/ca.crl
El archivo de la CRL es crl/ca.crl.
El certificado de nuestra CA y nuestra lista de revocación (CRL) deben ser distribuidos a aquellos que confíen en
nuestra CA para que puedan importarlos en el software cliente (web browser, clientes ftp, clientes de e-mail, etc.
Además la CRL debe ser pública.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

SECCIÓN NO. 4 Generación de certificados X.509


Si lo queremos en texto plano:
$openssl x509 -in cert.pem -inform PEM -text

Si queremos extraer la clave pública:


$openssl x509 -inform pem -in cert.pem -pubkey -noout > pubkey.pem

Crear claves RSA

$openssl genrsa -out privkey.pem 4096


$openssl rsa -in privkey.pem -out pubkey.pem -outform PEM -pubout

Se pueden crear las claves sin crear un certificado X.509.


Las claves privada/pública se crean por separado.

Firmar un fichero

$openssl dgst -sha256 -sign private.pem -out signature fichero

Verificar una firma:


$openssl dgst -sha256 -verify pubkey.pem -signature signature.txt fichero

SECCIÓN NO. 5 Cifrado Asimétrico


También podemos usar OpenSSL para cifrar usando distintos algoritmos.
Podemos ver la lista de algoritmos de cifrado soportados con
$openssl --ciphers

El flag -a permite trabajar con la entrada/salida aplanada en base64.

Para obtener una hash:


$openssl dgst -sha1 fichero

Cifrar con RSA:

$openssl rsautl -encrypt -inkey pubkey.pem -pubin -in fichero -out fichero.ssl

Descifrar con RSA:

$openssl rsautl -decrypt -inkey privkey.pem -in fichero.ssl -out fichero

NOTA: No se pueden cifrar más datos que el tamaño de la clave (menos el tamaño requerido por el padding).
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
Cifrar y descifrar con RSA + AES

Generar clave AES:


$openssl rand -base64 32 -out aesKey

Cifrar:
$openssl enc -aes-256-cbc -salt -in fichero -out fichero.ssl -pass file:./aesKey.txt
$openssl rsautl -encrypt -inkey pubkey.pem -pubin -in aesKey.txt -out aesKey.rsa

Descifrar:
$openssl rsautl -decrypt -inkey privkey.pem -in aesKey.rsa -out aesKey.txt

ULTIMA PARTE

1. Con la información y los conocimientos que ha adquirido trate de llenar la tabla siguiente.
Marque aquellas casillas que puedan obtenerse con las funciones que se mencionan en cada caso.
Tome como ejemplo la primera fila.

Confidencialidad Integridad Autenticidad

Crea la autoridad certificadora (AC) en


openssl
Crea la autoridad certificadora (AC) y
genera certificados digitales en
openssl
Crea la autoridad certificadora (AC) ,
genera un certificado digital y utiliza
la lista de renovación de certificados
(CRL) en openssl
Mensaje Cifrado

Mensaje Plano

Mensaje Cifrado
+ HASH Plano

Mensaje Cifrado
+ Firma

Mensaje Plano + Firma


UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7

G. RESULTADOS:

Realice las siguientes pruebas:


1. Cifrar un documento con comandos openssl, primero simétrico.
2. Enviar el documento por correo electrónico a un compañero.
3. Comunicar la clave por medio de un “canal de comunicación seguro”.
4. Su compañero debe descifrar el mensaje recibido.
5. Realice la misma operación del paso 1, pero esta vez con cifrado asimétrico. Recuerde intercambiar
las claves públicas.
6. Envíele su certificado digital a su compañero. ¿Cómo lo hizo? Y viceversa. ¿Dónde lo colocó? ¿Y
Cómo lo hizo?

Investigue:
1. ¿En qué consiste el formato pem utilizados en la clave y el certificado de la Autoridad Certificadora?
2. ¿Cuál es el funcionamiento de las líneas de comando introducidas al shell en el paso 7 de la sección
3?
3. ¿Es posible utilizar un certificado digital generado por una AC implementada en Linux para proveer
soporte SSL (utilizando certificados digitales) a un Servidor Web basado en Windows, como por
ejemplo IIS? Explique
4. Presentar el procedimiento a seguir para instalar un certificado digital en un servidor Web Microsoft IIS
6.0.
5. Investigar 3 razones para indicar que un certificado ya no es válido.
6. Investigue 5 sitios Web de Internet en donde se pueden encontrar Listas de Revocación de
Certificados (CRL).

H. RÚBRICAS:

El método de evaluación utilizado serán los siguientes:


• Aplicar la herramienta de acuerdo con los puntos solicitados en la sección de Resultados (lo que
es el Desarrollo).
• Dicho laboratorio será evaluado de manera presencial, y deberá demostrar lo realizado en la parte
de Procedimiento.
• Conteste las preguntas señaladas en la parte de Resultados y colocarlo en la plataforma Moodle.

I. CONSIDERACIONES FINALES:
Indicar comentarios sobre experiencia obtenida del laboratorio. (Opcional)
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ
FACULTAD DE INGENIERÍA DE SISTEMAS COMPUTACIONALES
DEPARTAMENTO DE ARQUITECTURA Y REDES DE COMPUTADORAS
GUÍA DE LABORATORIO N°. 7
J. REFERENCIAS:

• OpenSSL https://www.openssl.org/https://www.openssl.org/
• Autoridad de Certificación. http://www.juanluramirez.com/crear-autoridad-certificadora-ssl/
• SSL. Certificado Firmado por nuestra propia Autoridad Certificadora http://www.planetainopia.com/2013-10-
15/ssl-certificado-firmado-por-nuestra-propia-entidad-certificadora.html
• Crear una autoridad certificadora con OpenSSL http://www.ayudamelinux.es/crear-una-entidad-
certificadora-ca-con-openssl/

También podría gustarte