

# Uso del certificado de ACM propio para el TLS mutuo de backend en API Gateway
<a name="rest-api-acm-client-certificates"></a>

Puede configurar API Gateway para que presente su propio certificado firmado por una autoridad de certificación a los servicios de backend. Importe su certificado a AWS Gestor de certificados (ACM) o emita uno a través de AWS Autoridad de certificación privada. A continuación, vincule el ARN del certificado de ACM a su etapa de API.

## Requisitos previos
<a name="rest-api-acm-client-certificates-prereqs"></a>

Antes de configurar un certificado de cliente de ACM, debe tener lo siguiente:
+ Acceso a AWS Gestor de certificados en la misma región que la API.
+ Permisos de IAM: `acm:ImportCertificate` y `acm:DescribeCertificate` (para importar con la opción A), o `acm:RequestCertificate` (para la opción B) o `acm-pca:IssueCertificate`, `acm-pca:GetCertificate`, y `acm:ImportCertificate` (para la opción C).
+ Una API de REST implementada en una etapa.

## Paso 1: Importar un certificado o emitir uno mediante AWS Autoridad de certificación privada
<a name="rest-api-acm-client-certificates-import"></a>

Puede importar un certificado del PKI existente o emitir uno nuevo a través de AWS Autoridad de certificación privada. Ambas rutas producen un ARN de certificado de ACM que se utiliza en el siguiente paso.

**nota**  
Los certificados públicos de ACM no se admiten para la autenticación de clientes de backend. A partir del 11 de junio de 2025, AWS Gestor de certificados ya no emitirá certificados públicos con el uso extendido de claves (EKU) `clientAuth`. Esta característica requiere ese EKU, así que utilice un certificado que importe a ACM o uno emitido a través de AWS Autoridad de certificación privada.

**nota**  
Cree el certificado de ACM en la misma región de AWS que la API de REST que lo utilizará. Los certificados de ACM son recursos regionales, por lo que el certificado debe existir en la región de la API.

### Opción A: Importar desde el PKI existente
<a name="rest-api-acm-client-certificates-import-pki"></a>

Para importar un certificado de cliente y su clave privada a ACM, ejecute el siguiente comando. Para obtener más información, consulte [Importación de certificados](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) en la *Guía del usuario de AWS Gestor de certificados*.

```
aws acm import-certificate \
  --certificate fileb://{{client-cert.pem}} \
  --private-key fileb://{{private-key.pem}} \
  --certificate-chain fileb://{{ca-chain.pem}} \
  --region {{region}}
```

El comando devuelve el ARN del certificado de ACM. Registre este valor para el siguiente paso.

### Opción B: solicitar un certificado a través de AWS Autoridad de certificación privada (administrado por ACM)
<a name="rest-api-acm-client-certificates-import-pca"></a>

