Administración de autoridades de certificación de confianza en Debian

Lo primero que debemos tener en cuenta es que hay que diferenciar entre gestión de CA a nivel de sistema y a nivel de aplicación OpenSSL, Firefox, Java (keystores y demás)… no son lo mismo. Otra cosa es que una aplicación haga uso de la gestión de CA a nivel de sistema, pero de entrada debes saber que como digo, no son lo mismo.

Por ponerte un ejemplo, en Firefox/Iceweasel las CA de confianza contra las que se compara el origen de los certificados podemos verlas en Preferencias → Avanzado → Certificados → Ver Certificados

En Java más de lo mismo. Por ejemplo un entorno JRE (Java Runtime Environment) tendrá su almacén de Autoridades de Confianza en un keystore propio llamado cacerts, que podemos listar con:

keytool -keystore "$JAVA_HOME/jre/lib/security/cacerts" -storepass changeit -list

Esta estructura de certificados es así para todo sistema, independientemente de que yo aquí vaya a hablar del mejor que existe que es Debian por supuesto. En otra distro como Fedora, que es el conejillo de indias de Red Hat, será igual aunque variarán directorios, localizaciones, etc… pero teóricamente la explicación también te servirá para que entiendas las estructura de certificados.

El paquete ca-certificates

Una vez realizada la anterior introducción y aclaración de conceptos, vamos a pasar a estudiar el caso que nos ocupa. Los certificados CA de confianza de sistema en Debian se instalan con el paquete ca-certificates.

Y ese paquetito lo instalamos (si no lo tenemos) con:

aptitude install ca-certificates

Puedes ver los certificados de CA de confianza instalados en el sistema en:

/etc/ssl/certs

Como verás tienen extensión .pem, por lo que están codificados en Base64. Si haces un cat en alguno de ellos podrás ver el contenido del certificado entre los epígrafes BEGIN CERTIFICATE y END CERTIFICATE:

Los nuevos certificados se instalan desde:

/usr/share/ca-certificates/

Añadir CA de confianza al sistema Debian

Imaginemos que nuestra organización ha creado una CA propia nueva que se va a utilizar para emitir certificados en el entorno local de la misma. Lo suyo sería que esa CA fuera reconocida de confianza dentro de esa organización.

Pues bien, el certificado raíz de la CA deberá tener extensión .crt. Creamos un directorio para nuestra CA en:

mkdir /usr/share/ca-certificates/miCA

Ahora copiamos en ese directorio el certificado raíz de nuestra CA (por poner un ejemplo testca.crt). Recuerda que debe tener extensión .crt. Para resolver dudas y realizar conversiones de formato, esto te puede ayudar.

Bien, una vez situado el certificado donde tiene que estar, podemos añadir la CA de confianza al sistema operativo de dos maneras:

dpkg-reconfigure ca-certificates

O bien con:

update-ca-certificates

Prefiero la primera, ya que nos permitirá seleccionar qué certificados queremos quitar/añadir del sistema, entre ellos podremos seleccionar el nuestro. Cuando nos pregunte si deseamos confiar en los nuevos certificados de CA, seleccionamos “Ask” y después se desplegará una lista con todos los certificados que podremos añadir/quitar según consideremos. Entre esos certificados debería estar el nuestro (testca.crt).

Una vez finalizamos damos a ok y se ejecutará el script update-ca-certificates que actualizará el almacén de certificados de CA del sistema Debian a partir de los certificados que lea en /usr/share/ca-certificates.