Apuntes sobre Protocolo TLS y Gestión de Certificados

Gestión Centralizada de Certificados (Fedora / RHEL)

Fedora utiliza un sistema de gestión de certificados llamado SharedSystemCertificates para proveer un almacén de certificados centralizado en el sistema.

Aplicaciones como Firefox prestan atención a este almacén central, aunque algunas aplicaciones gestionan sus certificados de forma independiente (como herramientas con almacenes NSS propios o librerías específicas).

Desgraciadamente, como el software puede escoger la manera de gestionar los certificados, es necesaria la adopción de la característica Fedora enforcing y ser diligentes si queremos que nuestro sistema haga uso de él.

Estructura de Directorios del Almacén Central

Las rutas principales utilizadas por el subsistema ca-certificates son:

Directorios del sistema de confianza

Ruta

Propósito

/etc/pki/ca-trust/source/anchors/

Certificados CA de confianza añadidos por el administrador.

/etc/pki/ca-trust/source/blacklist/

Certificados explícitamente revocados o aislados.

/etc/pki/tls/certs/ca-bundle.crt

Bundle consolidado generado automáticamente para OpenSSL.

Procedimiento para Aislar (Blacklisting) Certificados No Deseados

Históricamente o de forma manual, se han utilizado enlaces simbólicos directos hacia la ruta de blacklist:

$ for f in /etc/ssl/certs/*.pem; do sudo ln -sfn "$f" /etc/ca-certificates/trust-source/blacklist/; done
$ update-ca-trust

Para verificar los recuentos de certificados presentes y aislados:

$ sudo rm DigiCert_* GeoTrust_* Go_Daddy_* GlobalSign_* VeriSign_* StartCom_Certification_Authority* Comodo_* AddTrust_* Thawte_* thawte_Primary_Root_CA* Baltimore_CyberTrust_Root.pem UTN_USERFirst_Hardware_Root_CA.pem Visa_eCommerce_Root.pem

$ ls /etc/ssl/certs/*.pem | wc -l
206
$ ls /etc/ca-certificates/trust-source/blacklist/ | wc -l
163

Procedimiento estándar para descargar y aislar un certificado remoto:

$ < /dev/null openssl s_client -showcerts -connect www1.cnnic.cn:https > ccnic
# mv ccnic /etc/pki/ca-trust/source/blacklist/
# update-ca-trust extract

Es necesario reiniciar la aplicación (por ejemplo, Firefox) para que recargue el almacén actualizado por SharedSystemCertificates.

Diagnóstico e Inspección con OpenSSL

Inspección de Certificados Locales

Para verificar el contenido, fechas de validez e emisor de un archivo PEM:

$ openssl x509 -in certificado.crt -text -noout

Verificación de Conexiones TLS Remotas

Para comprobar la cadena de certificados devuelta por un servidor web:

$ openssl s_client -connect dominio.com:443 -servername dominio.com -CAfile /etc/pki/tls/certs/ca-bundle.crt

Fundamentos del Protocolo TLS

Versiones del Protocolo

Comparativa de versiones TLS

Versión

Estado y Características

TLS 1.2

Soporta algoritmos de cifrado auténtico (AEAD). Se encuentra obsoleto en configuraciones de alta seguridad si utiliza intercambios de clave no efímeros.

TLS 1.3

Estándar actual. Reduce la latencia de negociación a 1-RTT, elimina cifradores inseguros y obliga el uso de Secreto Perfecto Hacia Adelante (PFS).

Políticas de Cifrado en Fedora (Crypto-Policies)

Fedora permite definir el nivel de seguridad criptográfica global para todas las aplicaciones del sistema mediante el comando update-crypto-policies:

# update-crypto-policies --show
# update-crypto-policies --set FUTURE
Niveles de Crypto-Policies

Política

Descripción

DEFAULT

Nivel equilibrado entre compatibilidad y seguridad.

LEGACY

Permite algoritmos antiguos (como TLS 1.0/1.1) para sistemas heredados.

FUTURE

Desactiva algoritmos débiles y exige parámetros criptográficos de alta resistencia.

Referencias y Fuentes