Certificados Digitales

Laboratorio de Seguridad en Redes, maestría en ciencias de la computación.

Contexto

Para el desarrollo de este laboratorio usé dos máquinas del laboratorio de redes móviles e inalámbricas. ICARO

Máquina A

  • Dirección IP: 190.169.74.238
  • Nombre DNS: sabermetrics.ga

Máquina B

  • Dirección IP: 190.169.74.236
  • Nombre DNS: mibanco.ga

Desarrollo

Buscar en Internet los scripts sign.sh y mkcert.sh

  • ¿Cual es la función de cada script? sign.sh firma un certificado digital generado con mkcert.sh. Dependiendo del archivo encontrado en la red, es posible que no sean compatibles con las nuevas versiones de Apache2. En consecuencia, es recomendable usar OpenSSL que funciona sin ningún contratiempo.

  • ¿Cómo hacerlos ejecutables? Son archivos shell script, en consecuencia solo debemos correrlos en cónsola usando ./.

¿Qué hace openSSL? ¿Cuantos formatos hay de certificados digitales? ¿Qué es un CSR? ¿Qué es un CRT?

OpenSSL es una librería open source que provee una suite de seguridad para generación de certificados y firmas digitales, aunado a la generación de claves públicas y privadas usando distintos formatos de certificados, encriptados con algoritmos como RSA y DSA.

Existen 4 formatos de certificados digitales para OpenSSL (.DER, .CRT, .CER, .PEM). Nosotros usamos .CRT y .PEM en la elaboración del proyecto.

.CSR es un certificate signing request que puede ser transformado en un .CRT que si es un formato de certificado digital. Para generar el .CSR necesitamos una clave privada creada previamente.

En la configuración de las páginas usando SSL utilizamos un .CRT tanto para la entidad certificadora creada por nosotros como para el certificado del web server firmado por la CA externa, en nuestro caso, Comodo.

¿Qué hace el comando openssl genrsa -des3 -out ca.key 4096?

Genera una clave ca.key usando el algoritmo RSA y tiene una longitud de 4096 bits. Es importante la petición del passphrase que debe recordar para verificar ser el dueño de la clave.

¿Qué hace el comando openssl req -new -x509 -days 7300 -key ca.key -out ca.crt?

Genera un certificado ca.crt firmado por la clave ca.key en formato x509 con una validez de 7300 días. Lo primero que se debe ingresar es el passphrase de la clave para evitar plagios y luego llenar ciertas peticiones y datos importantes. Entre los campos claves encontramos Organization name que es el campo que compara SSL para comprobar que los certificados están bien generados.

¿Qué hace el comando ./mkcert.sh NOMBRE_CERTIFICADO?

Genera un certificado de nombre NOMBE_CERTIFICADO siempre que ./mkcert.sh esté configurado adecuadamente.

¿Qué hace el comando ./sign.sh ../certs/CERTIFICADO_DE_TU_COMPAÑERO.csr?

Firma el Certificate Singing Request (.csr) con la clave que se haya generado. De tal manera que

¿Qué hace el comando openssl x509 -noout -text -in CERTIFICADO_DE_TU_COMPAÑERO.crt | less?

Imprime en cónsola toda la información de CERTIFICADO_DE_TU_COMPAÑERO.CRT. Entre las que encontramos: - Algoritmo de firma digital. - Información pertinente del certificado ingresada en el item anterior. - Clave publica (en el caso de ejemplo generada con RSA y de 4096 bits). - Identificador de clave de la autoridad certificadora. - El certificado en sí al final.

Con respecto a un servidor apache:

  • ¿Que hace el comando aptitude purge apache2?

    El comando aptitude purge apache2 elimina la configuración del servidor apache2 y, muy importante, todos los archivos relacionados a este. De esta manera, si se desea reinstalar el servidor apache2 es importante eliminar tanto las referencias al mismo, como su configuración como todos los archivos relacionados a este.

  • ¿Que hace el comando aptitude install apache2?

    A diferencia del comando anterior, aptitude install apache2 instala el servidor apache2 por defecto, si y solo si, no está ya instalado el mismo. En el caso de estar instalado previamente, el comando revisa las carpetas de configuración para ver discrepancias. De este modo, es importante que, a la hora de instalar, no estén instalaciones previas del apache.

¿Que hace el comando a2enmod ssl?

Habilita el modo SSL en el servidor Apache2. Una vez habilitado el mismo, el site default-ssl en sites-available empieza a ser útil a la hora de arrancar el servidor.

Ir al directorio /etc/apache2/, allí editar el archivo sites-available/default-ssl, para buscar y reemplazar lo siguiente

SSLCertificateFile          DIRECTORIO_HOME/TU_CERTIFICADO.crt
SSLCertificateKeyFile       DIRECTORIO_HOME/TU_CERTIFICADO.key

¿Que hace el comando a2ensite default-ssl?

Con el comando a2ensite habilitamos una configuración de página SSL en la carpeta sites-available y, al ejecutarlo, entra en el site sites-enabled al momento de reiniciar el servidor.

¿Que hace el comando /etc/init.d/apache2 restart?

Reinicia el servidor apache2, primero detiene el servicio y lo reinicia. Es importante acotar el uso de sudo service apache2 restart en nuevas versiones de apache.

Usando firefox indique les diferencias entre ambos URL’s

  • http://localhost:
    • Si colocamos http, el puerto usado es el 80 y se hace referencia al .conf default dentro de la carpeta sites-enabled. En el caso de que se modifiquen las IP en el archivo hosts, se puede modificar la dirección localhost y colocar la de preferencia si y solo si, se modificó el .conf del site en sites-available.
  • https://localhost
    • Si colocamos https, el puerto usado es el 443 y se hace referencia al .conf ssl-default dentro de la carpeta sites-enabled. De igual manera, se puede modificar el archivo hosts para ingresar con otra IP. En el caso de usar https, se infiere que la conexión es segura y se tuvo que habilitar, de antemano, el modo SSL.