73
Software de Comunicaciones Práctica 6 - HTTPS con Apache y PKCS Juan Díez-Yanguas Barber Software de Comunicaciones Ingeniería Informática - 5º Curso ______________________________________________________________________________________ © Jdyb - Abril 2013

Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Software de Comunicaciones

Práctica 6 - HTTPS con Apache y PKCS

Juan Díez-Yanguas Barber

Software de Comunicaciones

Ingeniería Informática - 5º Curso

______________________________________________________________________________________© Jdyb - Abril 2013

Page 2: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Índice

1. Instalación del módulo SSL! 4

2. Estudio de las entidades de certificación de confianza! 8

3. Creación de una entidad de certificación propia! 12

3.1. Configuración de OpenSSL! 12

3.2. Generación de claves pública y privada! 15

3.3. Generación del requerimiento para el certificado! 16

3.4. Creación del certificado de la CA! 18

3.5. Generación de la lista de certificados revocados! 19

4. Creación de un certificado para un sitio web firmado por la CA creada! 21

4.1. Creación de claves pública y privada para el nuevo certificado! 21

4.2. Creación del requerimiento para el nuevo certificado! 22

4.3. Generación de un certificado firmado por la CA! 23

4.4. Configuración de apache para usar el certificado creado! 25

5. Creación de certificados de cliente! 32

5.1. Creación de pares de claves para los certificados de los clientes! 32

5.2. Creación de los requerimientos de certificado! 33

5.3. Creación de los certificados de cliente! 35

5.4. Exportación de los certificados de cliente! 37

5.5. Configuración de apache! 39

6. Revocación de certificados de cliente! 49

6.1. Revocación de un certificado emitido por la CA ! 49

6.2. Configuración de Apache para certificados revocados! 50

7. Apartados opcionales! 54

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 2!

Page 3: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

7.1. Script CA.pl! 54

7.2. Para que sirve Stunnel! 71

7.3. Protocolo OCSP! 72

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 3!

Page 4: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

1. Instalación del módulo SSL

! En este primer apartado se llevará a cabo la instalación del módulo SSL para el servidor apache de manera que disponga de todas las herramientas necesarias para servir conexiones HTTP sobre SSL.

! Para la instalación del módulo nos dirigiremos al directorio de paquetes de nuestra máquina virtual situado en /usr/local/src/apache/mod_ssl/ e instalaremos el paquete rpm del módulo con el comando correspondiente.

! Una vez instalado comprobaremos que en la carpeta de inclusiones de configuración de apache (/etc/httpd/conf.d/) se ha situado allí un archivo de configuración de https que contiene lo necesario para que el servidor acepte conexiones HTTPS.

! Si abrimos el fichero de configuración veremos que contiene las directivas esperadas para aceptar conexiones https. En primer lugar observaremos que tiene la directiva Listen correspondiente para aceptar conexiones https por el puerto 443 que es el asociado a https. Por otra parte se incluye la directiva correspondiente para incluir el módulo instalado mod_ssl de manera que posteriormente las directivas de configuración de ssl sean aceptadas al arrancar el servidor y funcionen.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 4!

Page 5: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Otra de las cosas que será necesaria para que las conexiones https funcionen será que exista un servidor virtual con el puerto 443. Podría no ser necesario obligatoriamente crear un servidor virtual para las conexiones seguras, pero lo normal es que la zona segura no sea la misma que el resto. Este servidor virtual lo podemos encontrar ya configurado en el fichero que estamos observando ahora mismo. Se puede ver que viene con la directiva _default_:443 que equivale a *:443.

! Dentro del servidor virtual basado en puerto para el 443 encontraremos que tiene habilitado SSL y también debemos de ver que tenga los certificados necesarios para funcionar, los cuales han sido generados con la instalación del módulo. Por un lado estará el certificado del servidor y por otro lado la clave privada del mismo.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 5!

Page 6: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Una vez explicados todos los cambios que se han llevado a cabo para que el servidor web funcione para peticiones HTTS lo que haremos será iniciar el servidor y comprobar que funciona correctamente desde un navegador.

! Cuando entremos desde un navegador web veremos que nos mostrará una alerta debido a que el certificado que está asignado ahora al Virtual Host por el que vamos a entrar es un certificado autofirmado, no está firmado por ninguna entidad de confianza. Y por otra parte tampoco está creado para la URL con la que vamos a entrar, ya que nosotros entraremos por la dirección IP del servidor y el certificado que se ha creado automáticamente se ha creado basándose en el nombre de host de la máquina virtual que es server.efirel.com.

! Si entramos ignoramos la advertencia y le damos a continuar veremos que se entra en el DocumentRoot del servidor principal, ya que en el VirtualHost no había ninguna directiva para ello, por lo tanto se usa el DocumentRoot del servidor principal.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 6!

Page 7: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

!

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 7!

Page 8: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

2. Estudio de las entidades de certificación de confianza

! En este apartado estudiaremos el significado que tiene decir que una web tiene un certificado de confianza o no, veremos como detectarlo y la manera en que los navegadores saben las entidades de certificación que son de confianza.

! Cuando se accede a una página web mediante HTTPS antes de entrar en la misma se hacen tres comprobaciones, si estas tres comprobaciones son exitosas se entra en la página web, si alguna de las tres comprobaciones resulta fallida el navegador suele mostrar algún mensaje de advertencia indicando el tipo de error y dejando la decisión de entrar o no entrar en la web en manos del usuario. Las tres comprobaciones que se llevan a cabo son las siguientes.

• Comprobación de la fecha de caducidad del certificado. Si el certificado está caducado se da una advertencia.

• Se comprueba si la entidad de certificación que firma el certificado es de confianza o no. Si la entidad que firma el certificado no es conocida para el navegador o el certificado es autofirmado (firmado por el mismo que ha creado el certificado) se muestra una advertencia.

• Se comprueba el Nombre común (CN) del certificado y si coincide con la URL del sitio será una validación correcta. En caso de no coincidir se indicará con una advertencia indicando que posiblemente el certificado no fuera creado para el sitio en el que esta entrando, lo que indica que es probable que no se esté entrando realmente al sitio que se desea.

