
Durante el artículo se aborda la instalación de certificados digitales en Linux para cualquier distribución, así como la instalación de certificados en el navegador Mozilla Firefox.
Una vez instalado el certificado, abordamos la firma electrónica de archivos PDF. Esta firma le otorga validez legal a los documentos y garantiza/autentica la identidad del firmante, sea persona física organismo o empresa.
A pesar de que el título de este artículo se centra en la gestión de los certificados en sistemas GNU/Linux, en realidad muchos de los pasos son completamente válidos para Windows o MacOS. Esto es especialmente cierto cuando se usan herramientas multiplataforma, como LibreOffice, y por supuesto en plataformas en linea en las que la interfaz es un navegador web.
¿Qué es un certificado digital?
Un certificado digital es un documento electrónico que actúa como una credencial digital para identificar a una persona, organización, o dispositivo en el entorno digital.
En otras palabras, permite que cuando usted utiliza un certificado digital para realizar un trámite con la administración pública, o bien firmar un documento, otros organismos o empresas puedan tener la certeza de que es realmente usted el que realiza el trámite o firma, y no alguien intentando suplantar su identidad.
Este certificado incluye información clave, como la clave pública asociada y la autoridad emisora del certificado, entre otros datos.
Los certificados digitales son emitidos por Autoridades de Certificación (CA), que son entidades de confianza encargadas de validar la identidad de los solicitantes.
¿Para qué se utiliza un certificado digital?
Por tanto, el objetivo de un certificado digital:
- Autenticación: Permite confirmar la identidad de una persona o entidad en línea. Esto facilita operaciones muy sensibles que de otra forma solo podrían ser realizadas presencialmente.
- Firma digital: Los certificados digitales son necesarios para realizar firmas electrónicas con validez legal.
- Cifrado: Se utiliza para asegurar que la información enviada en línea, como correos electrónicos o transacciones, esté cifrada, es decir, protegida contra accesos no autorizados.
- Integridad: Garantiza que los datos o documentos no han sido alterados durante el envío o almacenamiento, proporcionando una huella digital (hash) que permite verificar que la información se mantiene intacta.
Formatos de archivo
Observe, antes de proceder con una instalación, acerca de los diferentes tipos de archivo, y su uso en función de su contenido.
El formato PKCS # 12 (archivos .p12 y .PFX)
Un archivo PKCS # 12 (con extensiones .p12 o .PFX) suele contener varios elementos:
- Certificado público: incluye la clave pública del titular.
- Clave privada: Protegida por contraseña, necesaria para la autenticación y la firma digital.
- Certificados intermedios y raíz: Que ayudan a validar la cadena de confianza del certificado público.
Las dos extensiones de archivo (.p12 y .PFX) corresponden al mismo formato, PKCS # 12, también llamado PKCS12 o PFX. Este es el formato más utilizado para el intercambio de certificados y claves privadas.
.p12 y .PFX son archivos prácticamente iguales e intercambiables. Si necesita uno de los dos y se le requiere el otro, puede simplemente cambiar su extensión, y el archivo resultante debería funcionar.
El formato PEM: (archivos .pem, .crt, .cer, y .key)
PEM (Privacy Enhanced Mail) es un formato contenedor muy común para certificados y claves digitales que es utilizado por Apache y otras plataformas de servidor web.
Observe: Los arvhivos PEM no necesariamente tienen que llevar la extensión .pem.
Los PEM pueden contener certificados públicos, claves privadas, o ambos
Diferente contenido en archivos con la misma extensión
Para complicar aun más el tema de los archivos de certificados y sus extensiones, resulta que el formato .pem puede contener tanto certificados como claves privadas. Por lo general, los archivos PEM tienen la extensión .pem, .crt, .cer, y .key. Así que un archivo con la misma extensión (p. ej. .pem) podría contener certificado, clave privada, e incluso ambos.
A menudo con los certificados digitales, la extensión del archivo no define su contenido, así que asegúrese de nombrarlos correctamente.
Por claridad y seguridad, es una buena práctica mantener en archivos distintos el certificado y la clave privada. Se explica más adelante como extraer estos dos, desde un archivo PKCS # 12.
Almacenes de certificados
Es importante que comprenda que existen diferentes almacenes de certificados. Por una parte está el almacén del sistema operativo, usado por muchas de aplicaciones como Curl, Wget, …
Después cada aplicación puede disponer de su propio almacén de certificados, como ocurre con Mozilla Firefox y Thunderbird. Estas dos aplicaciones, que le serán de extrema utilidad cuando gestione certificados y firmas electrónicas en Linux, tienen cada una su propio almacén independiente de certificados en su propio directorio. Ambas usan un almacén de certificados en formato NSS (Network Security Services), cuyo almacén global está en el directorio ~/.pki/nssdb. Sin embargo, el hecho de que ambos almacenes sean NSS no significa que su contenido sea compartido ni visible para ambos.
- En Firefox, los certificados se almacenan en ~/.mozilla/firefox/[perfil]/
- En Mozilla Thunderbird, los certificados se almacenan en ~/.thunderbird/[perfil]/
Todo lo anterior significa que si, por ejemplo, va a hacer trámites con la administración pública usando Firefox, no le servirá de nada tener certificados instalados solo en el almacén del sistema operativo.
Y al revés, si pretende usar, por ejemplo. curl para realizar solicitudes HTTP o FTP, probablemente no le servirán de nada los certificados electrónicos del almacén de Firefox.
Con esta información, podrá decidir qué almacén utilizar para instalar certificados, y por qué no puede ver certificados que cree haber instalado.
Instalación de un certificado digital en Mozilla Firefox
La instalación de certificados en Firefox le será especialmente útil para realizar trámites con la administración pública, sin necesidad de presentarse presencialmente en multitud de gestiones. Además, podrá:
- Cifrar comunicaciones: Usar certificados para proteger la confidencialidad de datos en redes seguras.
- Acceso a redes privadas virtuales (VPN): Algunas VPN requieren un certificado para autenticar al usuario. Imagine un caso en el que crea una VPN (Virtual Private Network, Red Privada Virtual) para su entorno familiar o su empresa. Los miembros autorizados pueden conectarse a esta usando Firefox y un certificado digital instalado en este, en vez de usar contraseñas. Cliente y servidor VPN se validan entre sí antes de establecer la conexión, lo que refuerza la seguridad.
- Firmar documentos en línea: Algunas plataformas permiten usar certificados para firmar digitalmente documentos o formularios.
Como ya se ha comentado, Firefox utiliza su propio almacén de certificados NSS, independiente de cualquier otro, aunque ese otro utilice también el sistema NSS. Por lo tanto, para tareas como gestiones con la administración pública, deberá importar previamente los certificados directamente a Firefox, si usa este navegador.
En este sentido, Firefox es diferente de otros navegadores como Chrome, que utiliza el almacén de certificados del sistema operativo. Por ello, si desea aprovechar las ventajas de la integración con los certificados del SO, y al mismo tiempo seguir usando software libre, una de las alternativas de que dispone es utilizar el navegador Chromium, que es la base de código abierto de Chrome.
Observe también que navegadores como Mozilla Firefox no pueden firmar digitalmente archivos de documentos como PDF. La función de los navegadores en relación con los certificados digitales es la de gestionarlos para autenticar usuarios en sitios web, o en plataformas en línea.
Para importar un certificado en Mozilla Firefox, siga estos pasos:
Menú principal de Firefox > Ajustes > Privacidad & Seguridad > apartado Seguridad - Certificados > Ver certificados > botón Importar > seleccionar el archivo PKCS # 12 (.p12).
Si el certificado se encriptó con contraseña, Firefox se la solicitará. Introdúzcala y pulse Aceptar.
Instalación de un certificado digital con certutil
certutil y este proceso instala los certificados en el almacén NSS de Firefox, en ~/.pki/nssdb, el cual, recuerde, es diferente del almacén del sistema.
Instalar certutil, como parte de la suite NSS:
sudo apt install libnss3-tools
Si no existe aún, cree un almacén NSS en su directorio de perfil:
mkdir -p ~/.pki/nssdb
certutil -N -d sql:$HOME/.pki/nssdb
Tras el segundo comando, se le solicita una contraseña, que protege el almacén de certificados NSS. No introduzca nada, y pulse directamente Enter. A continuación se le solicita que genere una nueva contraseña. Introduzca la que desee y guárdela.
Importe el certificado, sustituyendo en el siguiente comando Nombre_certificado por cualquier alias o nombre que usted elija para este, y ruta/certificado.pem, por la ruta correcta al archivo de certificado (.pem, .crt, .cer o .key):
certutil -A -n "Nombre_certificado" -t "u,u,u" -i ruta/certificado.pem -d sql:$HOME/.pki/nssdb
Se le solicitará la contraseña del almacén de certificados NSS que acaba de definir (cuidado, no es la del certificado).
Verifique la instalación del certificado
Obtenga un listado de todos los certificados instalados en el almacén NSS:
certutil -L -d sql:$HOME/.pki/nssdb
Instalación de un certificado digital en los almacenes de certificados del sistema GNU/Linux
Ciertas aplicaciones como curl o wget, requieren que el certificado esté disponible en el almacén de certificados del sistema (vea Almacenes de certificados).
Mejora práctica: Obtenga rápidamente la ruta a un directorio en Linux
Para conseguir copiar y pegar del portapapeles una ruta en Linux, fácil y rápidamente, muchos navegadores de archivos, como ‘Archivos’ de Gnome, incorporan utilidades para obtener la ruta. En una ventana de ‘Archivos’, simplemente haga clic sobre la barra de direcciones, ubicada en la parte superior, seleccione, copie la dirección usando el menú contextual del puntero, y péguela en la barra de direcciones de cualquier otra ventana/pestaña.
Además, puede abrir un directorio en el terminal muy rápidamente, pulsando sobre el menú a la derecha de la barra de direcciones, opción «Abrir en una terminal».
Importar certificado al almacén del sistema en cualquier distribución GNU/Linux
El siguiente método es válido para cualquier distribución GNU/Linux que el directorio /usr/local/share/ca-certificates/ para gestionar certificados del sistema. Su implementación requiere copiar o mover los archivos directamente al directorio del almacén del sistema.
Sin embargo, debe disponer del certificado público con extensión .crt. Si en vez de este solo dispone del formato PKCS # 12 (Archivo .p12 o .PFX), deberá extraer el certificado público a partir de este. Para realizar esta extracción, vea el apartado Extracción del certificado público (.crt o .pem) y la clave privada (.key o .pem), a partir del archivo .p12 o .PFX
Una vez disponga del certificado con extensión .crt, cópielo o múevalo a /usr/local/share/ca-certificates/, con permisos de superusuario:
sudo cp /ruta/archivo.p12 /usr/local/share/ca-certificates/
Sustituya /ruta/archivo.p12 por al ruta y nombre del archivo en su sistema.
Actualice el almacén de certificados:
sudo update-ca-certificates
Verifique con el siguiente comando la lista de los certificados instalados en el almacén del sistema:
ls /etc/ssl/certs/
Esto debería ser suficiente para que disponga del certificado en el almacén del sistema.
Importar certificado al almacén del sistema en entornos GNOME, con Contraseñas y claves/Seahorse
- Abrir el almacén de certificados:
- En Ubuntu, abra la aplicación Contraseñas y claves también conocida como Seahorse.
- Importar el certificado:
- En Contraseñas y claves, botón + > opción Importar desde un archivo > Busque y seleccione su archivo .p12 > desbloquee usando la contraseña del certificado.
Problemas de importación con Ubuntu a partir de 18.04 LTS
Si está usando un sistema Ubuntu a partir de 18.04 LTS, es probable que no pueda importar el archivo .p12. El botón queda en gris, inhabilitado. Al parecer, este es un problema específico de este sistema en estas versiones, debido a que GNOME ha dejado de dar soporte a la versión afectada de Seahorse.
Si experimenta este error, le recomendamos que utilice otra de las opciones presentadas.
Aplicaciones para firmar digitalmente un documento
Antes de firmar un documento digitalmente, debe haber un certificado digital instalado en uno de los almacenes, lo cual no significa que funcionará con cualquier almacén para cualquier aplicación. Solo sepa que las aplicaciones usan diferentes almacenes, y actué en consecuencia.
Firma digital con Autofirma
AutoFirma es una aplicación de firma electrónica desarrollada por el Ministerio de Asuntos Económicos y Transformación Digital de España. Autofirma le permitirá:
- Instalación como aplicación de escritorio. Firma de PDFs y otros documentos.
- Ejecución desde el navegador. Firma en páginas de la Administración pública, para trámites administrativos.
AutoFirma está disponible directamente para varias distribuciones como Debian, Ubuntu, Fedora y OpenSuse, y para todas las GNU/Linux con los ajustes adecuados (vea en la página de descargas del PAE el enlace AutoFirma x.x.x para Linux). También está disponible para Windows y MacOS.
AutoFirma utiliza su propio almacén interno para la firma digital y no depende del almacén de certificados del sistema ni de NSS, sino que utiliza su propio almacén interno para la firma digital. Solo deberá instalar la aplicación, sin preocuparse por ningún almacén de certificados.
AutoFirma no es la solución más ligera, pero sí una de las más fácil de usar, que además dispone de interfaz gráfica.
AutoFirma permite firmar cualquier tipo de documento, como PDFs, XML, y otros formatos comunes, utilizados principalmente en trámites electrónicos con la Administración Pública en España. Además, AutoFirma garantiza la validez legal de la firma digital conforme a la normativa europea eIDAS.
Descarga e instalación de AutoFirma
- Visitamos la página de descargas del PAE.
- Descargue la versión para su SO. Si usa Ubuntu y no hay versión para este, elija AutoFirma para Debian Linux. Nota: En general este siempre es el procedimiento a seguir para usuarios de Ubuntu. El archivo con extensión .deb es válido para todos los sistemas basdos en Debian, como Ubuntu.
- Instale el paquete, con el terminal de comandos. Sustituya AutoFirma_version.ext por el nombre del archivo:
sudo dpkg -i AutoFirma_version.ext
Si encuentra algún problema de dependencias, ejecute este comando para resolverlo:
sudo apt --fix-broken install
- Verifique la instalación de Java, ya que AutoFirma depende de este:
sudo apt install openjdk-11-jdk
Abrir Autofirma y Firmar el documento
Observe que esta firma, aunque por supuesto es válida, será bastante simple y aparecerá como texto básico, si no la acompaña de una imagen. Esto no es tan visualmente atractivo como las firmas generadas por Adobe Acrobat, que permiten una apariencia más profesional. Puede solucionar esto en el paso 4.
- Abra AutoFirma desde el lanzador de aplicaciones o desde la terminal con el comando:
AutoFirma - Pulse sobre Seleccionar ficheros a firmar. Busque y seleccione el documento. Si desea que la firma sea visible, marque esta casilla de verificación. Pulse Firmar.
- Propiedades de la firma visible. Cree un área de firma sobre la miniatura del documento que AutoFirma le presenta, arrastrando el puntero del ratón, o bien seleccione el ancho y alto que desea. Seleccione la/s páginas sobre las que desea firmar.
- Seleccione, si lo desea, una imagen para acompañar a la firma.
- Seleccione, de entre los certificados en su sistema, el que quiere usar para la firma.
- Siga los pasos y, si ha obtenido un mensaje de éxito, guarde el documento generado, ya firmado.
Firma Digital con LibreOffice Draw
Observe que LibreOffice no está exclusivamente ligado a un almacén de certificados en particular, sino que puede configurarse con rutas personalizadas. Vea Firmas digitales de la ayuda de LibreOffice.
Gestione los certificados:
Herramientas > Opciones > Seguridad > Ruta de certificado
Seleccione el llavero que utilizará la aplicación:
Herramientas > Opciones > LibreOffice > Seguridad > Ruta de certificado.
Abra el documento PDF con LibreOffice Draw y siga los pasos:
Menú Archivo > Firmas digitales > Firmas digitales > Botón firmar documento > seleccionar el certificado a usar para la firma, en la ventana emergente que aparece > botón Firmar
Firma digital con qpdf o PDFtk
Estas son herramientas de línea de comando y, como tal, tienen sus inconvenientes y ventajas con respecto a las visuales.
Las firmas que realice con qpdf o PDFtk serán válidas desde el punto de vista legal. El documento quedará firmado digitalmente, y esto se puede, lógicamente, verificar. Sin embargo, debe tener en cuenta que no habrá nada visible dentro del documento que sugiera que está firmado. Esto puede no ser conveniente para usted si necesita, por ejemplo, presentarlo impreso en papel.
Tenga también en cuenta que si solo dispone de un archivo PKCS # 12 (con extensión .p12 o .PFX), necesitará extraer el certificado y la clave privada del este. Puede hacerlo con OpenSSL, como se describe en el paso «Extracción del certificado (.crt o .pem) y la clave privada (.key o .pem), a partir del archivo .p12 o .PFX».
A pesar de este inconveniente, con qpdf y PDFtk cuenta con la ventaja de que no necesitará instalar el certificado en ningún almacén de certificados, ya que no dependen de estos. En su lugar, bastará que proporcione los archivos de certificado público y clave privada.
El siguiente comando permite firmar un documento con qpdf. Sustituya clave_privada.pem y certificado.pem y doc.pdf por el nombre de sus archivos, así como doc_salida.pdf, por el nombre que desea para el documento resultante firmado:
qpdf --sign clave_privada.pem certificado.pem doc.pdf doc_salida.pdf
Herramientas en línea para firmar digitalmente
Herramientas como DocuSign o HelloSign le permitirán firmar documentos en línea, pero no son gratuitas. DocuSign, concretamente, ofrece una prueba gratuita de 30 días. Este permite compartir el documento firmado con nuestro cliente.
Herramientas que NO permiten la firma con certificado digital
Las siguientes aplicaciones, de las que tal vez lea, no permiten la firma con certificado digital. En vez de esto permiten realizar una firmar a mano alzada, que será visible como un garabato: Xournal++, SmallPDF y PDF Arranger.
OpenSSL
OpenSSL es una biblioteca de software libre (open source) de línea de comandos, clave para operaciones con certificados digitales X.509, usados en la autenticación, firma digital y cifrado en aplicaciones y sitios web.
OpenSSL es, en definitiva, una pieza clave en la ciberseguridad.
Está disponible para Linux, Windows, y macOS.
Si utiliza Linux, OpenSSL probablemente ya esté instalado en su sistema.
Si trata con certificados, probablemente necesitará OpenSSL en algún momento.
Algunos de los usos comunes de OpenSSL:
- Generación de claves y certificados. Puede generar pares de claves (pública y privada), generando así sus propios certificados digitales.
- Cifrado y descifrado de archivos o mensajes, con algoritmos como AES o DES. Puedes cifrar cualquier archivo antes de enviarlo para asegurar que su contenido no sea legible si es interceptado. Después, el receptor podrá descifrarlo utilizando la clave correspondiente.
- Gestión de conexiones seguras: Puede probar conexiones seguras en servidores y verificar la seguridad de los certificados TLS en servidores web.
Instalación de OpenSSL
Actualice la lista de paquetes:
sudo apt update
Instale OpenSSL:
sudo apt install openssl
Con el siguiente comando verificamos la versión de OpenSSL:
openssl version
Extracción del certificado público (.crt o .pem) y la clave privada (.key o .pem), a partir del archivo .p12 o .PFX
Los archivos PKCS # 12 contienen tanto su certificado digital como su clave privada. Por este motivo, si solo dispone de un archivo PKCS # 12 (con extension .p12 o .pfx), hay ciertas situaciones en las que deba extraer de este el certificado a un archivo .crt o .pem, y la clave privada a un archivo .key o .pem.
Nota importante: este paso no siempre es necesario, y dependerá de qué aplicación/herramienta va a utilizar para la firma digital.
¿Por qué extraer los archivos separados?
En algunos contextos de seguridad, es conveniente tener estos archivos separados. Por otra parte, ciertas aplicaciones no admiten archivos .p12 directamente.
Extracción con OpenSSL
A continuación obtendremos, (en el caso de que no dispongamos aun de ellos) el certificado (.crt) y la clave privada (.key) a partir de un archivo .p12. Para ellos usaremos la aplicación OpenSSL.
Para obtener el certificado, use el comando:
openssl pkcs12 -in archivo.p12 -clcerts -nokeys -out certificado.crt
…donde debe sustituir:
- archivo.p12 por el nombre de su archivo .p12.
- certificado.crt por el nombre que tendrá el archivo resultado de la extracción.
Para obtener el archivo de clave privada, use el comando:
openssl pkcs12 -in archivo.p12 -nocerts -out clave.key
…donde clave.key es el archivo que contendrá la clave privada.
Solución al error de algoritmo no habilitado o soportado en la versión de OpenSSL
Siga estos pasos solo en el caso de que haya obtenido un error de algoritmo no soportado.
Cargar el proveedor de algoritmos heredados:
Habilite los algoritmos legacy usando la variable de entorno:
export OPENSSL_CONF=/etc/ssl/openssl.cnf
Edite el archivo /etc/ssl/openssl.cnf. Agregue al final de este las siguientes líneas:
# Contenido agregado manualmente. Esta indicación no es obligatoria, pero siempre es una buena práctica
\# Contenido agregado manualmente. Esta indicación no es obligatoria, pero siempre es una buena práctica
openssl_conf = openssl_init
[openssl_init]
providers = provider_sect
[provider_sect]
default = default_sect
legacy = legacy_sect
[default_sect]
activate = 1
[legacy_sect]
activate = 1
Y esto habilitará los algoritmos heredados en OpenSSL. Ejecute de nuevo el comando para extraer la clave privada y el certificado.
Extracción en línea
Aunque tal vez no sea la opción más sensata, si está teniendo dificultades para hacerlo localmente con su software, puede extraer los archivos con un servicio en línea, como p. ej. LeaderSSL.
De cualquier forma, intente en la medida de lo posible realizar este paso con su software local, siguiendo los pasos del punto anterior.
Bibliografía y recursos
🌐 [ssl.com] Exportar certificados y clave privada de un archivo PKCS # 12 con OpenSSL
🌐 [firmaelectronica.gob.es] Firma electrónica > Navegadores y ordenador. Información útil sobre: el lector de DNI electrónico, Importar y exportar certificados
🌐 [help.libreoffice.org] Firmas digitales
Relacionado
GNU/Linux · manual de introducción
Manual de introducción a GNU/Linux: historia y características; software libre vs privativo; hardware compatible, instalación, …

