# Certificados del borde

> Cómo emite y renueva OpenWAF un certificado de Let's Encrypt para cada nombre con proxy, y qué significan Válido, Pendiente y Fallido.

El **certificado del borde** es el que ven los visitantes al abrir `https://www.example.com`. OpenWAF lo obtiene de Let's Encrypt mediante ACME en cuanto un nombre pasa por el proxy, lo instala en todos los nodos del borde que sirven la zona y lo renueva antes de que caduque. No hay nada que configurar.

## Cómo se emite

OpenWAF demuestra a Let's Encrypt que controla cada nombre con un reto que depende de dónde esté el DNS de la zona:

| Zona | Reto | Cuándo puede empezar |
|---|---|---|
| Delegada (OpenWAF sirve el DNS) | **DNS-01**: OpenWAF publica el registro del reto en su propio DNS. | En cuanto se detecta la delegación en los servidores de nombres de OpenWAF. |
| Externa (el DNS sigue en tu proveedor) | **HTTP-01**: el borde de OpenWAF responde al reto. | En cuanto el nombre apunta al borde (`CNAME` a `edge.openwaf.dev`). |

En una zona delegada, cuando muchos nombres justo por debajo de la zona necesitan certificado a la vez, OpenWAF puede emitir un único certificado comodín (`*.example.com` más `example.com`) en lugar de uno por nombre. Solo DNS-01 puede validar comodines, así que las zonas externas siempre reciben un certificado por nombre.

> **Nota**
>
> Si tu zona tiene registros `CAA`, uno de ellos debe permitir `letsencrypt.org`; si no, Let's Encrypt se niega a emitir.


## Renovación

OpenWAF renueva un certificado automático unos 30 días antes de que caduque. Si un intento falla, lo reintenta con esperas cada vez mayores (desde 30 minutos hasta una vez al día) y el panel muestra el error y el próximo intento. Los certificados renovados llegan a los nodos del borde con su siguiente configuración, sin cortar el tráfico.

## Estados del certificado

**SSL/TLS › Certificados › Sitios** muestra una fila por nombre con proxy:

| Estado | Significado |
|---|---|
| **Válido** | Un certificado sirve el nombre y no hay nada pendiente. |
| **Pendiente** | Toca emitir o renovar, o ya está en curso. Justo después de una delegación suele tardar unos minutos. |
| **Fallido** | El último intento falló. **Detalles** muestra el error, el número de intentos fallidos y el próximo intento. |

La columna **Origen** indica de dónde sale el certificado que se sirve: **Automático (ACME)** o **Subido por un operador** (un certificado *manual*). OpenWAF nunca sustituye un certificado manual por uno automático; solo avisa cuando va a caducar. Subir certificados no es autoservicio: si necesitas un certificado concreto en un nombre, escribe a support@openwaf.dev.

El **Inventario de certificados** recoge todos los certificados guardados de la zona con sus nombres, caducidad, huella SHA-256 y estado de emisión.

**Panel**

Abre la zona y ve a **SSL/TLS › Certificados**.

**CLI**

```sh
openwaf-cloud ctl certs list example.com
```

**API**

```sh
curl -s https://dash.openwaf.dev/v1/orgs/$ORG/zones/$ZONE/certs \
  -H "Authorization: Bearer $OPENWAF_TOKEN"
```

La respuesta trae `items` (los certificados guardados, cada uno con su estado de emisión en `issuance`) y `sites` (una entrada por nombre con proxy con `state`, `source`, `not_after`, `days_left`, `challenge`, `last_error`, `failures` y `next_attempt_at`).

**MCP**

Pide a tu asistente los certificados de la zona; llamará a `list_certificates` con `{"zone": "example.com"}`.


## TLS entre los visitantes y el borde

- El borde solo acepta **TLS 1.2 y TLS 1.3**. Con TLS 1.2 solo ofrece intercambio de claves ECDHE con AES-GCM o ChaCha20-Poly1305.
- El intercambio de claves prefiere el grupo híbrido poscuántico **X25519MLKEM768**, y después X25519 y P-256, así que los navegadores que lo admiten obtienen protección poscuántica sin hacer nada.
- Las peticiones por HTTP se redirigen a HTTPS con un `301`. Para que los navegadores ni siquiera hagan la petición HTTP, activa [HSTS](https://developers.openwaf.dev/es/ssl/hsts/).

## Relacionado

- [Solución de problemas: certificados pendientes o fallidos](https://developers.openwaf.dev/es/ssl/troubleshooting/#certificate-pending-or-failed)
- [Modos de TLS con el origen](https://developers.openwaf.dev/es/ssl/origin-tls/): el otro tramo de la conexión.