! Respecto a la manera en que el navegador puede saber las entidades de certificación que son de confianza es porque las tiene guardadas en un depósito de certificados que suele estar en el sistema operativo, o en el caso de Firefox es un depósito propio gestionado por el mismo.

! A continuación entraremos en un sitio con un certificado de confianza como por ejemplo el ce una entidad bancaria. En este caso entraremos en la web del Banco de Santander y observaremos que las tres comprobaciones descritas anteriormente se pasan sin dar ninguna advertencia por parte del navegador.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 8!

Page 9: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! A continuación entraremos en la utilidad de Mac Os X llamada llavero donde se guardan los certificados que el sistema tiene guardados como de confianza, y veremos que encontramos la entidad raíz emisora del certificado del Banco de Santander. Hemos visto en la captura anterior que había otra entidad de certificación, pero es una entidad intermedia, ella firma con su clave privada los certificados que emite pero su certificado está firmado por una entidad raíz que son las que están guardadas en los depósitos de certificados de los sistemas.

! El sistema verificará con la clave pública de la CA intermedia la firma del certificado de la web y se verificará que la firma de la entidad raíz presente en el certificado de la entidad intermedia concuerda con el certificado de la entidad raíz que se encuentra en el llavero del sistema.

! Esta comprobación sigue el siguiente proceso. La firma de la entidad intermedia es la función hash de su certificado por ejemplo en MD5 cifrado con la clave privada de dicha entidad. El navegador recibirá el certificado de la entidad intermedia que contiene su clave pública y su firma (como firma del certificado del Banco de Santander). Con la clave pública de la entidad intermedia se ha de descifrar la firma de la entidad intermedia y una vez descifrada hacer su función Hash. Si coincide con el certificado que ya se tenía de la entidad intermedia es que es válida. Se hará el mismo proceso para comprobar la firma de la entidad intermedia con el certificado de la entidad raíz, y este proceso será el decisivo que diga si la web tiene una firma válida o no. Hay que tener en cuenta que para

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 9!

Page 10: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

que esto funcione el servidor que sirva la página debe de servir no solo su certificado sino la cadena de certificados para que se puedan obtener los certificados de las entidades intermedias.

! Vemos ahora que el certificado de la entidad de certificación raíz que firma el certificado de la entidad intermedia que firma al Banco de Santander está en el llavero del Sistema guardado como un certificado de confianza.

! Sin embargo si entramos en una web con un certificado autofirmado. Vamos a entrar en una web de la que soy administrador y tiene un certificado autofirmado, sin embargo tiene el nombre correcto coincidente con el dominio y no está caducado, por tanto, el aviso que dará el navegador indicará que el emisor del certificado (yo) no es de confianza.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 10!

Page 11: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Esta vez hemos hecho la conexión desde Firefox, ya que su depósito de certificados es independiente y así no interfiere en el resultado real de la prueba, ya que yo en el del sistema tenía añadida esta excepción concreta.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 11!

Page 12: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

3. Creación de una entidad de certificación propia

! En este apartado se va a tratar de crear una entidad de certificación propia con la que consigamos firmar certificados. Añadiremos como entidad de confianza la CA creada a un navegador y entraremos en las direcciones que tengan un certificado que haya sido firmado por la CA propia. En resumen, el fin último de este apartado será crear la infraestructura necesaria para que a la hora de entrar a un sitio web se pueda entrar sin avisos por parte del navegador.

! El desarrollo de este apartado, y en general el de la práctica entera difiere de la realidad puesto que nuestra CA y el servidor estarán en el mismo sitio, lo que no es nada común, pero lo hacemos así por sencillez ya que estamos trabajando en un entorno de escritorio con máquinas virtuales.

! Para el desarrollo de este apartado usaremos la herramienta openssl, que será la que nos proporcione las utilidades necesarias para cumplir los pasos que se tienen que llevar a cabo.

3.1. Configuración de OpenSSL

! Lo primero que hemos de hacer es establecer la configuración de openssl, tendremos que modificar el fichero de configuración que está situado en /etc/pki/tls/openssl.cnf. Será una buena práctica que copiemos este fichero de configuración para guardar una copia del mismo en caso de equivocarnos con la configuración.

! Una vez hecho esto podemos entrar a modificar el archivo de configuración. En el archivo de configuración puede existir varias CAs, pero hay una por defecto que será la que vamos a tratar de configurar. La CA por defecto se define en la siguiente línea. Y se podrá cambiar el nombre de la CA.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 12!

Page 13: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

!

! Una de las primeras cosas que modificaremos será la raíz de la entidad de certificación ya que por defecto sitúa los archivos en /CA pero nosotros queremos crearla en /etc/pki/tls. Posteriormente habrá que crear todos los subdirectorios necesarios dentro de este directorio, lo haremos cuando finalicemos la configuración.

! A continuación cambiaremos los parámetros de la CA para cambiar el país la organización y algunos otros datos. En todos ellos modificaremos el default puesto que el otro que no pone default indica el mensaje con el que se pedirá el dato por consola al ejecutar los comandos.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 13!

Page 14: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Cambiaremos también el número de días de validez de los certificados creados, que por defecto tiene el valor de un año y lo pondremos para dos años.

! Ahora pasaremos a ver los directorios que son necesarios dentro de /etc/pki/tls, esto lo podemos ver dentro de la configuración del fichero, en el mismo sitio donde se configuró el directorio base.

• certs: Contiene los certificados reconocidos.

• crl (Certification Revocation List): Contiene los certificados revocados.

• newcerts: Contendrá los certificados que han sido emitidos.

• private: Contiene las claves privadas

• cacert.pem: Contiene el certificado de la CA.

• serial: Número de serie que será asignado al siguiente certificado.

• crlnumber: Número de secuencia para los certificados revocados.

• index.txt: Listado de certificados creados.

! Pasemos ahora a crear estos directorios, algunos de ellos ya están creados pero faltan algunos como veremos a continuación.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 14!

Page 15: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

3.2. Generación de claves pública y privada!

! Una vez que se ha configurado todo lo necesario para hacer funcionar openssl con la configuración establecida y están todos los directorios necesarios pasamos al primer paso para crear nuestra CA. El primer paso consistirá en obtener una clave pública y una privada de la CA.

