

# Métodos auxiliares para TLS mútuo
<a name="mtls-helper-methods"></a>

O CloudFront fornece funções auxiliares específicas de mTLS no namespace `cf.mtls` para funções de solicitação do visualizador. Essas funções renomeiam, reformatam ou combinam os cabeçalhos do certificado do cliente antes de encaminhar a solicitação para a sua origem.

```
import cf from "cloudfront";
```

## `cf.mtls.renameClientCertHeaders`
<a name="mtls-rename-client-cert-headers"></a>

Renomeia os cabeçalhos de metadados do certificado para nomes de cabeçalhos personalizados.

```
cf.mtls.renameClientCertHeaders({
    "CloudFront-Viewer-Cert-Pem": "X-Client-Cert",
    "CloudFront-Viewer-Cert-Serial-Number": "X-Client-Cert-Serial",
    "CloudFront-Viewer-Cert-Issuer": "X-Client-Cert-Issuer",
});
```

Cabeçalhos de origem permitidos:
+ `CloudFront-Viewer-Cert-Pem`
+ `CloudFront-Viewer-Cert-Serial-Number`
+ `CloudFront-Viewer-Cert-Issuer`
+ `CloudFront-Viewer-Cert-Subject`
+ `CloudFront-Viewer-Cert-Validity`
+ `CloudFront-Viewer-Cert-Present`
+ `CloudFront-Viewer-Cert-Sha256`
+ `Client-Cert`
+ `Client-Cert-Chain`

## `cf.mtls.renamePemHeaders`
<a name="mtls-rename-pem-headers"></a>

Renomeia os cabeçalhos do certificado PEM e, opcionalmente, reformata a codificação do certificado.

```
cf.mtls.renamePemHeaders({
    "Client-Cert": {
        "newHeaderName": "X-Leaf-Cert",
        "pemCertFormatInfo": {
            "certHeader": "-----CUSTOM HEADER-----",
            "certFooter": "-----CUSTOM FOOTER-----",
            "certEndMarker": "",
            "keepNewlinesInCertData": true
        }
    },
    "Client-Cert-Chain": {
        "newHeaderName": "X-Intermediate-Certs",
        "pemCertFormatInfo": {
            "certHeader": "-----CUSTOM HEADER-----",
            "certFooter": "-----CUSTOM FOOTER-----",
            "certEndMarker": "",
            "keepNewlinesInCertData": true
        }
    }
});
```

Cabeçalhos de origem permitidos:
+ No modo de passagem:`Client-Cert`, `Client-Cert-Chain`
+ No modo obrigatório/opcional: `Cloudfront-Viewer-Cert-PEM`

**`pemCertFormatInfo` Campos de:**

Para `Cloudfront-Viewer-Cert-PEM`:
+ `certHeader` substitui `-----BEGIN CERTIFICATE-----`.
+ `certFooter` substitui `-----END CERTIFICATE-----`.
+ `certEndMarker` define uma string personalizada após o certFooter.
+ `keepNewlinesInCertData` (padrão:`true`) preserva as novas linhas nos dados base64 quando verdadeiras.

Para e :
+ `certHeader` substitui `:`.
+ `certFooter` substitui `:`.
+ `certEndMarker` define uma string personalizada após o certFooter.
+ `keepNewlinesInCertData` (padrão:`false`) preserva as novas linhas nos dados base64 quando verdadeiras.

## `cf.mtls.combinePemHeaders`
<a name="mtls-combine-pem-headers"></a>

Combina `Client-Cert` e `Client-Cert-Chain` em um único cabeçalho contendo toda a cadeia de certificados.

```
cf.mtls.combinePemHeaders({
    "newHeaderName": "X-Full-Chain",
    "pemCertFormatInfo": {
        "certHeader": "-----BEGIN CERTIFICATE-----",
        "certFooter": "-----END CERTIFICATE-----",
        "certEndMarker": "\n",
        "keepNewlinesInCertData": false
    }
});
```

`certEndMarker` define o delimitador entre os certificados.

**nota**  
Essas funções auxiliares podem ser usadas em todos os modos mTLS (obrigatório, opcional e de passagem). No entanto, `cf.mtls.combinePemHeaders` só tem efeito no modo de passagem — nos modos obrigatório e opcional, os cabeçalhos `Client-Cert-Chain` e `Client-Cert` não estão presentes, portanto, a função é autônoma.
Se os métodos `cf.mtls.*` e `cf.updateRequestOrigin()` com `customHeaders` tiverem como destino o mesmo nome de cabeçalho, o CloudFront retornará um erro 502.
No modo Passagem, o CloudFront descarta qualquer `Client-Cert` entrante ou cabeçalhos `Client-Cert-Chain` e os adiciona novamente a partir do certificado real do cliente.
O CloudFront não apresenta todo o conteúdo bruto do certificado PEM em nenhuma função de borda.