Certificates y PKI

Resumen

Un certificado digital es un documento que une una clave pública con una identidad (un nombre de servidor, una persona, un firewall) y que está firmado por una Certificate Authority (CA) en la que los demás confían. Quien recibe el certificado comprueba la firma; si confía en esa CA, confía en la identidad. Detrás hay un par de claves: la privada, que nunca sale del equipo que la creó, y la pública, que va dentro del certificado.
En un firewall Palo Alto los certificados se usan para cosas muy distintas: que la GUI de administración no muestre advertencias del navegador, que el firewall pueda descifrar tráfico HTTPS (SSL Forward Proxy e Inbound Inspection), que funcionen GlobalProtect y las VPN IPsec, y para autenticar clientes. Cada uso necesita un certificado con propiedades distintas, y casi todos los problemas vienen de usar el certificado o la plantilla equivocada. Esta nota explica cómo importar una CA de confianza, generar una solicitud de firma (CSR), importar el certificado firmado, y cómo se marca cada certificado según su uso.

Requisitos previos

  • Una CA que firme tus certificados: una CA interna (por ejemplo Microsoft Active Directory Certificate Services), una CA pública, o el propio firewall como CA local
  • Acceso a la web de la CA (en Microsoft: http://<servidor-CA>/certsrv) y permisos para solicitar certificados
  • Hora correcta en el firewall (NTP), porque un certificado “aún no válido” por diferencia de hora falla
  • Saber para qué sirve el certificado, porque eso decide la plantilla y las marcas (ver la tabla siguiente)
  • Un lugar seguro para respaldar claves privadas (PKCS12) si las vas a exportar

Qué certificado va para cada uso

UsoQué certificadoPlantilla en la CA de MicrosoftMarca en el firewall
Que el firewall confíe en tu CAEl certificado raíz de tu CA (sin clave privada)No aplica (se descarga)Trusted Root CA
GUI de administración (HTTPS)Certificado del firewall con su nombre o IPWeb ServerSe usa en un SSL/TLS Service Profile
GUI de PanoramaCertificado de PanoramaWeb ServerSSL/TLS Service Profile
SSL Forward Proxy (tráfico saliente)Certificado que el firewall usa para volver a firmar los certificados de los sitiosSubordinate Certification AuthorityForward Trust Certificate
Sitios con certificado no válidoCertificado autofirmado que los clientes no deben confiarAutofirmado en el firewallForward Untrust Certificate
SSL Inbound Inspection (servidor publicado)El certificado y la clave privada del servidorEl que ya tiene el servidorSe elige en la regla de Decryption
GlobalProtect, IPsec con certificadosCertificado del portal, gateway o del firewallWeb Server (o el que pida el diseño)Se elige en el servicio
Autenticación de clientes por certificadoLos certificados de las CA que emiten los de los clientesNo aplicaSe agregan a un Certificate Profile

Forward Trust debe ser una CA

El certificado de Forward Trust tiene que poder firmar otros certificados. Por eso se pide con la plantilla Subordinate Certification Authority. Con una plantilla de servidor web, los navegadores mostrarán advertencias.

graph TD
    A["Firewall genera el par de claves<br/>y un CSR (la privada se queda en el firewall)"] --> B["Copias el CSR a la CA"]
    B --> C["La CA firma con la plantilla correcta"]
    C --> D["Descargas el certificado firmado<br/>(Base64)"]
    D --> E["Importas en el firewall<br/>con el MISMO nombre"]
    E --> F["El estado pasa a valid;<br/>marcas su uso"]

Configuración (Ejemplo, Lab PCNSA)

1. Importar la CA raíz y confiar en ella

  1. En la web de la CA: Download a CA certificate, certificate chain, or CRL > Encoding method Base 64 > Download CA certificate (archivo .cer).
  2. Device > Certificate Management > Certificates > Device Certificates > Import.
  3. Certificate Type Local, Certificate Name Corp_Trusted_CA, Certificate File (Browse), File Format Base64 Encoded Certificate (PEM).
  4. No marques Import Private Key (la CA raíz no lleva clave privada en este caso). OK.
  5. Abre el certificado importado y marca Trusted Root CA. OK y Commit.

2. Generar la CSR y obtener el certificado firmado (ejemplo: Forward Trust)

  1. Device > Certificate Management > Certificates > Generate.
  2. Certificate Type Local, Certificate Name FW_FP_Cert, Common Name pa15.ogit.local.
  3. Signed By: External Authority (CSR).
  4. Cryptographic Settings: Algorithm RSA, Number of Bits 2048, Digest sha256.
  5. Certificate Attributes > Add: Organization y Department (por ejemplo Our Organization, Our Department). Para un certificado de gestión, agrega también un atributo Hostname o IP, que se convierte en el Subject Alternative Name (SAN).
  6. Generate. El certificado aparece como pendiente.
  7. Selecciona el certificado y pulsa Export Certificate para descargar el archivo .csr. Ábrelo con un editor de texto y copia todo el contenido, incluidas las líneas BEGIN CERTIFICATE REQUEST y END CERTIFICATE REQUEST.
  8. En la CA: Request a certificate > Advanced certificate request > Submit a certificate request by using a base-64-encoded CMC or PKCS #10 file > pega el contenido > Certificate Template Subordinate Certification Authority (Forward Trust) o Web Server (gestión) > Submit.
  9. Elige Base 64 encoded > Download certificate.
  10. Vuelve al firewall: Device > Certificate Management > Certificates > Import.
  11. Certificate Name: el mismo nombre (FW_FP_Cert), Certificate File: el archivo descargado, File Format Base64 Encoded Certificate (PEM). OK.
  12. El estado cambia a valid.
  13. Abre el certificado y marca su uso: Forward Trust Certificate. OK y Commit.

La clave privada se genera en el firewall al crear la CSR y nunca sale de él; la CSR contiene la clave pública.

3. Certificado para la GUI de administración

  1. Repite los pasos de la sección 2 con Common Name igual al FQDN o IP con la que entras, un atributo SAN (Hostname o IP) y la plantilla Web Server.
  2. Device > Certificate Management > SSL/TLS Service Profile > Add: Name Mgmt, Certificate el que acabas de importar, Min Version TLSv1.2, Max Version Max.
  3. Device > Setup > Management > General Settings (engranaje) > SSL/TLS Service Profile Mgmt. OK y Commit.
  4. Vuelve a entrar a la GUI: el navegador debe mostrar el candado, siempre que el equipo cliente confíe en tu CA.

Para Panorama es lo mismo: Panorama > Certificate Management > Certificates, y el perfil en Panorama > Setup > Management.

4. Forward Untrust (certificado que los clientes no deben confiar)

  1. Device > Certificate Management > Certificates > Generate.
  2. Certificate Name Bad-Bad-Bad-Stop-Stop-Stop, Common Name (por ejemplo untrusted.local), deja Signed By vacío (autofirmado) y marca Certificate Authority.
  3. Generate.
  4. Abre el certificado y marca Forward Untrust Certificate. Commit.

Así, cuando un sitio presenta un certificado no válido, el firewall entrega este certificado al cliente, que verá una advertencia y no podrá confiar en el sitio.

5. Certificado de un servidor publicado (Inbound Inspection)

  1. Obtén el certificado y su clave privada en formato PKCS12 (.pfx o .p12) desde el servidor.
  2. Device > Certificate Management > Certificates > Import.
  3. Certificate Type Local, Certificate Name (ej. DMZ-Servers-Cert-and-Keys), Certificate File (el .pfx), File Format Encrypted Private Key and Certificate (PKCS12), Passphrase y Confirm Passphrase.
  4. Marca Block Private Key Export si no quieres que se pueda extraer la clave después.
  5. OK y Commit. Se usa en la regla de Decryption (ver SSL Inbound Inspection).

6. Certificate Profile (validar certificados de clientes)

  1. Device > Certificate Management > Certificate Profile > Add. Name.
  2. Username Field (Subject, Subject Alt o None) y User Domain.
  3. CA Certificates > Add: las CA que emiten los certificados de los clientes.
  4. Use CRL y/o Use OCSP, con sus timeouts.
  5. Opcional: Block session if certificate status is unknown / on timeout.
  6. OK. Se usa en GlobalProtect, Authentication Portal y administración por certificado.

7. Firewall como CA local

  1. Device > Certificate Management > Certificates > Generate.
  2. Certificate Name Local-Root-CA, Common Name, deja Signed By vacío, marca Certificate Authority.
  3. Úsalo después en el desplegable Signed By para emitir otros certificados (por ejemplo para pruebas o laboratorios). Para producción, usa una CA empresarial.

8. Exportar y respaldar

Selecciona el certificado > Export Certificate > File Format Encrypted Private Key and Certificate (PKCS12) para incluir la clave (solo si no marcaste Block Private Key Export).

Verificación

Comando o lugarQué debes verSi no lo ves
Device > Certificate Management > CertificatesEl certificado con estado valid y las marcas esperadas en UsageSi queda pendiente, falta importar el firmado con el mismo nombre
Abrir el certificadoSubject, Issuer, fechas de validez, y si es CASi Issuer no es tu CA, la plantilla o la CA fue incorrecta
Navegador en https://<IP-o-nombre-del-firewall>Candado sin advertenciaRevisa SAN, perfil, y que el cliente confíe en la CA
openssl s_client -connect <IP>:443 -servername <nombre> (desde un Linux)La cadena de certificados y el Issuer esperadoSi falta un intermedio, importa la cadena completa
Tras activar decryption: el certificado que ve el clienteEmitido por tu CA o por el firewall (Forward Trust)Si ve el original del sitio, no se está descifrando
show clockHora correctaSi difiere, arregla NTP (ver Initial Setup y Management Plane)
Monitor > Logs > SystemErrores de certificado o de commitÚtil para ver la causa exacta

Errores comunes

El certificado queda como pendiente (no valid)

  • Causa: no se importó el certificado firmado, o se importó con otro nombre y se creó un certificado distinto.
  • Solución: Import con el mismo Certificate Name que usaste al generar la CSR.

El navegador del cliente advierte con el Forward Trust

  • Causa: los clientes no confían en la CA que firmó el certificado del firewall, o el certificado no es una CA.
  • Solución: distribuye la CA raíz a los clientes (por ejemplo con una GPO) y usa la plantilla Subordinate Certification Authority.

La GUI sigue mostrando advertencia después de instalar el certificado

  • Causa: falta el SAN (Hostname o IP) que coincida con cómo entras, no se asignó el SSL/TLS Service Profile, o falta el commit.
  • Solución: genera el certificado con el atributo SAN correcto, asigna el perfil en Device > Setup > Management y haz commit. Entra con el mismo nombre o IP del certificado.

No puedo exportar la clave privada

  • Causa: el certificado se importó con Block Private Key Export.
  • Solución: es intencional. Para tener una copia, importa de nuevo desde el original.

El certificado del servidor se importó pero Inbound Inspection falla

  • Causa: se importó solo el certificado sin la clave privada.
  • Solución: importa el PKCS12 con la clave.

”Certificate not yet valid” o expirado

  • Causa: la hora del firewall está mal, o el certificado venció.
  • Solución: corrige NTP, o renueva el certificado antes de que venza (anota las fechas de expiración).

Falla la validación de certificados de clientes

  • Causa: el Certificate Profile no tiene la CA correcta, no tiene la cadena completa, o el CRL/OCSP no es alcanzable.
  • Solución: agrega las CA (raíz e intermedias) y verifica la conectividad hacia el CRL u OCSP.

Los navegadores viejos no pueden entrar a la GUI

  • Causa: el SSL/TLS Service Profile exige TLS 1.2 como mínimo.
  • Solución: usa un navegador actual, o baja el mínimo solo si es imprescindible.

El certificado no aparece en las listas desplegables

  • Causa: falta commit, o el certificado no está en el contexto correcto (por ejemplo, en Panorama el certificado está en otro Template).
  • Solución: haz commit y revisa dónde se creó.