! La clave privada se protegerá con TripleDES para asegurarla y la clave pública debe ser la que usemos para crear el certificado de la CA. Usaremos los siguientes comandos para crear la pareja de claves públicas y privadas.

  openssl  genrsa  -­‐des3  -­‐out  private/CA_CEU.pem  <long=2048>

! Una vez introducido el comando se nos va a pedir una clave para proteger la clave privada, si introducimos una clave corta nos va a decir que tiene que tener como mínimo la longitud de 4 caracteres, nosotros hemos puesto la clave “pruebaCA”.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 15!

Page 16: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Verificaremos a continuación que el archivo de claves está en el directorio especificado. Podremos ver su contenido con el siguiente comando, no lo podremos ver con un comando como vi o cat ya que se encuentra cifrado.

  openssl  rsa  -­‐noout  -­‐text  -­‐in  private/CA_CEU.pem

! Hemos usado la extensión pem en el archivo de salida porque es el formato en el que dará la salida openssl, de manera que así quedará más claro el formato en el que está. Este formato guarda el contenido del certificado en base64. http://es.wikipedia.org/wiki/X.509#Extensiones_de_archivo_de_certificados

3.3. Generación del requerimiento para el certificado

! El siguiente paso consistirá en crear un requerimiento que podría ser el equivalente a rellenar un papel pidiendo la generación de un certificado.

! El requerimiento también llamado csr se realizará con la pareja de claves que hemos creado en el paso anterior. Este requerimiento por defecto tendrá una validez de 30 días que es el valor que hay en el fichero de configuración de openssl que lo podemos ver justo donde modificamos el valor de la validez máxima del certificado. Para generar el requerimiento usaremos el siguiente comando.

  openssl  req  -­‐new  -­‐key  private/CA_CEU.pem  -­‐out  CA_CEU-­‐csr.pem

! Veremos que al ejecutar el comando nos va a pedir una serie de parámetros, bastará con que le demos a Enter puesto que los parámetros por defecto son los que modificamos en el fichero de configuración como se puede ver, únicamente hemos tenido

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 16!

Page 17: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

que poner el valor de “Organizational Unit Name”, que le hemos dado el valor “EPS”, el Common Name o CN que le hemos dado el valor “CA de prueba” y finalmente un correo electrónico que le hemos dado el valor [email protected].

! También es posible observar que ha usado la pareja de claves creadas anteriormente como ya dijimos. El primer dato que nos ha pedido es que introduzcamos la contraseña con la que se cifró el fichero de claves, se necesita la clave pública ya que se usa para crear el requerimiento. Se piden también dos parámetros opcionales que no los hemos introducido.

! Como podemos ver a continuación el fichero csr para el requerimiento se ha creado correctamente.

! También podremos ver su contenido con el comando openssl. Mostramos el comando a continuación.

  openssl  req  -­‐noout  -­‐text  -­‐in  CA_CEU-­‐csr.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 17!

Page 18: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

3.4. Creación del certificado de la CA

! Una vez que el requerimiento ha sido creado en el paso anterior lo que tenemos que hacer es crear el certificado de la nueva CA a partir del mismo. Usaremos openssl con el siguiente comando. Como se puede ver en el comando especificado se nos pide el requerimiento creado en el paso anterior y el fichero de claves que creamos en el primer paso.

! Dejaremos el certificado de la CA del CEU con en la raíz del directorio de la CA. No ponemos el número de días con el parámetro -days porque ya introducimos un valor por defecto en el fichero de configuración de openssl. El formato de salida del certificado será x509 como viene especificado en el comando. http://es.wikipedia.org/wiki/X.509.

  openssl  req   -­‐in   CA_CEU-­‐csr.pem  -­‐out   CA_CEU-­‐cert.pem   -­‐key  private/CA_CEU.pem  -­‐x509

! Se puede observar que para crear este certificado se ha usado el comando openssl req en el que no se indica ninguna entidad que firme el certificado, eso indica que no hay entidad que vaya a firmarlo, los certificados de las CA raíz son autofirmados ya que no hay ninguna otra entidad por encima de las mismas que los pueda firmar. Y una vez que haya sido creado el certificado de la CA esta ya podrá firmar otros certificados con su clave privada, de manera que los certificados a partir de ahora ya no serán autofirmados, sino firmados por la CA, de hecho veremos que el comando usado para crearlos no es el mismo.

! Como hemos hecho en las ocasiones anteriores comprobamos que el fichero se ha creado correctamente y vemos su contenido con el comando openssl.

! El comando para la visualización del certificado será el siguiente.

openssl  x509  -­‐noout  -­‐text  -­‐in  CA_CEU-­‐cert.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 18!

Page 19: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

3.5. Generación de la lista de certificados revocados

! El último paso para la creación de la CA será crear una lista de certificados revocados que lo haremos también con el comando openssl.

  openssl  ca  -­‐gencrl  -­‐out  CA_CEU-­‐crl.pem

! El comando tomará la configuración del fichero de configuración de openssl, por tanto tendremos que ajustar correctamente la ubicación de los ficheros que hemos creado en los pasos anteriores, ya que será necesaria la clave de la CA que hemos creado.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 19!

Page 20: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora veremos que se ha creado el fichero de lista de certificados correctamente.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 20!

Page 21: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

4. Creación de un certificado para un sitio web firmado por la CA creada

! En este apartado crearemos un nuevo certificado para un sitio web, esta vez no será un certificado autofirmado como en el caso anterior (Una CA raíz no tiene a nadie por encima que la firme). Esta vez el certificado tendrá que ser firmado por la CA que hemos creado en el paso anterior.

! Los pasos a seguir serán similares a los del paso anterior, primero crearemos la pareja de claves públicas y privadas, posteriormente el requerimiento para que la CA cree el certificado y finalmente la CA creará el certificado con su firma.

4.1. Creación de claves pública y privada para el nuevo certificado

! Usaremos el mismo comando que se usó anteriormente para la generación de pares de claves. Guardaremos las claves en el directorio private. No hemos protegido el fichero de clave privada para que el servidor apache no nos pida la contraseña cada vez que arranque. Es más seguro ponerla dada la importancia de la clave privada, pero no se suele poner por este motivo, ya que cada vez que se reinicia apache pediría la clave de a clave privada.

  openssl  genrsa  -­‐out  private/sitioPruebasKey.pem  2048

