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
| Uso | Qué certificado | Plantilla en la CA de Microsoft | Marca en el firewall |
|---|---|---|---|
| Que el firewall confíe en tu CA | El 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 IP | Web Server | Se usa en un SSL/TLS Service Profile |
| GUI de Panorama | Certificado de Panorama | Web Server | SSL/TLS Service Profile |
| SSL Forward Proxy (tráfico saliente) | Certificado que el firewall usa para volver a firmar los certificados de los sitios | Subordinate Certification Authority | Forward Trust Certificate |
| Sitios con certificado no válido | Certificado autofirmado que los clientes no deben confiar | Autofirmado en el firewall | Forward Untrust Certificate |
| SSL Inbound Inspection (servidor publicado) | El certificado y la clave privada del servidor | El que ya tiene el servidor | Se elige en la regla de Decryption |
| GlobalProtect, IPsec con certificados | Certificado del portal, gateway o del firewall | Web Server (o el que pida el diseño) | Se elige en el servicio |
| Autenticación de clientes por certificado | Los certificados de las CA que emiten los de los clientes | No aplica | Se 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
- En la web de la CA:
Download a CA certificate, certificate chain, or CRL> Encoding methodBase 64> Download CA certificate (archivo.cer). - Device > Certificate Management > Certificates > Device Certificates > Import.
- Certificate Type
Local, Certificate NameCorp_Trusted_CA, Certificate File (Browse), File FormatBase64 Encoded Certificate (PEM). - No marques Import Private Key (la CA raíz no lleva clave privada en este caso). OK.
- Abre el certificado importado y marca Trusted Root CA. OK y Commit.
2. Generar la CSR y obtener el certificado firmado (ejemplo: Forward Trust)
- Device > Certificate Management > Certificates > Generate.
- Certificate Type
Local, Certificate NameFW_FP_Cert, Common Namepa15.ogit.local. - Signed By:
External Authority (CSR). - Cryptographic Settings: Algorithm
RSA, Number of Bits2048, Digestsha256. - Certificate Attributes > Add: Organization y Department (por ejemplo
Our Organization,Our Department). Para un certificado de gestión, agrega también un atributoHostnameoIP, que se convierte en el Subject Alternative Name (SAN). - Generate. El certificado aparece como pendiente.
- 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íneasBEGIN CERTIFICATE REQUESTyEND CERTIFICATE REQUEST. - 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 TemplateSubordinate Certification Authority(Forward Trust) oWeb Server(gestión) > Submit. - Elige
Base 64 encoded> Download certificate. - Vuelve al firewall: Device > Certificate Management > Certificates > Import.
- Certificate Name: el mismo nombre (
FW_FP_Cert), Certificate File: el archivo descargado, File FormatBase64 Encoded Certificate (PEM). OK. - El estado cambia a
valid. - 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
- 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. - Device > Certificate Management > SSL/TLS Service Profile > Add: Name
Mgmt, Certificate el que acabas de importar, Min VersionTLSv1.2, Max VersionMax. - Device > Setup > Management > General Settings (engranaje) > SSL/TLS Service Profile
Mgmt. OK y Commit. - 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)
- Device > Certificate Management > Certificates > Generate.
- Certificate Name
Bad-Bad-Bad-Stop-Stop-Stop, Common Name (por ejemplountrusted.local), deja Signed By vacío (autofirmado) y marca Certificate Authority. - Generate.
- 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)
- Obtén el certificado y su clave privada en formato PKCS12 (
.pfxo.p12) desde el servidor. - Device > Certificate Management > Certificates > Import.
- Certificate Type
Local, Certificate Name (ej.DMZ-Servers-Cert-and-Keys), Certificate File (el.pfx), File FormatEncrypted Private Key and Certificate (PKCS12), Passphrase y Confirm Passphrase. - Marca Block Private Key Export si no quieres que se pueda extraer la clave después.
- OK y Commit. Se usa en la regla de Decryption (ver SSL Inbound Inspection).
6. Certificate Profile (validar certificados de clientes)
- Device > Certificate Management > Certificate Profile > Add. Name.
- Username Field (
Subject,Subject AltoNone) y User Domain. - CA Certificates > Add: las CA que emiten los certificados de los clientes.
- Use CRL y/o Use OCSP, con sus timeouts.
- Opcional: Block session if certificate status is unknown / on timeout.
- OK. Se usa en GlobalProtect, Authentication Portal y administración por certificado.
7. Firewall como CA local
- Device > Certificate Management > Certificates > Generate.
- Certificate Name
Local-Root-CA, Common Name, deja Signed By vacío, marca Certificate Authority. - Ú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 lugar | Qué debes ver | Si no lo ves |
|---|---|---|
| Device > Certificate Management > Certificates | El certificado con estado valid y las marcas esperadas en Usage | Si queda pendiente, falta importar el firmado con el mismo nombre |
| Abrir el certificado | Subject, Issuer, fechas de validez, y si es CA | Si Issuer no es tu CA, la plantilla o la CA fue incorrecta |
Navegador en https://<IP-o-nombre-del-firewall> | Candado sin advertencia | Revisa 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 esperado | Si falta un intermedio, importa la cadena completa |
| Tras activar decryption: el certificado que ve el cliente | Emitido por tu CA o por el firewall (Forward Trust) | Si ve el original del sitio, no se está descifrando |
show clock | Hora correcta | Si difiere, arregla NTP (ver Initial Setup y Management Plane) |
| Monitor > Logs > System | Errores 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ó.