# Autoridad de certificación

> Crea o importa una autoridad de certificación (CA) en Ironchip y emite certificados de servidor y de cliente para HTTPS, SSH, SSL y VPN IPsec.

URL: https://docs.ironchip.com/identidad/administracion/autoridad-de-certificacion/

Ironchip puede actuar como autoridad de certificación (CA) para emitir y gestionar certificados de servidor (HTTPS y SSH) y de cliente (HTTPS, SSL y VPN IPsec). Esta página explica cómo crear o importar la CA, emitir certificados y gestionar su ciclo de vida.

## Requisitos

- Acceso a la consola de Ironchip con rol de administrador.
- Conocer el uso previsto de los certificados (HTTPS, SSH, SSL o VPN IPsec).
- Para actuar como CA intermedia: el certificado y la clave privada de la CA superior, o un CSR firmado por ella.

## Crear la autoridad de certificación

El primer paso es crear la CA en la consola de Ironchip. Ironchip puede funcionar de dos formas:

- **CA final (raíz)**: Ironchip firma directamente los certificados. Es la opción más sencilla para entornos cerrados.
- **CA intermedia**: Ironchip firma los certificados con una CA subordinada, cuya firma procede de la CA corporativa. Es la opción recomendada cuando ya existe una PKI.

1. Ve a **Certificates** y haz clic en **New CA**.
2. Selecciona el tipo de CA (**Root CA** o **Intermediate CA**) y completa estos campos:
   - **Name**: nombre identificativo de la CA.
   - **Common Name**: nombre que aparece en el campo CN del certificado de la CA.
   - **Key algorithm**: RSA 4096 o ECDSA P-384. Se recomienda ECDSA P-384 para nuevas implantaciones.
   - **Validity**: periodo de validez de la CA. En una CA intermedia, no puede superar el de la CA superior.
   - **Path length**: número máximo de CA subordinadas que pueden depender de esta CA. Si la CA solo emite certificados finales, indica `0`.
3. Si has seleccionado **Intermediate CA**, haz clic en **Generate CSR**, descarga el archivo y fírmalo con tu CA superior. Después, vuelve a esta pantalla y haz clic en **Upload signed certificate** para cargar el certificado firmado junto con la cadena completa.
4. Haz clic en **Create CA**.

La clave privada se genera y se almacena cifrada en Ironchip, y no se puede exportar.

## Importar una CA existente

Si ya tienes una CA y quieres que Ironchip la use para emitir certificados:

1. Ve a **Certificates** y haz clic en **Import CA**.
2. Carga estos archivos:
   - El certificado de la CA en formato PEM.
   - La clave privada de la CA en formato PEM, con o sin contraseña.
   - La cadena de certificados hasta la raíz, si existe.

Antes de importar, comprueba que la clave privada corresponde al certificado. Ejecuta estos comandos y verifica que las dos huellas coinciden:

```bash
openssl x509 -in ca.crt -noout -pubkey | openssl sha256
openssl pkey -in ca.key -pubout | openssl sha256
```

:::note
Una CA importada con su clave privada pasa a estar gestionada por Ironchip. Si no quieres que la clave salga de tu infraestructura, usa el modo de CA intermedia mediante CSR.
:::

## Emitir certificados de servidor (HTTPS y SSH)

Para emitir un certificado de servidor, ve a **Certificates**, selecciona la CA y haz clic en **New certificate**. Elige el perfil que corresponda.

### Perfil HTTPS

Genera un certificado con el uso de clave Server Authentication. Indica el Common Name y los Subject Alternative Names (DNS o IP) del servicio. Puedes pegar un CSR propio o dejar que Ironchip genere el par de claves.

Si prefieres generar la clave en el propio servidor, crea el CSR con este comando y pega su contenido en la consola:

```bash
openssl req -new -newkey rsa:4096 -nodes -keyout servidor.key -out servidor.csr -subj "/CN=intranet.empresa.com" -addext "subjectAltName=DNS:intranet.empresa.com"
```

### Perfil SSH

Genera un certificado de host SSH firmado por la CA, de modo que los clientes confíen en el servidor sin tener que aceptar su huella a mano. Pega la clave pública del servidor (por ejemplo, el contenido de `/etc/ssh/ssh_host_ed25519_key.pub`) e indica los hostnames válidos.

1. Descarga el certificado emitido y cópialo en el servidor.
2. Añade esta línea a `/etc/ssh/sshd_config`:

   ```text title="/etc/ssh/sshd_config"
   HostCertificate /etc/ssh/ssh_host_ed25519_key-cert.pub
   ```

3. En los clientes, añade la CA como autoridad de confianza en `~/.ssh/known_hosts`:

   ```text title="~/.ssh/known_hosts"
   @cert-authority *.empresa.com <clave pública de la CA SSH>
   ```

4. Reinicia el servicio SSH para aplicar los cambios:

   ```bash
   sudo systemctl restart sshd
   ```

## Emitir certificados de cliente (HTTPS, SSL y VPN IPsec)

Los certificados de cliente permiten autenticar el dispositivo o al usuario frente a un servicio. Ve a **Certificates**, selecciona la CA y haz clic en **New certificate** con uno de estos perfiles:

- **Client HTTPS/SSL**: certificado con el uso de clave Client Authentication, para mTLS en aplicaciones web y servicios SSL.
- **VPN IPsec**: certificado con los usos de clave Client Authentication e IPsec end system, para túneles IKEv2 con certificados.

Para cada certificado de cliente, indica:

- **Subject**: usuario o dispositivo al que se asocia el certificado. Si seleccionas un usuario de Ironchip, el certificado queda vinculado a su identidad.
- **Validity**: periodo de validez. Se recomienda un máximo de 12 meses para los certificados de dispositivo.
- **Export format**: PEM o PKCS#12 (`.p12`). Con PKCS#12, define una contraseña de exportación.

Descarga el certificado e instálalo en el dispositivo. Este es un ejemplo de configuración de un cliente IKEv2 con strongSwan:

```ini title="ipsec.conf"
conn ironchip-vpn
    keyexchange=ikev2
    left=%any
    leftcert=cliente.crt
    leftid=%fromcert
    right=vpn.empresa.com
    rightid=@vpn.empresa.com
    rightsubnet=0.0.0.0/0
    auto=start
```

El servidor VPN debe tener instalado el certificado de la CA de Ironchip como autoridad de confianza, para validar los certificados de los clientes.

## Gestionar el ciclo de vida de los certificados

En **Certificates** puedes consultar todos los certificados emitidos, filtrarlos por CA, perfil, usuario o estado, y ejecutar estas acciones:

- **Renew**: emite un nuevo certificado con los mismos datos y mantiene el anterior hasta que caduque.
- **Revoke**: revoca el certificado e indica el motivo. La revocación se publica de inmediato en la CRL y en el servicio OCSP.
- **Download**: descarga el certificado o la cadena completa.
- **Export audit log**: descarga el historial de emisiones, renovaciones y revocaciones.

Para que los servicios consulten el estado de revocación, configura en ellos estas URL, sustituyendo `<id-ca>` por el identificador de tu CA:

```text
CRL:  https://pki.ironchip.com/crl/<id-ca>.crl
OCSP: https://pki.ironchip.com/ocsp/<id-ca>
```

En el apartado **Alerts**, define con cuántos días de antelación quieres recibir un aviso por correo de los certificados que están a punto de caducar.
