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): Isabel Leguias Asignatura: Seguridad y Privacidad en Redes

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.

El siguiente comando es:


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 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

Este comando según lo que entendí buscando en internet: es una solicitud de certificado con una duración
de 365 en el servidor Secury.csr, es decir la llave creado llama Llave.key estará en el servidor por un
periodo de 365 días

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

Ha
sta este punto, se ha creado la AC, que validará los certificados que se generen durante la práctica.

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
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 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

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 “#”
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

Por último, reiniciaremos los servicios “default-ssl y apache2” con los comandos:
#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
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

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

Después de esto nos dará un resumen.


Podemos comprobar el contenido, con el siguiente comando:
openssl x509 –in CA/ca.crt -noout -text
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
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:


 Apache2ssl.csr
apachessl
 /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