! Ahora pasaremos a comprobar que se ha creado correctamente.

! No vamos a mostrar el contenido de la clave porque ya lo hicimos anteriormente en el paso de creación de las claves para la CA, en caso de que quisiéramos mostrarlo ahora el comando sería exactamente el mismo.

  openssl  rsa  -­‐noout  -­‐text  -­‐in  private/sitioPruebasKey.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 21!

Page 22: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

4.2. Creación del requerimiento para el nuevo certificado

! En este apartado crearemos de nuevo un requerimiento de certificado para que la CA lo cree con la clave pública que hemos generado en el paso anterior. Crearemos el requerimiento con el mismo comando que usamos anteriormente. El requerimiento lo guardaremos en el directorio newcerts.

  openssl   req   -­‐new   -­‐key   private/sitioPruebasKey.pem   -­‐out   newcerts/sitioPruebas-­‐csr.pem

!

! Comprobamos a continuación que el requerimiento para la creación del certificado se ha creado correctamente.

 openssl  req  -­‐noout  -­‐text  -­‐in  newcerts/sitioPruebas-­‐csr.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 22!

Page 23: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

4.3. Generación de un certificado firmado por la CA

! En este apartado crearemos un certificado a partir de la petición de nuevo certificado, esta vez la diferencia es que lo vamos a crear con un comando diferente ya que lo queremos firmado por la CA.

! Openssl sabe cual es el certificado de la CA porque en el fichero de configuración openssl.cnf apuntamos la ruta del certificado de la CA. No pondremos el parámetro -days porque ya pusimos dos años por defecto en la configuración de openssl.

  openssl   ca   -­‐in   newcerts/sitioPruebas-­‐csr.pem   -­‐out   newcerts/sitioPruebas-­‐crt.pem

! Comprobamos que el fichero ha sido creado correctamente.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 23!

Page 24: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora podremos visualizar su contenido como lo hemos hecho en casos anteriores, lo haremos con el comando correspondiente de openssl.

!

! Antes de pasar al siguiente apartado conviene saber porque la CA ha accedido a firmar el certificado del sitio de pruebas, podría haberse negado a firmar el certificado; con esto lo que quiero decir es que hay una política bajo la cual se rige la CA para firmar los certificados. Esta política se encuentra definida en el archivo de configuración de openssl.

! Por defecto en el fichero de configuración podemos encontrar dos políticas ya definidas, podríamos definir las que quisiéramos, y una de ellas es la que se elige para aplicar por defecto. Las dos que podemos encontrar llevan el siguiente nombre: “policy_match” y “policy_anything” y la que está ajustada para usar por defecto es la primera de ellas.

! La diferencia entre las dos políticas es que la segunda está preparada para firmar cualquier certificado, y el único requisito que tiene es que el Common Name (CN) sea ajustado. Sin embargo la primera de ellas obliga a que el certificado que se vaya a firmar sea del mismo país, estado o provincia y organización que la propia CA.

! En nuestro caso no ha dado ningún tipo de error puesto que al crear el certificado dejamos estos valores tal y como estaban ajustado en el fichero de configuración de openssl que fueron los que configuramos en apartados anteriores; y a la hora de crear el certificado lo único que cambiamos fue el nombre de departamento y el Common Name.

! A continuación mostramos los ajustes de las políticas en el fichero configuración de openssl.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 24!

Page 25: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

4.4. Configuración de apache para usar el certificado creado

! En este apartado configuraremos nuestro servidor web para que use el certificado que acabamos de crear. Lo que haremos será crear un servidor virtual basado en nombre para el puerto 443 y para el nombre pruebas.com. Realmente esto no sería necesario puesto que el sitio pruebas en nuestro DNS actualmente apunta a la dirección IP del servidor por lo que respondería sin problemas el servidor basado en puertos que se instaló al instalar el módulo mod_ssl.

! Configuramos en primer lugar un Virtual Host en el que especificamos el punto de entrada y las opciones de SSL que será activarlo, seleccionar los algoritmos de encriptación permitidos y por otra parte seleccionar el certificado y la clave privada, que serán los que hemos creado en los apartados anteriores.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 25!

Page 26: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Otra de las tareas será crear la ruta especificada y introducir dentro un index.html.

! El paso siguiente será reiniciar el servidor http y el arrancar servidor DNS.

! El paso siguiente será llevar el certificado de la CA a la máquina anfitriona para que sea reconocida como una CA de confianza. Lo haremos mediante sftp.

! El siguiente paso una vez que lo tenemos en nuestra máquina anfitriona será introducirlo en Firefox como CA de confianza. Iremos a las opciones y nos dirijimos a la sección que se indica en la imagen y hacemos clic en ver los certificados.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 26!

Page 27: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Nos iremos a la sección de autoridades y seleccionamos la opción de importar un nuevo certificado y seleccionaremos el archivo correspondiente que acabamos de meter en la máquina anfitriona.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 27!

Page 28: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Luego se nos pedirá una serie de opciones para las que es posible confiar en el certificado, nosotros en este caso hemos señalados solo para navegación web que es lo que vamos a realizar.

! Si observamos los detalles del certificado podemos observar que es efectivamente el certificado de la CA que creamos en apartados anteriores. Observaremos que es un certificado autofirmado por la CA como ya dijimos porque el propietario del certificado es el mismo que el emisor.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 28!

Page 29: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Finalmente comprobaremos que está en la lista como una CA más de confianza.

!

! Finalmente lo que quedará será comprobar que todo funciona correctamente. Al entrar a www.pruebas.com vía https con Firefox deberemos entrar a /proyectos/web1/ZonaSegura, y el navegador no debe de dar ninguna advertencia porque la CA firmante ha sido añadida como CA de confianza.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 29!

Page 30: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 30!

Page 31: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Se puede comprobar que se ha entrado correctamente al sitio sin ninguna advertencia por parte del navegador y además, mostrando el certificado se demuestra que está firmado por la CA de prueba que creamos en pasos anteriores.

