Ejercicios sobre certificados digitales

  1. Análisis de un certificado de servidor:

    1. Obtenga exclusivamente el certificado de servidor de la página del Ayuntamiento de Rota. Si se descarga el certificado con el navegador, es probable que obtenga los certificados intermedios. En ese caso elimínelos, porque una de las tareas posteriores es obtenerlos personalmente y no dejar que el navegador haga esta tarea por usted.

    2. Obtenga el Subject y el Issuer del certificado.

    3. ¿Cuándo caduca?

    4. Obtenga la cadena de certificados de confianza hasta llegar al certificado raíz.

    5. ¿Tenía ya el certificado raíz instalado en el sistema? Puede comprobando calculando su hash y viendo si está en /etc/ssl/certs (échele una lectura rápida a la descripción de este directorio).

    6. Verifique la validez del certificado.

    7. Compruebe si está revocado.

    Nota

    Con algunos navegadores es posible descargar el certificado. De lo contrario, puede obtenerlo con openssl:

    $ openssl s_client -servername SERVIDOR -connect SERVIDOR:443 < /dev/null | openssl x509
    

    donde SERVIDOR es el nombre del servidor (p.e. www.juntadeandalucia.es).

  2. Obtención de un certificado de servidor:

    1. Como para generar un certificado de servidor mediante el desafío HTTP es necesario tener una máquina directamente accesible desde internet, cree una máquina virtual que disponga de IP pública. Ilustre todo el proceso que ha llevado a cabo para lograrlo, incluido el proceso de alta, si ha tenido que darse de alta en algún servicio. Las características de la máquina deben ser las siguientes:

      • La mínima posible.

      • Puerto 22 abierto.

      • Acceso SSH mediante usuario/contraseña.

    2. Prepare la máquina virtual convenientemente, lo cual incluye:

    3. Créese un dominio virtual gratuito en freenom (escoja el que más le guste) y en la definición de la zona asocie el nombre www a la máquina virtual anterior.

    4. Instale acme.sh en la máquina virtual, preferiblemente mediante la creación previa de un paquete de Debian, como se explica en el manual.

    5. Instale y configure mínimamente un servidor nginx. A pesar de la abundante documentación, se le exponen aquí los pasos de instalación para que el servidor quede funcionando en modo no seguro:

      1. Instalar el paquete nginx-light.

      2. Sustituir el contenido de /etc/nginx/sites-available/default por este otro:

        server {
           listen 80;
        
           server_name _;
        
           root /srv/www/default;
           try_files $uri $uri/ =404;
        }
        
      3. Cree el directorio /srv/www/default,

      4. Incluya dentro del directorio anterior un fichero index.html con cualquier código HTML.

      5. Reinicie el servicio:

        # invoke-rc.d nginx restart
        
      6. Pruebe desde un navegador a conectar con el servidor web para ver la página.

    6. Genere para su nombre de servidor un certificado Let’s Encrypt según se expone en los apuntes e instálelo. ¿Cuántos archivos se exportan para que los use el servidor web? ¿Cómo se llaman y qué contiene cada uno?

    7. Compruebe que acme.sh lista el certificado.

    8. Modifique la configuración del servidor para atender al tráfico seguro.

    9. Accede por HTTPs al servidor y cerciórese de que el certificado es válido.

    10. Averigüe con openssl cuál es la cadena de confianza completa del certificado.

    11. Verique que el certificado es válido y que no está revocado.

    12. Revoque el certificado haciendo uso de acme.sh (y desinstálelo pero sin borrarlo).

    13. Vuelva a comprobar el certificado usando OCSP. ¿Es ahora válido?

    14. Elimine los archivos de certificado y vuelva a obtener otro certificado para dejar el servidor nuevamente en funcionamiento.

  3. Obtención de un certificado personal:

    1. Si no se posee ya, obtenga un certificado personal de la FNMT acudiendo a la autoridad de registro más cercana. Describa, en cualquier caso, cómo es el proceso de obtención incluyendo capturas de pantalla de la parte que se hace con el navegador.

    2. Exportar en formato .p12 el certificado almacenado en el navegador.

    3. Use openssl para extraer la clave privada en formato PEM.

    4. Obtenga y separe en distintos archivos todas las claves públicas que contenga el .p12. ¿Cuál es la cadena completa de certificados hasta el certificado raíz? ¿De qué direcciones de internet se pueden obtener los certificados de CA incluidos en la cadena, en caso de que no los contuviera el archivo .p12?

    5. Verifique el certificado y compruebe que no está revocado.

    6. ¿Incluye su certificado personal entre los datos identificativos el correo electrónico? Si lo incluye, ¿en qué campo del certificado se encuentra?

    7. Importe el certificado personal en un navegador Chromium/Edge cerciorándose de que es exportable, esto es, de que podremos volver a generar un archivo .p12.

    8. Descargue la aplicación Java Autofirma y utilícela para firmar un documento PDF cualquiera. Una vez hecho esto:

      • Utilice la dirección que facilita esta propia aplicación para verificar la validez de la firma.

      • Use pdfsig(1) para realizar esta misma verificación.

        Advertencia

        tenga en cuenta que en este segundo caso se verifica utilizando la parte pública del certificado, pero la firma podría aún ser inválida por estar éste revocado. Por tanto, para que en realidad la verificación fuera total, debería verificarse el propio certificado utilizando el servicio OCSP, que es asunto del ejercicio siguiente.