# origin-certs y origin-tls

> Emite, lista y revoca certificados de la OpenWAF Origin CA para tus servidores de origen, comprueba el TLS del borde a cada origen y descarga las CA.

Los certificados de origen se instalan en **tu** servidor de origen para que el borde pueda verificarlo cuando un nombre usa el modo TLS de origen `full_strict`. Los firma la OpenWAF Origin CA, en la que solo confía el borde de OpenWAF. Emitirlos y revocarlos queda en la auditoría, pero no crea versión de la zona.

## origin-certs list

```text
origin-certs list <zona> [--json]
```

Los certificados de origen de la zona, del más reciente al más antiguo: id, estado (`vigente`, `revocado`, `caducado`), nombres, tipo de clave, caducidad y número de serie. Las claves privadas nunca se muestran.

## origin-certs create

```text
origin-certs create <zona> <nombre>… --cert-out <fichero|-> [--key-out <fichero|->] [--key-type ecdsa|rsa] [--days N] [--csr <fichero>] --reason "…"
```

Emite un certificado para uno o varios nombres: la propia zona, nombres por debajo de ella o comodines `*.nombre`. La API comprueba antes la petición; cuando confirmas, se emite el certificado y se escriben los ficheros.

| Opción | Significado |
|---|---|
| `--cert-out <fichero\|->` | **Obligatoria.** Fichero nuevo para el certificado seguido de la Origin CA (PEM); `-` escribe en la salida estándar. |
| `--key-out <fichero\|->` | **Obligatoria sin `--csr`.** Fichero nuevo para la clave privada, creado con permisos `0600`; `-` escribe en la salida estándar. OpenWAF genera la clave, la entrega una sola vez y no la guarda. |
| `--key-type ecdsa\|rsa` | Clave que genera OpenWAF: `ecdsa` (P-256, por defecto) o `rsa` (2048 bits). Sin efecto con `--csr`. |
| `--days N` | Validez: `7`, `30`, `90`, `365`, `730`, `1095` o `5475` (15 años, por defecto). |
| `--csr <fichero>` | Una petición de certificado PEM hecha en el origen. La clave nunca sale de tu servidor; entonces no se admite `--key-out`. |

La CLI nunca sobrescribe un fichero: si `--cert-out` o `--key-out` ya existen, se detiene antes de llamar a la API. `--cert-out` y `--key-out` no pueden ser `-` los dos.

```sh
openwaf-cloud ctl origin-certs create example.com example.com '*.example.com' \
  --cert-out origin.pem --key-out origin.key --reason "Servidor de origen nuevo"
```

Instala los dos ficheros en el origen y pon la zona (o el nombre) en `origin.tls_verify=full_strict` con [`zones set`](https://developers.openwaf.dev/es/cli/reference/zones/#zones-set).

## origin-certs revoke

```text
origin-certs revoke <zona> <id> --reason "…"
```

Revoca un certificado de origen (id de `origin-certs list`). Los nodos de borde lo rechazan en `full_strict` desde su siguiente configuración, así que un origen que aún lo sirva recibe errores `526`. Revocar un certificado ya revocado no hace nada.

## origin-tls status

```text
origin-tls status <zona> [--json]
```

Para cada nombre con proxy: su origen, el modo TLS (`full` cifra sin verificar, `full_strict` verifica), el nombre que se verifica, si el borde presenta su certificado de cliente (mTLS) y si el origen lo pide, qué ve una comprobación desde el plano de control en el origen (caducidad del certificado y de quién se fía) y los errores `525`/`526` del borde en las últimas 24 horas. La comprobación se guarda 60 segundos.

## origin-tls ca

```text
origin-tls ca [--client]
```

Imprime una CA pública en PEM. No necesita token.

| Opción | Significado |
|---|---|
| (ninguna) | La OpenWAF Origin CA: en qué confía el borde en `full_strict`, además de las CA públicas. |
| `--client` | La CA de cliente del borde: en qué debe confiar tu origen si exige el certificado de cliente del borde. |

```sh
openwaf-cloud ctl origin-tls ca --client > openwaf-edge-client-ca.pem
```