! Esto mismo que acabamos de hacer al llevar el certificado de la CA de confianza a la máquina anfitriona lo podríamos haber hecho de la misma manera con el llavero del Sistema Mac OS para que con otros navegadores tampoco se diera ningún tipo de advertencia, sin embargo lo hemos hecho con Firefox porque al tener un depósito de certificados independiente del del sistema viene mejor para hacer pruebas.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 31!

Page 32: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

5. Creación de certificados de cliente

! En este apartado de la práctica vamos a tratar de crear dos certificados de cliente, estos certificados harán la labor opcional de una conexión HTTPS. En una conexión HTTPS es obligatorio que el servidor se verifique mediante un certificado que es lo que hemos hecho en los pasos anteriores. Pero, opcionalmente el servidor puede requerir al cliente que se autentifique mediante un certificado, precisamente esto es lo que haremos en este apartado.

! En este apartado realizaremos las tareas de openssl dentro de la máquina virtual aunque no sería la operativa normal. Lo normal sería que el cliente generara su certificado en su máquina y se lo diera al servidor de manera que éste ya lo tuviera como un certificado de cliente de confianza. Sin embargo los generaremos en la máquina virtual simplemente por el hecho de que es una máquina de pruebas. También disponemos de openssl en la máquina anfitriona ya que estoy bajo un sistema Mac OS que se basa en unix, pero prefiero hacerlo en la máquina virtual ya que allí ya hemos modificado el fichero de configuración de openssl y es una máquina en pruebas.

! No pasa nada porque sigamos este procedimiento que podríamos llamar extraño, mientras que tengamos claro el significado de lo que vamos a hacer y que la operativa normal es la que he comentado en el párrafo anterior.

5.1. Creación de pares de claves para los certificados de los clientes

! En este apartado crearemos como hemos hecho en las ocasiones anteriores pares de claves para cada uno de los clientes que vamos a crear. Como queremos crear dos certificados de cliente vamos a crear dos pares de claves. Lo haremos con el mismo comando empleado en las ocasiones anteriores.

! Esta vez si que vamos a proteger la clave privada. Crearemos pareja de claves para el cliente Juan López y Ana Pérez. Y las claves privadas tendrán contraseña “juan” y “ana1” respectivamente.

  openssl  genrsa  -­‐des3  -­‐out  private/nombreCli-­‐key.pem  <long=2048>

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 32!

Page 33: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Verificamos que se encuentran los dos ficheros creados en el directorio correspondiente.

5.2. Creación de los requerimientos de certificado

! En este apartado los dos clientes Juan y Ana crearán un requerimiento de certificado tal como hemos hecho en los apartados anteriores para crear un certificado. Para realizar esto usaremos el siguiente comando.

  openssl  req  -­‐new  -­‐key  private/Juan-­‐Key.pem  -­‐out  certs/Juan-­‐csr.pem

! Al ejecutar el comando se nos pedirá la contraseña con la que se aseguró el fichero de claves ya que necesitará la clave pública para crear el requerimiento del certificado como ya se comentó en una ocasión anterior.

! Posteriormente se nos pedirán una serie de detalles como en casos anteriores como la organización. Lo que cambiará en este caso es que Juan Lopez (CN) pertenece al departamento de desarrollo (OU). Y de manera similar para Ana Perez que pertenecerá al departamento de Ventas.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 33!

Page 34: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora comprobaremos que los archivos han sido creados en el directorio correspondiente que se ha especificado en los comandos y vamos a visualizar posteriormente el contenido de uno de ellos, de la misma manera que lo hemos hecho en ocasiones anteriores.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 34!

Page 35: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

5.3. Creación de los certificados de cliente

! En este apartado generaremos los certificados para los clientes a partir de los requerimientos creados en el paso anterior. En este caso los certificados de los clientes serán firmados por la CA que hemos creado en apartados anteriores. Usaremos el comando que usamos para crear el certificado del servidor, es decir openssl con la opción ca para que ésta los firme.

! Hay que tener en cuenta que, como ya se comentó en el fichero de configuración de openssl deben de estar presentes el certificado de la CA con el que firmará los certificados que se le pidan, así como la clave privada de la CA.

  openssl  ca  -­‐in  certs/Juan-­‐csr.pem  -­‐out  certs/Juan-­‐cert.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 35!

Page 36: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 36!

Page 37: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Podemos verificar que se encuentran los dos ficheros en el directorio especificado.

5.4. Exportación de los certificados de cliente

! Como explicamos en la introducción de este capítulo hemos hecho el proceso de una forma un poco diferente al haber creado los certificados de cliente en el servidor, por ello ahora hay que exportarlos a la máquina anfitriona, habrá que exportar el certificado y la clave privada de los mismos, para ello se emplea un tipo de archivo llamado pkcs12. http://en.wikipedia.org/wiki/PKCS_♯12.

! Para hacer esto usaremos el siguiente comando que se indica a continuación. Será un comando de openssl. Al ejecutar el comando se nos pedirá una contraseña para cifrar el paquete para exportarlo. Las contraseñas que usaremos para los dos certificados de Juan y de Ana serán “juan” y “ana1” respectivamente. También nos pedirá la clave de las claves con que se protegieron los ficheros de claves.

  openssl  pkcs12  -­‐export  -­‐in  certs/Juan-­‐cert.pem  -­‐inkey  private/Juan-­‐Key.pem  -­‐out  Juan-­‐crt.p12

! Comprobaremos que los dos ficheros se han creado correctamente.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 37!

Page 38: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! El siguiente paso simplemente será llevar los certificados a la máquina anfitriona, por ejemplo usando SFTP.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 38!

Page 39: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

5.5. Configuración de apache

! En este apartado se tratará de configurar el servidor web apache para que solo se permita el acceso a los dos departamentos de cada uno de los dos certificados.

! Lo que haremos será crear dos subdirectorios dentro de la zona segura que creamos anteriormente, en dichos subdirectorios solo será permitido el acceso a los miembros de dichos departamentos que se autentiquen con un certificado de cliente.

! Posteriormente lo que haremos será introducir en cada uno de esos directorios un fichero index.html para indicar en que lugar hemos accedido cuando se acceda desde el navegador.

