Configuración Técnica

⚙️ Configuración TÉCNICA avanzada: Los secretos que solo conocen los expertos

Guía técnica oficial FNMT sobre formatos de certificado (.pfx, .p12, .cer), OIDs, validez temporal, números de serie y aspectos técnicos avanzados.

Autor: Carlos Ruiz - Técnico en Sistemas
#configuracion-tecnica #pfx #p12 #cer #crt #oids #numero-serie #validez #fnmt #tecnico

Configuración técnica avanzada del certificado digital: formatos, OIDs y validez

¿Necesitas entender los aspectos técnicos de tu certificado digital? Esta guía oficial de la FNMT explica formatos, identificadores, validez y configuración avanzada.

🎯 Para desarrolladores y técnicos

  • 🔍 Analizar estructuras de certificados - � Convertir entre formatos (.pfx, .p12, .cer) - 📊 Extraer información técnica (OIDs, validez) - ⚙️ Configurar sistemas empresariales - 🛠️ Solucionar problemas técnicos avanzados
⚠️ ⚠️ Guía técnica especializada

Esta guía está dirigida a administradores de sistemas, desarrolladores y personal técnico. Si buscas información básica, consulta nuestras guías para usuarios.

Formatos de archivo de certificados

FormatoExtensiónContieneUso principalSeguridad
PKCS#12.pfx / .p12Clave privada + públicaBackup e instalación🔐 Alta (contraseña)
X.509.cer / .crtSolo clave públicaVerificación de firmas🔓 Pública
DER.derBinario X.509Sistemas automatizados🔓 Pública
PEM.pemTexto X.509Servidores Unix/Linux🔓 Pública
JKS.jksJava KeyStoreAplicaciones Java🔐 Alta (contraseña)

📄 PKCS#12 (.pfx / .p12) - Formato completo

🔑 Lo que necesitas saber de PKCS#12

  • Contiene TODO → Clave privada + pública + cadena de certificados - 🔒 Protegido → Siempre requiere contraseña - 📦 Portátil → Perfecto para transferir entre sistemas - 🏆 Estándar → Compatible con todos los sistemas

Estructura interna técnica:

archivo.pfx:
├── Certificado de usuario (X.509)
├── Clave privada RSA (cifrada AES/3DES)
├── Certificado AC FNMT Usuarios
├── Certificado AC Raíz FNMT-RCM
├── Metadatos de validez
└── Información de algoritmos

Características técnicas:

  • Cifrado: AES-256 o 3DES
  • Integridad: HMAC-SHA256
  • Formato: ASN.1 DER
  • Estándar: RFC 7292

📄 X.509 (.cer / .crt) - Solo parte pública

🌐 Certificados públicos X.509

  • Sin clave privada → Solo para verificación - ✅ Compartible → Se puede enviar por email - 🔍 Verificación → Para validar firmas de otros - 📈 Ligero → Tamaño muy pequeño

Usos técnicos específicos:

  • Configurar cadenas de confianza
  • Validar firmas digitales de terceros
  • Intercambio de claves públicas
  • Configuración de servidores web

Conversión entre formatos

1

Extraer certificado público de .pfx

Con OpenSSL (Linux/Mac):

# Extraer solo el certificado público
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out certificado.cer

# Extraer en formato PEM
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -nodes -out certificado.pem

Con PowerShell (Windows):

# Cargar el certificado PKCS#12
$pfx = Get-PfxCertificate -FilePath "certificado.pfx"

# Exportar solo la parte pública
$cert = $pfx.Export([System.Security.Cryptography.X509Certificates.X509ContentType]::Cert)
[System.IO.File]::WriteAllBytes("certificado.cer", $cert)
2

Convertir PFX a formatos Java

Crear Java KeyStore (JKS):

# Convertir PFX a JKS
keytool -importkeystore \
  -srckeystore certificado.pfx -srcstoretype PKCS12 \
  -destkeystore certificado.jks -deststoretype JKS

Crear PKCS#8 para Java:

# Extraer clave privada en formato PKCS#8
openssl pkcs12 -in certificado.pfx -nocerts -nodes | \
openssl pkcs8 -topk8 -inform PEM -outform DER -out clave_privada.pk8 -nocrypt

Información técnica de certificados FNMT

� OIDs (Object Identifiers) oficiales

ComponenteOIDDescripción técnica
AC Raíz FNMT-RCM1.3.6.1.4.1.8571.2.1.1Autoridad certificadora raíz
AC FNMT Usuarios1.3.6.1.4.1.8571.2.1.2Autoridad para personas físicas
AC Componentes1.3.6.1.4.1.8571.2.1.3Autoridad para componentes
AC Representación1.3.6.1.4.1.8571.2.1.4Autoridad para entidades
Política de certificación1.3.6.1.4.1.8571.2.2Política QCP+ (cualificada)
Número de serie FNMT1.3.6.1.4.1.8571.3.1Identificador único FNMT

