Configure e associe um certificado mTLS
mTLS é um método que valida o digital certificate no lado do cliente e no edge.
O Mutual Transport Layer Security (mTLS) é um protocolo de segurança que permite autenticação e criptografia de duas vias para interações de rede. Ele confirma que tanto o cliente quanto o servidor estão autenticados e têm autorização para comunicação efetiva.
Para configurar o mTLS em suas aplicações, você precisa de um digital certificate com suporte a mTLS assinado por uma autoridade certificadora, ou Certificate Authority (CA). Na Azion, este tipo de certificado é chamado de Trusted CA.
Existem instruções separadas para API v3 usando configurações de Domains legadas e API v4 usando o novo produto Workloads.
Adicione um Trusted CA e associe a um domínio
- Acesse o Azion Console > Certificate Manager.
- Clique no botão + Digital Certificate.
- Dê um nome fácil de lembrar para o seu certificado.
- Selecione a opção Import Trusted CA Certificate.
- No campo Private Certificate, cole o seu Trusted CA, incluindo as tags de início e fim.
- Clique no botão Save.
Após adicionar um Trusted CA à sua biblioteca de certificados, você precisa configurar quais domínios devem operar com mTLS.
- Acesse o Azion Console > Workloads.
- Clique no workload que você deseja configurar o mTLS.
- Ative o switch Mutual Authentication.
- Escolha o modo de verificação que deseja usar.
- Ao selecionar Enforce (padrão), o mTLS é ativado no domínio de sua application e todo o tráfego de entrada estará em conformidade com a autenticação do cliente e do servidor.
- Ao selecionar Permissive, você deve configurar este modo no Firewall.
- Selecione o Trusted CA Certificate que você criou.
- Clique no botão Save.
- Acesse o Azion Console > Certificate Manager.
- Clique no botão + Digital Certificate.
- Dê um nome fácil de lembrar para o seu certificado.
- Selecione a opção Import Trusted CA Certificate no menu suspenso.
- No campo Private Certificate, cole o seu certificado, incluindo as tags de início e fim.
- Clique no botão Save.
Após adicionar um Trusted CA à sua biblioteca de certificados, você precisa configurar quais domínios devem operar com mTLS.
- Acesse o Azion Console > Domains.
- Clique no domínio que deseja configurar o mTLS.
- Ative o switch Mutual Authentication.
- Escolha o modo de verificação que deseja usar.
- Ao selecionar Enforce (padrão), o mTLS é ativado no domínio de sua application e todo o tráfego de entrada estará em conformidade com a autenticação do cliente e do servidor.
- Ao selecionar Permissive, você deve configurar este modo no Firewall.
- Selecione o Trusted CA Certificate que você criou.
- Clique no botão Save.
- Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu personal token e o certificado na propriedadecertificate:
| Chave | Descrição |
|---|---|
name | Nome da instância do certificado |
certificate | String que contém o valor do certificado. Deve incluir as tags de início e fim. As quebras de linha devem ser substituídas por sequências de escape (\n) |
certificate_type | Enum que indica o tipo do certificado. Certificados do tipo Trusted CA são atribuídos o valor trusted_ca_certificate |
- Você receberá uma resposta semelhante a esta:
- Copie o valor
digital_certificate_id. Ele será usado para associar o certificado a um domínio. - Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu personal token, a<application_id>por um ID de application, e<digital_certificate_id>pelo ID do Trusted CA que você criou:
| Chave | Descrição |
|---|---|
name | Nome da instância do domínio |
cnames | Aceita um array de strings contendo os CNAMEs para o domínio como valores |
digital_certificate_id | Enum que, quando null, seleciona o certificado Azion SAN |
edge_application_id | O ID da aplicação vinculada ao domínio |
is_mtls_enabled | Booleano que, quando true, ativa a verificação mTLS para o domínio |
mtls_verification | Enum que define o modo de verificação. Pode ser enforce ou permissive |
mtls_trusted_ca_certificate_id | O ID do Trusted CA |
- Você receberá uma resposta semelhante a esta:
- Aguarde o tempo de propagação. Seu domínio agora deve estar usando o protocolo mTLS.
- Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu token pessoal e o certificado na propriedadecertificate:
| Chave | Descrição |
|---|---|
name | Nome da instância do certificado |
certificate | String que contém o valor do certificado, devendo incluir as tags de início e fim. As quebras de linha devem ser substituídas por sequências de escape (\n) |
type | Enum que indica o tipo do certificado. Certificados do tipo Trusted CA são atribuídos o valor trusted_ca_certificate |
- Você receberá uma resposta semelhante a esta:
- Copie o valor
digital_certificate_id. Você precisará dele ao associá-lo a um Workload. - Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu token pessoal, o<application_id>por um ID de application, e o<digital_certificate_id>pelo ID do Trusted CA que você criou:
| Chave | Descrição |
|---|---|
name | Nome da instância do domínio |
cnames | Aceita um array de strings contendo os CNAMEs para o domínio como valores |
digital_certificate_id | Enum que, quando null, seleciona o certificado Azion SAN |
edge_application_id | O ID da aplicação vinculada ao domínio |
is_mtls_enabled | Booleano que, quando true, ativa a verificação mTLS para o domínio |
mtls_verification | Enum que define o modo de verificação. Pode ser enforce ou permissive |
mtls_trusted_ca_certificate_id | O ID do Trusted CA |
- Você receberá uma resposta semelhante a esta:
- Execute a seguinte requisição
POSTno seu terminal para vincular seu novo workload a uma application, substituindo[TOKEN VALUE]pelo seu token pessoal, o<application_id>por um ID de application, e o<workload_id>pelo ID do workload que você criou:
- Aguarde o tempo de propagação. Seu domínio agora deve estar usando o protocolo mTLS.
Crie regras específicas para Permissive mTLS
Para configurar um firewall para bloquear o acesso a um domínio usando o modo Permissive do mTLS, você deve usar o Rules Engine para Firewall. O exemplo a seguir descreve um conjunto de regras que bloqueará qualquer tráfego de rede de entrada com o hostname mydomain.com cuja validação do certificado do cliente não seja efetuada, entregando um erro 403 Forbidden.
- Acesse o Azion Console > Firewall.
- Configure um firewall para o domínio mTLS.
- Clique na aba Rules Engine.
- Clique no botão + Rules Engine.
- Dê um nome fácil de lembrar para sua regra.
- Na seção Criteria, como variável, selecione Host.
- Como operador de comparação, selecione is equal.
- Como argumento, insira
mydomain.com. - Clique no botão + And para adicionar um novo critério.
- Como variável, selecione Client Certificate Validation.
- Como operador de comparação, selecione is not equal.
- Como argumento, insira
true. - Na seção Behavior, selecione Deny (403 Forbidden).
- Clique no botão Save.
- Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu personal token e o<edge_firewall_id>pelo ID do firewall associado ao domínio mTLS:
| Chave | Descrição |
|---|---|
name | Nome da regra |
description | Descrição da regra |
behaviors | Array que armazena objetos que definem comportamentos |
criteria | Array que armazena objetos que definem critérios |
- Você receberá uma resposta semelhante a esta:
Especifique variáveis mTLS em cabeçalhos HTTP
Para especificar variáveis mTLS em cabeçalhos HTTP, você deve usar o Rules Engine para Application. O exemplo a seguir descreve um conjunto de regras que adicionará a variável ${ssl_client_escaped_cert} ao cabeçalho da sua aplicação.
Requer:
Você também pode inserir cabeçalhos com outras variáveis da lista de variáveis mTLS disponíveis.
Para testar se os cabeçalhos que você adicionou estão sendo enviados nas requisições, você pode executar o seguinte comando cURL no seu terminal a partir de um diretório que contém os arquivos .pem do seu Trusted CA e sua chave privada:
- Acesse o Azion Console > Application.
- Encontre e clique na aplicação do domínio com mTLS.
- Clique na aba Rules Engine.
- Clique no botão + Rule.
- Dê um nome fácil de lembrar para sua regra.
- Selecione Request Phase.
- No campo Criteria, insira a variável mTLS desejada. Exemplo:
${ssl_client_escaped_cert}. - Selecione o operador de comparação exists.
- Na seção Behavior, selecione o comportamento Add Request Header.
- Como argumento, insira
Nome-Variavel-Mtls: ${nome_variavel_ssl}, substituindo o nome e a variável pelo nome da variável mTLS que você deseja inserir no cabeçalho da sua aplicação.- Exemplo:
Escaped-Client-Cert: ${ssl_client_escaped_cert}
- Exemplo:
- Para adicionar outra variável, clique no botão And na seção Criteria e repita as etapas restantes.
- Clique no botão Save quando terminar.
- Execute a seguinte requisição
POSTno seu terminal, substituindo[TOKEN VALUE]pelo seu personal token e<application_id>com o ID da application associada ao domínio com mTLS:
- Você receberá uma resposta semelhante a esta:
- Repita os passos anteriores para cada variável mTLS necessária nos cabeçalhos.