Para solicitar un certificado privado que ACM administre y pueda renovar automáticamente, ejecute el siguiente comando. Para obtener más información, consulte [Solicitud de un certificado privado](https://docs.aws.amazon.com/acm/latest/userguide/gs-acm-request-private.html) en la *Guía del usuario de AWS Gestor de certificados*.

```
aws acm request-certificate \
  --domain-name {{www.example.com}} \
  --certificate-authority-arn arn:aws:acm-pca:{{us-east-1}}:{{123456789012}}:certificate-authority/{{12345678-1234-1234-1234-123456789012}} \
  --region {{region}}
```

El comando devuelve el ARN del certificado de ACM. Registre este valor para el siguiente paso.

### Opción C: emitir a través de AWS Autoridad de certificación privada e importar a ACM
<a name="rest-api-acm-client-certificates-import-pca-manual"></a>

Si necesita controlar directamente los parámetros del certificado (como las extensiones personalizadas o los algoritmos de firma), puede emitir un certificado a través de AWS Autoridad de certificación privada e importarlo a ACM. ACM no renueva automáticamente los certificados importados de esta manera. Asegúrese de que el certificado cumpla con los [requisitos del certificado](#rest-api-acm-client-certificates-requirements). Para obtener más información sobre la emisión de certificados privados, consulte [Emitir un certificado de entidad final privado](https://docs.aws.amazon.com/privateca/latest/userguide/PcaIssueCert.html) en la *Guía del usuario de AWS Autoridad de certificación privada*.

```
aws acm-pca issue-certificate \
  --certificate-authority-arn arn:aws:acm-pca:{{us-east-1}}:{{123456789012}}:certificate-authority/{{12345678-1234-1234-1234-123456789012}} \
  --csr fileb://{{csr.pem}} \
  --signing-algorithm SHA256WITHRSA \
  --validity Value=365,Type=DAYS
```

**Recuperación e importación del certificado**  
El comando `issue-certificate` devuelve un ARN de certificado AWS Autoridad de certificación privada, no un ARN de ACM. Para usar este certificado con API Gateway, recupérelo con `aws acm-pca get-certificate` y, a continuación, impórtelo a ACM mediante `aws acm import-certificate`. La importación produce un ARN de certificado de ACM que se utiliza en el siguiente paso. Cuando ejecute `aws acm import-certificate`, establezca `--region` en la región de la API para que el certificado de ACM se cree allí.

## Paso 2: Configurar una etapa de API para usar el certificado de ACM
<a name="rest-api-acm-client-certificates-configure"></a>

Una vez que tenga un ARN de certificado de ACM, configure la etapa de API para presentar el certificado al backend.

### Configuración de una etapa (consola)
<a name="rest-api-acm-client-certificates-configure-console"></a>

1. Abra la consola de API Gateway en [https://console.aws.amazon.com/apigateway](https://console.aws.amazon.com/apigateway).

1. Elija la API de REST.

1. Elija **Etapas**.

1. En la sección **Detalles de la etapa**, elija **Editar**.

1. En **Certificado de cliente**, seleccione el certificado de ACM en la lista desplegable.

1. Seleccione **Save changes (Guardar cambios)**.

### Configuración de una etapa (AWS CLI)
<a name="rest-api-acm-client-certificates-configure-cli"></a>

Use el siguiente comando:

```
aws apigateway update-stage \
  --rest-api-id {{abc123}} \
  --stage-name {{prod}} \
  --patch-operations op='replace',path=/clientCertificateId,value={{arn:aws:acm:us-east-1:123456789012:certificate/12345678-1234-1234-1234-123456789012}}
```

**nota**  
API Gateway usa el mismo campo `clientCertificateId` para los certificados generados por ACM y API Gateway. Al proporcionar un ARN de certificado de ACM, API Gateway detecta automáticamente el formato y utiliza el flujo de trabajo administrado por ACM.

## Paso 3: Comprobar la configuración
<a name="rest-api-acm-client-certificates-verify"></a>

Para verificar que API Gateway envía el certificado al backend, complete los siguientes pasos:

**El backend debe solicitar un certificado de cliente**  
El backend debe estar configurado para solicitar un certificado de cliente durante el establecimiento de comunicación de TLS. Si el backend no solicita uno, API Gateway no presenta el certificado.

1. Invoque el punto de conexión de la API.

1. Compruebe que el backend obtiene el certificado de cliente durante el establecimiento de comunicación de TLS.

1. Compruebe que el backend acepta el certificado y devuelve una respuesta correcta.

Si el backend rechaza el certificado, compruebe que la cadena de certificados se pueda validar con el almacén de confianza del backend.

## Requisitos del certificado
<a name="rest-api-acm-client-certificates-requirements"></a>

El certificado de hoja que configure debe cumplir los siguientes requisitos.


**Requisitos del certificado de cliente de ACM**  

| Requisito | Descripción | 
| --- | --- | 
| Longitud máxima de la cadena | 5 certificados | 
| Validez | El certificado no debe estar caducado ni pendiente de validez cuando lo configure | 
| Región | El certificado de ACM debe estar en la misma región que la API | 
| Cuenta | El certificado de ACM debe estar en la misma cuenta que la API | 
| Uso extendido de claves (EKU) | Si está presente, debe incluir clientAuth. Si no existe, el certificado se acepta. | 
| Uso de claves (KU) | Si está presente, debe incluir digitalSignature o keyAgreement. Si no existe, el certificado se acepta. | 
| Algoritmo clave | Debe ser uno de los siguientes: RSA 2048, RSA 3072, RSA 4096, ECDSA P-256 (EC\_prime256v1), ECDSA P-384 (EC\_secp384r1) o ECDSA P-521 (EC\_secp521r1) | 
| Estado del certificado de ACM | Debe ser ISSUED | 

**nota**  
API Gateway no valida la cadena de confianza entre el certificado hoja y el intermedio. API Gateway tampoco valida la intención del certificado ni las restricciones básicas (por ejemplo, `CA:TRUE`) de los certificados intermedios. El backend realiza estas validaciones durante el establecimiento de comunicación de TLS.

## Renovación y propagación de certificados
<a name="rest-api-acm-client-certificates-renewal"></a>

Cuando un certificado cambia en ACM, API Gateway detecta la actualización y propaga el nuevo certificado automáticamente. No necesita volver a implementar la etapa y la API no sufre ningún tiempo de inactividad durante la rotación.

La propagación de certificados es de coherencia final. Durante la actualización, es posible que el backend reciba el certificado anterior o el nuevo hasta que se complete la propagación.

La forma en que se renueva el certificado depende de cómo se haya emitido:
+ **Certificados emitidos mediante AWS Autoridad de certificación privada (administrados por ACM) (opción B)**: ACM renueva automáticamente estos certificados. API Gateway detecta la renovación y se actualiza automáticamente.
+ **Certificados emitidos por AWS Autoridad de certificación privada e importados (opción C)**: ACM no renueva automáticamente los certificados importados. Debe volver a importar el certificado renovado. Tras volver a importar el certificado, API Gateway detecta el cambio y lo actualiza automáticamente.
+ **Certificados importados del PKI (opción A)**: debe [volver a importar](https://docs.aws.amazon.com/acm/latest/userguide/import-certificate.html) el certificado renovado a ACM. Tras volver a importar el certificado, API Gateway detecta el cambio y lo actualiza automáticamente.

ACM envía notificaciones de caducidad de certificados a través de [Amazon EventBridge](https://docs.aws.amazon.com/acm/latest/userguide/supported-events.html). Puede utilizar estas notificaciones para configurar alarmas antes de que caduque un certificado.

## Comportamiento y limitaciones del certificado de ACM
<a name="rest-api-acm-client-certificates-important-notes"></a>

Visualización del certificado configurado  
Los certificados de ACM no aparecen en las respuestas de la API `GetClientCertificate` ni `GetClientCertificates`. Para ver el ARN del certificado de ACM configurado en una etapa, utilice [GetStage](https://docs.aws.amazon.com/apigateway/latest/api/API_GetStage.html). Para ver los detalles del certificado, utilice las API de ACM [DescribeCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_DescribeCertificate.html) y [GetCertificate](https://docs.aws.amazon.com/acm/latest/APIReference/API_GetCertificate.html).

Reutilización entre etapas  
Puede adjuntar el mismo certificado de ACM a varias etapas. Cada etapa hace referencia al certificado de forma independiente por su ARN.

Las API de certificados de cliente no se aplican a los certificados de ACM  
Los certificados de ACM no son recursos administrados por API Gateway. Las API `GetClientCertificate`, `UpdateClientCertificate` y `DeleteClientCertificate` devuelven una `NotFoundException` cuando se llaman con un ARN de certificado de ACM. Use las API de ACM para administrar el ciclo de vida del certificado.

Limpieza automática de asociaciones de certificados  
Cuando elimina un certificado de ACM de una etapa, actualice una etapa para usar un certificado diferente o elimine una etapa o una API de REST, API Gateway limpia la asociación de certificados automáticamente. No se requiere ninguna acción manual.

Eliminación del certificado de ACM  
ACM no permite eliminar un certificado mientras API Gateway tenga una asociación activa con él. Para eliminar el certificado de ACM, elimínelo primero de todas las etapas que hacen referencia a él.