🔍 Análisis técnico de certificados

1

Extraer información técnica completa

Con OpenSSL:

# Información completa del certificado
openssl x509 -in certificado.cer -text -noout

# Verificar cadena de certificación
openssl verify -CAfile ac_raiz_fnmt.cer -untrusted ac_usuarios_fnmt.cer certificado.cer

# Extraer solo datos específicos
openssl x509 -in certificado.cer -noout -subject -issuer -dates -serial

Salida típica:

Subject: CN=NOMBRE APELLIDO1 APELLIDO2 - 12345678Z,
         serialNumber=IDCES-12345678Z,
         givenName=NOMBRE,
         surname=APELLIDO1 APELLIDO2,
         O=FNMT-RCM,
         C=ES

Issuer: CN=AC FNMT Usuarios,
        OU=Ceres,
        O=FNMT-RCM,
        C=ES

Serial Number: 500a1b2c3d4e5f67 (hex)
Not Before: Jan  1 09:00:00 2024 GMT
Not After:  Jan  1 09:00:00 2028 GMT

Con PowerShell (Windows)

$cert = Get-PfxCertificate -FilePath “certificado.pfx” Export-Certificate -Cert $cert -FilePath “certificado.cer”


#### Verificar contenido de .pfx:

```bash
# Listar contenido
openssl pkcs12 -in certificado.pfx -info -noout

# Extraer certificado
openssl pkcs12 -in certificado.pfx -clcerts -nokeys -out cert.pem

# Extraer clave privada
openssl pkcs12 -in certificado.pfx -nocerts -nodes -out key.pem

Identificadores OID (Object Identifier)

🔢 ¿Qué son los OIDs?

Los OIDs son identificadores únicos que definen:

  • Políticas de certificación
  • Usos permitidos del certificado
  • Algoritmos criptográficos
  • Extensiones específicas

📋 OIDs principales de la FNMT

Certificados de Persona Física:

Política de Certificación:
- 1.3.6.1.4.1.18332.1.1.1.1 (Ciudadano)
- 1.3.6.1.4.1.18332.1.1.1.2 (Ciudadano cualificado)

Uso de clave:
- Autenticación cliente
- Firma digital
- No repudio

Certificados de Representación:

Política de Certificación:
- 1.3.6.1.4.1.18332.1.1.1.3 (Representante)
- 1.3.6.1.4.1.18332.1.1.1.4 (Representante cualificado)

Capacidades adicionales:
- Representación legal
- Firma en nombre de terceros

🔍 Verificar OIDs de tu certificado

En Windows:

  1. Doble clic en certificado
  2. Detalles > Directivas de certificado
  3. Ver identificadores OID

Con OpenSSL:

# Mostrar todos los OIDs
openssl x509 -in certificado.cer -text -noout

# Filtrar políticas específicas
openssl x509 -in certificado.cer -text -noout | grep -A 10 "Certificate Policies"

En Firefox:

  1. Ver certificado > Detalles
  2. Buscar “Directivas de certificado”
  3. Expandir para ver OIDs

Información del número de serie

🔢 ¿Qué es el número de serie?

El número de serie es un identificador único asignado por la FNMT a cada certificado emitido.

📍 Localizar número de serie

En el certificado (Windows):

  1. Doble clic en certificado instalado
  2. General > Número de serie
  3. Formato: Hexadecimal (ej: 4A 2B 1C 3D…)

En archivo .pfx:

# Con OpenSSL
openssl pkcs12 -in certificado.pfx -clcerts -nokeys | openssl x509 -serial -noout

# Resultado ejemplo: serial=4A2B1C3D4E5F6789

En el navegador:

  1. Acceder a sitio que usa certificado
  2. Ver certificado en la barra de direcciones
  3. Detalles > Número de serie

🔍 Usos del número de serie

Para identificación:

  • Soporte técnico de la FNMT
  • Revocación específica
  • Auditoría de certificados
  • Troubleshooting técnico

Para verificación:

  • Comprobar estado en CRL
  • Validar autenticidad
  • Seguimiento de uso

Período de validez del certificado

📅 Certificados de Persona Física

Duración estándar:

  • 4 años desde la fecha de emisión
  • Renovable hasta 6 meses antes
  • No prorrogable tras caducidad

Fechas importantes:

Ejemplo de certificado emitido el 15/01/2024:
├── Válido desde: 15/01/2024 10:30:00 UTC
├── Válido hasta: 15/01/2028 10:30:00 UTC
├── Renovable desde: 15/07/2027
└── Caducidad final: 15/01/2028

🏢 Certificados de Representación

Duración específica:

  • Misma duración que persona física (4 años)
  • Vinculado a la vigencia del cargo
  • Revocable si cesa la representación

🕐 Verificación de fechas

Comprobar validez actual:

# Con OpenSSL
openssl x509 -in certificado.cer -dates -noout

# Resultado:
# notBefore=Jan 15 10:30:00 2024 GMT
# notAfter=Jan 15 10:30:00 2028 GMT

En Windows:

  1. certmgr.msc > Personal > Certificados
  2. Ver columna “Fecha de expiración”
  3. Ordenar por fecha para próximos a caducar

Script PowerShell para monitoreo:

# Verificar certificados próximos a caducar
Get-ChildItem Cert:\CurrentUser\My | Where-Object {
    $_.Subject -like "*FNMT*" -and
    $_.NotAfter -lt (Get-Date).AddMonths(3)
} | Select-Object Subject, NotAfter, @{
    Name="DaysUntilExpiry"
    Expression={($_.NotAfter - (Get-Date)).Days}
}

Algoritmos criptográficos utilizados

🔐 Algoritmos estándar FNMT

Firma digital:

  • RSA con SHA-256 (estándar actual)
  • Tamaño de clave: 2048 bits mínimo
  • Hash: SHA-256 (obsoleto: SHA-1)

Cifrado:

  • RSA 2048 bits
  • Compatible con estándares PKCS#1
  • Algoritmos de padding seguros

🔍 Verificar algoritmos de tu certificado

# Información completa del certificado
openssl x509 -in certificado.cer -text -noout | grep -E "(Algorithm|Public Key)"

# Resultado ejemplo:
# Signature Algorithm: sha256WithRSAEncryption
# Public Key Algorithm: rsaEncryption
# RSA Public-Key: (2048 bit)

⚠️ Algoritmos obsoletos

Ya no se usan:

  • SHA-1 (inseguro desde 2017)
  • RSA 1024 bits (insuficiente)
  • MD5 (comprometido)

Migración recomendada:

  • Renovar certificados con SHA-1
  • Verificar algoritmos actuales
  • Planificar actualizaciones

Extensiones del certificado

📝 Extensiones estándar

Key Usage (Uso de clave):

- Digital Signature (Firma digital)
- Key Encipherment (Cifrado de clave)
- Non Repudiation (No repudio)

Extended Key Usage:

- Client Authentication (1.3.6.1.5.5.7.3.2)
- Email Protection (1.3.6.1.5.5.7.3.4)
- Code Signing (1.3.6.1.5.5.7.3.3) [solo algunos]

Subject Alternative Name:

- Email: usuario@email.com
- RFC822 Name: usuario@email.com

🔍 Interpretar extensiones

Verificar capacidades:

# Mostrar extensiones
openssl x509 -in certificado.cer -text -noout | grep -A 20 "X509v3 extensions"

# Buscar usos específicos
openssl x509 -in certificado.cer -text -noout | grep -A 5 "Key Usage"

Extensiones críticas:

  • Basic Constraints: Define si es CA
  • Key Usage: Usos permitidos de la clave
  • Certificate Policies: Políticas aplicables

Validación y revocación

🔍 Lista de Certificados Revocados (CRL)

URLs oficiales FNMT:

CRL Principal:
http://www.cert.fnmt.es/crlsac/crlac.crl

CRL Ciudadanos:
http://www.cert.fnmt.es/crlsac/ciudadanos.crl

CRL Componentes:
http://www.cert.fnmt.es/crlsac/componentes.crl

Verificar estado de revocación:

# Descargar CRL
wget http://www.cert.fnmt.es/crlsac/crlac.crl

# Verificar certificado contra CRL
openssl crl -in crlac.crl -text -noout | grep -A 2 "NUMERO_SERIE"

🌐 OCSP (Online Certificate Status Protocol)

Servidor OCSP FNMT:

URL: http://ocsp.cert.fnmt.es
Método: GET/POST
Respuesta: Good/Revoked/Unknown

Verificación OCSP:

# Verificar estado online
openssl ocsp -issuer ca-cert.pem -cert certificado.pem -url http://ocsp.cert.fnmt.es -resp_text

Configuración de almacenes de certificados

🖥️ Windows Certificate Store

Ubicaciones estándar:

Personal (My):
- Certificados del usuario actual
- Ruta: Cert:\CurrentUser\My

Trusted Root (Root):
- Autoridades raíz confiables
- Ruta: Cert:\LocalMachine\Root

Intermediate CA (CA):
- Autoridades intermedias
- Ruta: Cert:\LocalMachine\CA

Gestión con PowerShell:

# Listar certificados personales
Get-ChildItem Cert:\CurrentUser\My

# Importar certificado
Import-PfxCertificate -FilePath "cert.pfx" -CertStoreLocation Cert:\CurrentUser\My

# Exportar certificado
Export-PfxCertificate -Cert $cert -FilePath "backup.pfx" -Password $pwd

🦊 Firefox NSS Database

Estructura de NSS:

~/.mozilla/firefox/profile/
├── cert9.db (certificados)
├── key4.db (claves privadas)
└── pkcs11.txt (módulos)

Comandos NSS:

# Listar certificados
certutil -L -d ~/.mozilla/firefox/profile

# Importar .p12
pk12util -i certificado.p12 -d ~/.mozilla/firefox/profile

# Verificar certificado
certutil -V -n "Nombre Certificado" -u V -d ~/.mozilla/firefox/profile

Configuración de servidores web

🌐 Apache HTTP Server

Configuración SSL:

SSLEngine on
SSLCertificateFile /path/to/server.crt
SSLCertificateKeyFile /path/to/server.key
SSLCACertificateFile /path/to/fnmt-ca.crt

# Verificación de certificados cliente
SSLVerifyClient require
SSLVerifyDepth 3
SSLCACertificateFile /path/to/fnmt-client-ca.crt

🔧 Nginx

Configuración SSL:

ssl_certificate /path/to/server.crt;
ssl_certificate_key /path/to/server.key;
ssl_client_certificate /path/to/fnmt-ca.crt;
ssl_verify_client on;
ssl_verify_depth 3;

☁️ IIS (Internet Information Services)

Configuración cliente:

  1. IIS Manager > SSL Settings
  2. Require SSL
  3. Client certificates: Require
  4. Import FNMT CA certificates

Troubleshooting técnico avanzado

🔍 Diagnóstico de certificados

Script de diagnóstico completo:

#!/bin/bash
# Diagnóstico completo de certificado

CERT_FILE="$1"

echo "=== INFORMACIÓN BÁSICA ==="
openssl x509 -in "$CERT_FILE" -subject -issuer -dates -noout

echo -e "\n=== ALGORITMOS ==="
openssl x509 -in "$CERT_FILE" -text -noout | grep -E "(Algorithm|Public Key)"

echo -e "\n=== EXTENSIONES ==="
openssl x509 -in "$CERT_FILE" -text -noout | grep -A 20 "X509v3 extensions"

echo -e "\n=== VERIFICACIÓN ==="
openssl verify -CAfile fnmt-ca.crt "$CERT_FILE"

Verificación de cadena de certificados:

# Verificar cadena completa
openssl verify -CAfile root-ca.crt -untrusted intermediate-ca.crt certificado.crt

# Mostrar cadena
openssl crl2pkcs7 -nocrl -certfile certificado.crt | openssl pkcs7 -print_certs -text -noout

🛠️ Problemas comunes técnicos

Error: “Certificate chain incomplete”

Solución:

# Crear cadena completa
cat certificado.crt intermediate-ca.crt root-ca.crt > certificado-completo.crt

Error: “Wrong algorithm”

Verificación:

# Comprobar algoritmo
openssl x509 -in certificado.crt -text -noout | grep "Signature Algorithm"

# Si es SHA-1, renovar certificado

Error: “Clock skew”

Solución:

# Sincronizar reloj del sistema
ntpdate -s time.nist.gov  # Linux
w32tm /resync            # Windows

Herramientas de desarrollo

🔧 OpenSSL (multiplataforma)

Instalación:

# Ubuntu/Debian
sudo apt install openssl

# CentOS/RHEL
sudo yum install openssl

# macOS
brew install openssl

# Windows
# Descargar desde https://slproweb.com/products/Win32OpenSSL.html

Comandos útiles:

# Generar CSR
openssl req -new -key private.key -out request.csr

# Convertir formatos
openssl pkcs12 -export -in cert.crt -inkey private.key -out certificate.pfx

# Verificar conexión SSL
openssl s_client -connect servidor:443 -servername servidor

🔍 Herramientas de análisis

SSL Labs (online):

Qualys SSL Client Test:

  • Verificación de configuración cliente
  • Compatibilidad con navegadores
  • Análisis de vulnerabilidades

Conclusión

La configuración técnica avanzada de certificados digitales requiere comprensión de:

Aspectos clave:

  • Formatos y sus diferencias (.pfx vs .cer)
  • OIDs y políticas de certificación
  • Algoritmos criptográficos actuales
  • Validación y revocación (CRL/OCSP)
  • Herramientas de diagnóstico

Mejores prácticas técnicas:

  • 🔧 Monitorea caducidades automáticamente
  • 🔒 Usa algoritmos actuales (SHA-256, RSA 2048+)
  • 📊 Verifica estados de revocación
  • 🛠️ Mantén herramientas actualizadas
  • 📋 Documenta configuraciones

¿Necesitas ayuda con configuraciones específicas? Consulta la documentación técnica oficial de la FNMT o contacta con su soporte técnico especializado.

Artículos relacionados