! Sin todavía haber configurado nada más en Apache podemos acceder por https a www.pruebas.com y veremos un enlace a cada uno de los dos departamentos que he creado en el html, ahora se podría acceder a ambos sin problemas ya que lo único que hemos hecho es mantener la configuración del apartado anterior en la que solo se autenticaba el servidor pero modificando la estructura de directorios.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 39!

Page 40: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Y podremos acceder a los dos departamentos sin tener ningún certificado configurado en el navegador puesto que no se ha configurado la autenticación de cliente en apache por el momento.

! Pasaremos ahora a configurar el servidor Apache en el Virtual Host de pruebas.com para el puerto 443. Añadiremos al VirtualHost dos directivas Location, una para cada departamento. Lo primero que se hace es activar la verificación de cliente con SSLVerifyClient y después, con las directivas que hemos puesto verificaremos la organización y el departamento concreto.

! Añadiremos también como otra opción de SSL la ruta al certificado de la CA que ha firmado los certificados de cliente, de esta manera tomará el servidor esa CA como una CA de confianza cuando verifique los certificados del cliente.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 40!

Page 41: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Si ahora accedemos a uno de los dos departamentos con el navegador podremos observar que no podemos entrar al no tener certificados, dándonos un error. Accedemos con Chrome para que no encuentre ningún certificado de cliente.

! Ahora pasaremos a incluir los ficheros pkcs12 que hemos exportado del servidor en el navegador, seguiremos un proceso parecido a cuando añadimos un certificado de la CA de confianza.

! En Mozilla Firefox (también lo podemos hacer con el llavero del sistema pero lo hacemos en Mozilla por tener un depósito independiente, ya que viene mejor para hacer pruebas) nos iremos a las opciones y dentro de la pestaña avanzado podemos ir a la subpestaña cifrado y entraremos en ver certificados.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 41!

Page 42: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Dentro de la nueva ventana importaremos el certificado de Juan dentro de la pestaña “sus certificados”.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 42!

Page 43: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Posteriormente nos pedirá la contraseña que usamos para proteger el archivo pkcs12, que en este caso será “juan”.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 43!

Page 44: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora que ya hemos añadido el certificado hemos de probar si somos capaces de acceder al departamento de desarrollo que era al que estaba asignado Juan.

! Si ahora accedemos al departamento de ventas el navegador nos pedirá elegir un certificado de cliente y elegimos el único importado por el momento, el de Juan (Departamento de Desarrollo).

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 44!

Page 45: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! La respuesta deberá ser un error de acceso ya que hemos intentado acceder con un certificado de un departamento que no es el correcto, luego debería de prohibir el acceso.

! Ahora probaremos de nuevo pero con el departamento de desarrollo seleccionando el certificado de Juan.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 45!

Page 46: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Esta vez si que debería ser posible el acceso ya que hemos elegido el certificado de Juan que es del Departamento de desarrollo.

! Si añadimos el certificado de Ana como lo hemos explicado anteriormente debemos de poder acceder al departamento de Ventas.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 46!

Page 47: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 47!

Page 48: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! De la misma manera que ocurría anteriormente usando un certificado no válido comprobaremos que ahora con el certificado de Ana no se puede acceder al departamento de desarrollo.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 48!

Page 49: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

6. Revocación de certificados de cliente

! En este apartado veremos como revocar un certificado de un cliente y ver que cuando se intenta entrar a la web con ese certificado de cliente revocado no se puede.

6.1. Revocación de un certificado emitido por la CA

! En este apartado vamos a ver como revocar un certificado y como actualizar la lista de certificados revocados, lo haremos mediante openssl. Recordemos que en la configuración ya habíamos indicado la ruta correctamente para los certificados revocados o crl (Certification Revocation List). Usaremos el siguiente comando para revocar el certificado de Juan.

  openssl  ca  -­‐revoke  certs/Juan-­‐cert.pem

! Posteriormente se puede crear la lista de certificados revocados como hicimos al crear la CA, solo que esta vez si que habrá un certificado revocado.

openssl  ca  -­‐gencrl  -­‐out  CA_CEU-­‐crl.pem

! Podremos comprobar el contenido de la lista de certificados revocados con el siguiente comando.

  openssl  crl  -­‐noout  -­‐text  -­‐in  CA_CEU-­‐crl.pem

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 49!

Page 50: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

6.2. Configuración de Apache para certificados revocados

! No solo vale con el paso anterior, también hay que configurar apache para que compruebe la lista de certificados revocados, y para ello hay que indicarle la ruta de dicha lista; lo haremos con la directiva SSLCARevocationFile.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 50!

Page 51: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora pasaremos a realizar las pruebas. Intentaremos entrar al departamento de Desarrollo con el certificado de Juan que ha sido el que hemos revocado. Por supuesto reinciamos apache como siempre después de un cambio de configuración.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 51!

Page 52: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Sin embargo comprobaremos que el certificado de Ana sigue funcionando correctamente.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 52!

Page 53: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 53!

Page 54: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

7. Apartados opcionales

7.1. Script CA.pl

! Esta utilidad es un script escrito en Perl que tiene como objetivo facilitar las tareas de gestión de una CA y su gestión, lo que incluye emisión de certificados, revocaciones, empaquetado de certificados en paquetes pkcs12 y otra serie de operaciones.

! Lo que pretende la utilidad es que el proceso sea más sencillo que con los comandos propios de openssl. La utilidad la podemos encontrar en /etc/pki/tls/misc/CA.

! El Script está preparado para trabajar sobre la ruta /etc/pki/CA lo que significa que la gestión de la nueva CA será desde ese directorio. Esto lo podemos cambiar si queremos ya que parece que es una variable dentro del script. Se puede ver que lo pone como ruta relativa en el script, recordemos que el script esta en /etc/pki/tls/misc

! Esto se ha comprobado que es un inconveniente porque al estar como relativo depende desde donde ejecutes el comando y si lo ejecutas por ejemplo desde /etc/pki/CA te crea la CA en /etc/CA, por tanto nos parece una buena opción ponerlo como ruta absoluta.

!

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 54!

Page 55: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! El script tiene diversas opciones

! CA -newca: Este comando crea todos los directorios y archivos requeridos para la estructura de la CA.

! CA -signreq: Este comando firma un requerimiento de certificado con el certificado de la CA.

