# Suporte para mTLS para Secure

import DocButton from '~/components/webkit/DocButton.vue';

**Mutual Transport Layer Security (mTLS)**, também conhecido como *Mutual Authentication*, é um método de autenticação que valida o certificado digital de ambos os lados de uma requisição, tanto do lado do cliente como do lado do Edge (servidor).

Com o **mTLS** ativado, a Azion checa o certificado do navegador do usuário e o valida com o certificado **Trusted Certificate (Trusted CA)** da sua **Application** no Edge.

**mTLS** é opcional para aplicações que utilizam protocolos *TLS*. No entanto, ele promete um *handshake TLS* mais seguro, além de ser um requisito do *Open Banking*.

:::tip[dica]
Você pode precisar do **mTLS** se sua Application oferece serviços financeiros e pagamentos.
:::

## Pré-requisitos

É necessário que sua **Application** esteja operando com protocolo *Hypertext Transfer Protocol Secure (HTTPS)*. O [Azion Console](https://console.azion.com) permite configurar **mTLS** em aplicações rodando apenas com HTTP (sem a camada de criptografia TLS). No entanto, mTLS exige uma conexão HTTPS para funcionar.

As opções de protocolo estão disponíveis na página de configuração da sua **Application** no **Azion Console**.

:::note
O mTLS só estará disponível caso o serviço esteja ativado. Para ativar, entre em contato com nossa [Equipe de Vendas](https://www.azion.com/pt-br/contato/).
:::

<DocButton href="/pt-br/documentacao/produtos/guias/secure/mtls/" label="consulte o guia associar um certificado mTLS a um domínio" kind="secondary" size="medium" /> 

## Certificado Digital com suporte para mTLS (Trusted CA)

Para configurar o **mTLS** em sua **Application**, você precisa de um *Digital Certificate* com suporte para **mTLS**, gerado por uma *Autoridade de certificação terceira*. Na Azion, chamamos esse certificado de **Trusted CA**.

Selecione ou adicione um novo *Domain* e certifique-se de que a opção **mTLS** está ativada. Em seguida, selecione o **Trusted CA** adicionado anteriormente.

> Os certificados gratuitos, gerados internamente pela Azion (Azion [SAN]), não têm suporte para mTLS.

Para usar o modo *Enforce* do mTLS, é necessário utilizar a extensão para protocolos TLS, *Server Name Indication (SNI)*.

As conexões sem SNI são conectadas a uma configuração padrão que, no momento do *handshake TLS*, entrega o certificado Azion SAN.

Quando temos requisições sem SNI para um Domain com mTLS no modo *Enforce*, a conexão é interrompida antes que a rota da sua Application seja resolvida.

> Certifique-se que suas Applications sempre usem SNI nas solicitações.

## Como funciona o mTLS na Azion

A configuração padrão do **mTLS** bloqueia os acessos cuja identidade do usuário não puder ser verificada.

Se sua aplicação precisa de necessidades de acesso especiais, é necessário configurar uma verificação permissiva (*Permissive mTLS*). A verificação permissiva pode ser configurada na página *Domains*.

No modo **Permissive**, você pode usar a variável [**Client Certificate Validation**](/pt-br/documentacao/produtos/secure/firewall/rules-engine/) no **Rules Engine for Firewall** para restringir o acesso com base na identidade do certificado do cliente. Essa variável avalia se o certificado do cliente apresentado na requisição é válido em relação à Trusted CA configurada. Um padrão comum é negar requisições em que `Client Certificate Validation` não seja igual a `true`, retornando uma resposta `403 Forbidden`.

<DocButton href="/pt-br/documentacao/produtos/guias/mtls/#adicione-regras-especificas-para-uso-do-permissive-mtls" label="consulte o guia de configuração de regras para Permissive mTLS" kind="secondary" size="medium" />

Você também pode alterar e especificar as *header variables* do seu **mTLS** para atender aos requisitos do Open Banking. Isso pode ser feito na página de configuração do **Application**, dentro do **Azion Console**.

> A lista de variáveis aceitas está disponível na página [Rules Engine para Application](/pt-br/documentacao/produtos/build/applications/rules-engine/).


## Limites

:::tip
**Aumente limites** <br></br>
Você pode solicitar o aumento dos limites com base no seu plano. Contate o [time de suporte técnico](/pt-br/documentacao/servicos/suporte/) para fazer a solicitação.
:::

### Certificados

Estes são os **limites default** para cada Plano de Serviço:

| Developer | Business | Enterprise | Mission Critical |
| --- | --- | --- | --- |
| 100 | 100 | 100 | 1.000 |

:::tip
**Aumente limites** <br></br>
Você pode solicitar o aumento dos limites com base no seu plano. Contate o [time de suporte técnico](/pt-br/documentacao/servicos/suporte/) para fazer a solicitação.
:::


---