Configure mTLS em um workload
Envie um certificado de CA confiável e uma CRL, ative o mTLS em um workload e teste o handshake, pelo Azion Console, pela Azion CLI ou pela API.
Você pode ativar o mutual TLS (mTLS) em um workload pelo Azion Console, pela Azion CLI ou pela API. Para servir HTTPS no seu domínio com um certificado de servidor próprio, consulte Envie um certificado digital.
Com o mTLS ativado, o workload solicita um certificado a cada cliente durante o handshake TLS. Ele verifica esse certificado em relação a um certificado de CA confiável: o certificado da autoridade de certificação (CA) que assina os certificados dos seus clientes. A configuração usa três objetos: o certificado de CA confiável, uma lista de revogação de certificados (CRL) opcional da mesma CA e o objeto mtls do workload.
Uma conta que opera na API v3 tem Domains no lugar de workloads, e define o mTLS em cada domínio. Ative o mTLS em um domínio v3 traz esses passos.
Pré-requisitos
Console
- mTLS ativado na sua conta. A Azion ativa o mTLS por conta, então entre em contato com a equipe de vendas da Azion para ativá-lo.
- Um workload cujo deployment indica uma aplicação, servido por HTTPS. O certificado de cliente trafega no handshake TLS, então o mTLS verifica somente conexões HTTPS. Para criar um workload, consulte Primeiros passos com Workloads.
- O certificado da sua CA, em formato PEM. Uma CA de terceiros o emite. Um certificado que a Azion gera não pode servir como CA confiável.
- (Opcional) Uma CRL em formato PEM, assinada pela mesma CA.
- Um certificado de cliente que essa CA assinou, com a chave privada dele, para testar o workload.
- Acesso ao Azion Console. Para mais informações, consulte Como acessar o Azion Console.
Envie o certificado de CA confiável
Certificate Manager armazena o certificado de CA confiável com o tipo trusted_ca_certificate e sem chave privada. O arquivo deve estar em formato PEM, com as linhas -----BEGIN CERTIFICATE----- e -----END CERTIFICATE-----, e Certificate Manager recusa qualquer outro formato. Quando a sua cadeia tiver certificados intermediários, inclua-os no mesmo arquivo.
Console
O Azion Console envia o certificado de CA confiável a partir do formulário que o indica. O campo Trusted CA Certificate termina com Create Digital Trusted CA certificate, que recebe o arquivo PEM sem sair do formulário. Ative o mTLS no workload traz os passos, e Ative o mTLS em um domínio v3 os traz para um domínio.
O certificado de CA confiável aparece como inactive no Certificate Manager até que um workload o indique no objeto mtls.
Envie uma lista de revogação de certificados
Uma CRL lista os certificados que uma CA revogou antes da data de expiração deles, e a CA a assina. Um workload com mTLS ativado indica até 100 CRLs em mtls.config.crl. Esta tarefa é opcional: pule-a quando a sua CA não publicar CRL.
Console
O Azion Console envia a CRL a partir do próprio workload. O campo Certificate Revocation List (CRL) termina com Create Digital CRL certificate, que recebe o arquivo PEM sem sair do formulário. Ative o mTLS no workload traz os passos.
Certificate Manager armazena a CRL e lê as datas last_update e next_update da própria CRL.
Ative o mTLS no workload
O objeto mtls do workload ativa a verificação e indica o certificado de CA confiável, as CRLs e o modo de verificação. Escolha o modo em verification:
enforce: o workload encerra o handshake quando um cliente não apresenta certificado, ou apresenta um certificado que a CA confiável não assinou.permissive: todo cliente conclui o handshake, e uma regra de firewall decide quais requisições recusar.
Para o que cada modo faz com cada tipo de cliente, consulte Modos de verificação.
Console
Para ativar o mTLS no Azion Console:
Acesse Azion Console > Workloads.
Selecione o workload cujo deployment indica a aplicação. O formulário de edição dele abre.
Na seção Protocol Settings, ative HTTPS support. Até lá, Mutual Authentication fica desabilitado, e o formulário avisa You can active this setting enabling HTTPS support above.
Na seção Mutual Authentication Settings, ative Mutual Authentication.
Em Mode, selecione Enforce ou Permissive. O formulário seleciona Enforce quando o switch é ativado.
Em Trusted CA Certificate, selecione o certificado da sua CA. O campo é obrigatório, e Create Digital Trusted CA certificate, no fim da lista, envia um sem sair do formulário.
Opcionalmente, em Certificate Revocation List (CRL), selecione as CRLs que o workload verifica. Create Digital CRL certificate envia uma sem sair do formulário.
Selecione Save.
O certificado de CA confiável agora aparece como active no Certificate Manager. O novo modo leva vários minutos para chegar a toda a infraestrutura distribuída da Azion. Até lá, algumas requisições ainda encontram a configuração anterior, então repita um teste antes de confiar no resultado dele.
A atualização falha quando um ID de certificado está no campo errado. Um certificado de servidor em mtls.config.certificate é recusado com Invalid certificate type, MUST be a Trusted CA. Um certificado de CA confiável em tls.certificate é recusado com Invalid certificate type, MUST be an Edge Certificate. A CLI imprime a mensagem dentro de Error: Failed to update the Workload: [...]. Para as duas correções, consulte Erros de mTLS.
Ative o mTLS em um domínio v3
Uma conta que opera na API v3 tem Domains no lugar de workloads, e define o mTLS em cada domínio. Para descobrir em qual modelo a sua conta opera, consulte Verifique a migração da sua conta.
O resto desta página vale para um domínio v3 como está escrito, com uma diferença em cada caso: Envie o certificado de CA confiável é a mesma tarefa, no mesmo Certificate Manager; Negue requisições sem um certificado de cliente válido é a mesma regra, no firewall que o domínio indica em edge_firewall_id, e não no que está no deployment de um workload; Passe os detalhes do certificado de cliente para a origem é a mesma regra, na aplicação que o domínio indica. Um domínio não recebe lista de revogação de certificados, então Envie uma lista de revogação de certificados não se aplica.
Para ativar o mTLS em um domínio no Azion Console:
Acesse Azion Console > Domains e selecione o domínio.
Na seção Mutual Authentication Settings, ative Mutual Authentication.
Em Mode, selecione Enforce ou Permissive.
Em Trusted CA Certificate, selecione o certificado da sua CA. O campo é obrigatório, e Create Digital Trusted CA certificate, no fim da lista, envia um sem sair do formulário.
Selecione Save.
Teste o handshake
Duas requisições a um domínio do workload mostram se ele verifica os clientes: uma sem certificado de cliente e uma com um certificado que a CA confiável assinou. Envie-as depois que a alteração do mTLS se propagar.
Para enviar uma requisição sem certificado de cliente, execute curl no modo verbose:
No modo enforce, o workload solicita um certificado, o cliente não envia nenhum, e o handshake falha. curl termina com o código 56. Com curl compilado com LibreSSL, a saída verbose termina assim:
Para enviar uma requisição com o certificado de cliente, passe o certificado e a chave privada dele, aqui client.pem e client.key:
O handshake é concluído, e curl imprime o código de status que a sua aplicação retorna:
Os mesmos resultados valem no workload domain, <id>.map.azionedge.net. No modo permissive, as duas requisições concluem o handshake e chegam à aplicação, assim como uma requisição com um certificado que outra CA assinou.
Negue requisições sem um certificado de cliente válido
No modo permissive, o workload não recusa nenhum cliente, então uma regra no Rules Engine para Firewall deve recusar as requisições cujo certificado de cliente falhou na verificação. A regra só age quando o firewall está no deployment do workload. Para vincular um, consulte Vincule um firewall a um workload.
Esta regra nega as requisições a <your-domain> cujo certificado de cliente não passou na validação:
Para criar a mesma regra no Azion Console:
Acesse Azion Console > Firewall e selecione o firewall que está no deployment do workload.
Selecione a aba Rules Engine e depois Rule.
Escreva um nome que diga quais requisições a regra recusa.
Em Criteria, selecione a variável Host e o operador is equal, e escreva o seu domínio como argumento.
Selecione And e depois a variável Client Certificate Validation e o operador is not equal. O argumento é uma lista com uma única entrada, Valid, que já vem selecionada.
Em Behavior, selecione Deny (403 Forbidden).
Selecione Save.
Para cada variável, operador e behavior que uma regra de firewall aceita, consulte Rules Engine para Firewall.
Depois que a regra se propagar, uma requisição a <your-domain> sem um certificado de cliente válido recebe 403 Forbidden. Um cliente cujo certificado a CA confiável assinou continua chegando à aplicação.
Passe os detalhes do certificado de cliente para a origem
O modelo Open Banking exige que a origem receba o certificado de cliente em headers de requisição, a partir das variáveis ${ssl_client_escaped_cert} e ${ssl_client_s_dn_parsed}. ${ssl_client_escaped_cert} contém o certificado de cliente como uma string PEM codificada para URL, e ${ssl_client_s_dn_parsed} contém o Common Name (CN) do subject dele. Uma regra da Request Phase no Rules Engine para Applications adiciona cada header com o behavior add_request_header, na aplicação do deployment do workload.
Esta regra adiciona o certificado de cliente a toda requisição que traz um, no header Escaped-Client-Cert:
O argumento do header tem a forma Header-Name: value, e Azion Console recusa qualquer outra forma com Header must follow the header-name: value format. Adicione uma segunda regra da mesma forma para ${ssl_client_s_dn_parsed}, com um nome de header da sua escolha.
Para criar a mesma regra no Azion Console:
Acesse Azion Console > Applications e selecione a aplicação que está no deployment do workload.
Selecione a aba Rules Engine e depois + Rule.
Escreva um nome que diga qual header a regra adiciona.
Na seção Phase, selecione Request Phase. A escolha é definitiva depois que a regra é criada.
Em Criteria, selecione a variável ${ssl_client_escaped_cert} e o operador exists.
Em Behavior, selecione Add Request Header e escreva Escaped-Client-Cert: ${ssl_client_escaped_cert} como argumento.
Selecione Save.
Para cada variável e behavior que uma regra de aplicação aceita, consulte Rules Engine para Applications. As outras variáveis de certificado de cliente estão listadas em Variáveis de mTLS.
Depois que as regras se propagarem, cada requisição que a Azion envia à origem para um cliente com certificado traz os headers.