! CA -newreq: Este comando crea un nuevo requerimiento de certificado. Lo que significa que solo con este comando ya se crean las claves públicas, privada y el requerimiento del certificado.

! CA -newcert: Este comando se usa para crear un certificado autofirmado.

! Hemos explorado las opciones del programa observando en esta web que habla sobre las opciones del script.

http://www.openssl.org/docs/apps/CA.pl.html

! Si se observa el código del script sin necesidad de saber perl se puede ver que las variables de los directorios se usan a lo largo de todo el Script. Pero por otra parte se ve que se lanza el script de openssl sin parámetro alguno, por tanto se basa en la configuración por defecto de openssl, de manera que a mi modo de ver le quita al script un poco de autonomía y lo hace dependiente de la configuración de openssl. Esto en nuestro caso además creará mas inconveniente porque ya hemos estado modificando este fichero a lo largo de toda la práctica y ahora habrá que volverlo a hacer para que no interfiera con la CA que hemos creado en /etc/pki/tls

! Otro inconveniente que he observado es que deja los ficheros generados en el mismo lugar donde se ejecuta el comando y siempre con el mismo nombre, lo que tiene el inconveniente de que una vez terminados los pasos deberemos llevar el fichero a la estructura de la CA cambiándole el nombre.

! Resumiendo, los pasos que tendremos que llevar a cabo para usar esta herramienta serán los siguientes.

1. Configurar openssl en el fichero openssl.cnf

2. Crear la nueva CA con CA -newca

3. Crear requerimiento de certificado con el parámetro -newreq

4. Firmar certificado con -signreq

5. Mover clave privada, requerimiento y certificado a la estructura de la CA

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 55!

Page 56: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! A continuación vamos a ir repitiendo los pasos que hemos seguido en la práctica pero con esta nueva herramienta. Realizaré los pasos con menos explicaciones que a lo largo de la práctica porque el proceso va a ser el mismo pero con diferentes comandos.

Configuración de openssl.cnf

! En primer lugar configuraremos las rutas de la CA que las dejaremos por defecto de manera que la ruta de la CA sea /etc/pki/CA, para que se ajuste a la ruta del script. Hemos puesto la ruta absoluta porque también hemos encontrado problemas al ser relativa a donde se ejecuta el comando.

!

! El siguiente paso será modificar el nombre de la CA (si se desea).

! Modificamos también los días de duración de la validez de los nuevos certificados para ponerlo a dos años.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 56!

Page 57: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! La política de firmado de los certificados de la CA la dejamos tal como ya explicamos en la política match.

! También modificamos la longitud de las claves por defecto para poner una más larga, en concreto de 2048 bits.

! Finalmente configuramos los parámetros de los datos para los nuevos certificados como ya hicimos en la práctica.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 57!

Page 58: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Como se puede observar la mayoría de las configuraciones han sido igual que a lo largo de la práctica, la parte más importante de lo que hemos cambiado ha sido la ruta de la CA para que no colisione con la que ya habíamos creado.

Creación de la CA

! Crearemos una nueva CA con la configuración que hemos creado, para ello usaremos el siguiente comando, teniendo en cuenta que estamos en el directorio /etc/pki/CA. Se nos pedirá en primer lugar que digamos el nombre del certificado de la CA o que presionemos enter para crear uno nuevo y finalmente nos pedirá una contraseña para proteger la clave privada. Usaremos la contraseña “prueba”.

  ../tls/misc/CA  -­‐newca

! Vamos a observar que únicamente con este comando se han creado toda la estructura de directorios necesarios, una pareja de claves pública y privada, un requerimiento para certificado, y finalmente un certificado para la CA, vemos que los ajustes para los valores de los campos del certificado los saca del fichero de configuración de openssl.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 58!

Page 59: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Comprobaremos ahora si se han creado correctamente todos los directorios para la CA.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 59!

Page 60: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Creación certificado para servidor Web

! El siguiente paso será crear un certificado como ya vimos, para ello creamos primero el requerimiento y posteriormente la CA firmará el certificado. Veremos que esto con este nuevo script serán solo dos comandos más sencillos que los que vimos a lo largo de la práctica. Crearemos un requerimiento de pruebas, la clave privada llevará la contraseña “pruebas”.

  ../tls/misc/CA  -­‐newreq

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 60!

Page 61: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Ahora crearemos el certificado a partir del requerimiento, y este certificado va a ser firmado por la CA.

  ../tls/misc/CA  -­‐signreq

!

! Ahora movemos los tres ficheros creados que serán la clave privada, el requerimiento de certificado y el certificado a la estructura de la CA.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 61!

Page 62: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Creación certificados de clientes

! Ahora pasaremos a crear dos certificados de cliente siguiendo el mismo proceso que el anterior. Primero crearemos un requerimiento, posteriormente el certificado y después los moveremos a la estructura de la CA.

! El primer cliente será “Juan” con contraseña de clave privada “juan” y el segundo será “Ana” con contraseña de clave privada “ana1”. Juan trabajará en el departamento de desarrollo y Ana en el departamento de ventas.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 62!

Page 63: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

!

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 63!

Page 64: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Seguiremos ahora los mismos pasos para el certificado de Ana.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 64!

Page 65: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 65!

Page 66: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

Configuración de apache

! En este apartado vamos a crear de nuevo un servidor virtual que se adapte a los nuevos certificados que hemos creado con al nueva herramienta.

!

! Arrancamos el servidor y veremos que nos pide la contraseña de la clave privada del certificado del servidor que es “pruebas”.

! Ahora configuraremos como DNS el de la máquina virtual en la máquina anfitriona y posteriormente implantaremos el certificado de la CA de confianza en el navegador.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 66!

Page 67: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Posteriormente también añadiremos los certificados de cliente en la máquina anfitriona. Para ello se tienen que crear los contenedores pkcs12.

! Tras añadir el certificado raíz como de confianza en el llavero del sistema se intenta entrar en la web de pruebas con Chrome y se muestra un problema, que al parecer puede ser por alguna extensión que tenga el certificado, a juzgar por el mensaje de Chrome.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 67!

Page 68: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Sin embargo, si observamos el certificado se puede ver que el certificado del servidor está correctamente firmado por la CA.

