Gestión del CA y certificados autofirmados

Este camino queda descartado

Debido a que no es posible poner el certificado de CA en un android sin que estén continuamente saltando alarmas de seguridad. Aparece el mensaje "Podria estar siendo espiado". Haría falta ser root para poder instalar el certificado como de confianza.

Se utiliza la via let's encrypt.

Estamos siguiendo los pasos de https://jamielinux.com/docs/openssl-certificate-authority/

Apuntes generales

TODO: rehacer según se está haciendo ahora

  • Actualmente la gestión de la CA se hace en el contenedor ca_certs
  • Los CA están en un pendrive (negro retráctil de la Sandisk)
  • Los archivos implicados en el CA son:
    • lechuga_eu_CA.key.pem Clave privada y encriptada del certificado de autoridad
    • lechuga_eu_CA.cert.pem ''Certificado raíz a instalar en los
    • lechuga_eu_CA.srl
  • La configuración para la gestión de la CA está en /root/ca/openssl.cnf

Creación del certificado raíz propio (CA)

¡El certificado raíz ya está creado!

Revocado del certificado raíz.

Este proceso ha de ejecutarse en última instancia, en el caso que se haya comprometido el CA.

Creación de una CA Intermedia

La creación de una CA Intermedia, que puede firmar certificados en nombre de la CA principal, es para evitar utilizar esta última. De esta manera, si la CA Intermedia resulta comprometida, la CA principal puede revocarla.

Así minimizamos el tiempo de exposición de la CA principal.

Las CA intermedias se almacenan en el subdirectorio CAintermedia

Pasos a seguir:

  1. Creación de la clave intermedia encriptada (guardar la clave)
    openssl genpkey -algorithm rsa -des3 -out /root/ca/intermediate/privatelechuga_eu_ICA.key.pem -pkeyopt rsa_keygen_bits:4096
  2. Protegemos el archivo de clave
    chmod 400 /root/ca/intermediate/private/lechuga_eu_ICA.key.pem
  3. Creación del CSR para firmar con la CA raíz
    openssl req -config /root/ca/intermediate/openssl.cnf -new -sha256 -key /root/ca/intermediate/private/lechuga_eu_ICA.key.pem -out /root/ca/intermediate/csr/lechuga_eu_ICA.csr.pem
  4. Firmamos la solicitud (csr) con la clave privada de la CA raíz y generamos el certificado del ICA
    openssl ca -config openssl.cnf -extensions v3_intermediate_ca -days 365 -notext -md sha256 -in /root/ca/intermediate/csr/lechuga_eu_ICA.csr.pem -out /root/ca/intermediate/certs/lechuga_eu_ICA.cert.pem
  5. Aseguramos los permisos
    chmod 444 /root/ca/intermediate/certs/lechuga_eu_ICA.cert.pem
  6. Creamos una cadena de certificados, concatenando el de la CA y el de la ICA
    cat /root/ca/intermediate/certs/lechuga_eu_ICA.cert.pem /root/ca/certs/lechuga_eu_CA.cert.pem > /root/ca/intermediate/certs/lechuga_eu_ICA_cadena_trust.cert.pem
  7. Aseguramos los permisos
    chmod 444 /root/ca/intermediate/certs/lechuga_eu_ICA_cadena_trust.cert.pem

Creación de certificados de servidor

https://jamielinux.com/docs/openssl-certificate-authority/sign-server-and-client-certificates.html

NOS HEMOS QUEDADO AQUÍ

Miscelánea de comandos

Check a private key (CA and others)
openssl rsa -in privateKey.key -check

Check a certificate
openssl x509 -in certificate.crt -text -noout

Check a Certificate Signing Request (CSR)
openssl req -text -noout -verify -in CSR.csr