!

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 68!

Page 69: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! De modo que el proceso de generación es correcto solo que es posible que ocurra esto por una peculiaridad de Mac.

! Si se prueba en Firefox ni siquiera deja introducir el certificado como CA de confianza porque indica el certificado no es de una CA. En cualquier caso, lo importante es que observando la cadena de certificación se observa que el certificado del servidor está correctamente firmado por la CA.

! Pasando ahora a la autenticación de cliente, esta vez en Firefox se observa que no hay problemas con el acceso a la zona segura.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 69!

Page 70: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

! Llegados a este punto se puede decir que los certificados de cliente han funcionado correctamente con este nuevo método ya que se puede entrar en la página que requiere autenticación sin problema alguno.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 70!

Page 71: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

7.2. Para que sirve Stunnel

! Stunnel es un programa de código abierto que tiene como finalidad la creación de túneles ssl, lo que quiere decir que puede proveer de este mecanismo de seguridad a cualquier protocolo que no use SSL de forma nativa.

! Se basa en el funcionamiento de la librería openssl. Utiliza criptografía de clave pública y clave privada con certificados x509 como los que hemos estado viendo en esta práctica.

! La manera en que se suele hacer es que Stunnel deja abierto un puerto seguro al exterior como puede ser el 443, este puerto será mapeado a un puerto que inicialmente no era seguro, como por ejemplo el servicio SMTP de correo.

! Veamos un ejemplo sencillo del comando que hay que ejecutar para ponerlo en marcha.

  stunnel  -­‐d  993  -­‐r  143

! La opción -d indica el puerto en el que se debe escuchar. En este caso, suponiendo que sea IMAP sobre SSL ponemos el puerto 993. La opción -r indica el host y puerto al que se debe mapear la conexión (esta ya no es SSL). Si no se indica el host como en el ejemplo anterior será que se conecte a localhost.

! Con el ejemplo mostrado estamos suponiendo que por cualquier razón no se tiene IMAPS en el servidor y un cliente se desea comunicar con éste de manera segura. Entonces el servidor estaría escuchando en el puerto 993 como es común en un servidor IMAPS y las peticiones serían entregadas al servidor de correo en el puerto 143 que es el puerto que se suele usar para IMAP sin capa de cifrado.

https://www.stunnel.org/index.html

http://es.wikipedia.org/wiki/Stunnel

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 71!

Page 72: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

7.3. Protocolo OCSP

! El protocolo OCSP (Online Certificate Status Protocol) es un protocolo para determinar el estado de revocación de un certificado digital x509 usando otros medios que no serán el uso de listas de revocación (CRL).

! Este protocolo tiene una serie de ventajas frente al uso de las listas de revocación de certificados.

• OCSP puede proporcionar una información más adecuada y reciente del estado de revocación de un certificado.

• OCSP elimina la necesidad de que los clientes tengan que obtener y procesar las CRL, ahorrando de este modo tráfico de red y procesado por parte del cliente.

• El contenido de las CRL puede considerarse información sensible, lo que significa que no debería de distribuirse.

• Tiene mecanismos de tarificación, con lo que se puede implementar una manera de cobrar al cliente de la CA por las verificaciones de certificados revocados.

• OCSP soporta el encadenamiento de confianza de las peticiones OCSP entre los "responders". Esto permite que los clientes se comuniquen con un "responder" de confianza para lanzar una petición a una autoridad de certificación alternativa dentro de la misma PKI.

• Una consulta sobre el estado de un certificado sobre una CRL, debe recorrerla completa secuencialmente para decir si es válido o no. Con este protocolo, se usa un motor de base de datos para consultar el estado del certificado solicitado, con todas las ventajas y estructura para facilitar las consultas. Esta ventaja se hace notar más cuando se trabaja con una CRL de gran tamaño.

! Es posible configurar la verificación de certificados revocados mediante OCSP en apache con el módulo mod_ssl instalado que es el que hemos instalado en esta práctica para permitir a apache atender conexiones https.

! Para usarlo habrá que especificar una serie de directivas en el VirtualHost que vayamos a usarlo. En primer lugar habrá que habilitarlo y posteriormente habrá que indicar la URL a la que se tienen que hacer las peticiones para comprobar la validez de los certificados.

#Activa  la  validación  de  cliente  con  certificadoSSLVerifyClient  on

#Activa  la  comprobación  de  caducidad  mediante  OCSPSSLOCSPEnable  on

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 72!

Page 73: Software de Comunicaciones Práctica 6 - Blog y web personal · 1. Instalación del módulo SSL!En este primer apartado se llevará a cabo la instalación del módulo SSL para el

#Indica   la   URL   del   responder   que   va   a   comprobar   la   validez   de   un  certificadoSSLOCSPDefaultResponder  http://responder.example.com:8888/responder

#Fuerza   a   que   la   comprobación   se   haga   con   el   responder   configurado  anteriormenteSSLOCSPOverrideResponder  on

! Con las directivas especificadas ya se podría usar OCSP como protocolo para la verificación de la validez de los certificados.

La información sobre OCSP la hemos obtenido de la Wikipedia y los comandos necesarios para su configuración han sido obtenidos de la web de apache.

https://httpd.apache.org/docs/trunk/mod/mod_ssl.html#sslocspdefaultresponder

http://es.wikipedia.org/wiki/Online_Certificate_Status_Protocol

! Si lo que queremos es validar el certificado de un DNI electrónico mediante este protocolo, por ejemplo con la configuración de apache explicada anteriormente podemos poner como responder esta dirección web: http://ocsp.dnielectronico.es o http://av-dnie.cert.fnmt.es/ocsp-a/OCSPServlet. Esta dirección la he encontrado simplemente buscando en google “OCSP dnie”.

! Esto supone que un cliente OCSP envía una petición sobre el estado del certificado a la Autoridad de Validación, la cual, tras consultar su base de datos, ofrece - vía http - una respuesta sobre el estado del certificado. Este servicio se encuentra activo de forma ininterrumpida todos los días del año.

Juan Díez- Yanguas Barber! Práctica 6______________________________________________________________________________________

______________________________________________________________________________________© Jdyb - Abril 2013! 73!