# DNSSEC

O DNSSEC é uma configuração de uma zona do [Edge DNS](/pt-br/documentacao/plataforma/edge-dns/). Quando ele está ativado, a Azion assina as respostas da zona e gera os valores de delegation signer (DS) que o seu registrador publica para o domínio. As seções abaixo listam a configuração, os valores de status, o registro DS e o que muda quando o DNSSEC está desativado. Para entender como as assinaturas e a validação funcionam, consulte [Como o Edge DNS funciona](/pt-br/documentacao/plataforma/edge-dns/como-funciona/#dnssec). Para o procedimento, consulte [Ative o DNSSEC em uma zona](/pt-br/documentacao/guias/seguranca-de-aplicacoes/dns/ativar-dnssec/).

---

## Configuração do DNSSEC

Um campo ativa ou desativa o DNSSEC de uma zona. No Console, o campo é o switch **Enable DNSSEC** da seção **DNSSEC**. A seção fica na página **Create Zone** e na aba **Main Settings** da zona, onde **Save** aplica o switch.

| Console           | Campo da API | Flag da CLI                           | Tipo    | Obrigatório      | Padrão                                | Valores                                                                                                  |
| ----------------- | ------------ | ------------------------------------- | ------- | ---------------- | ------------------------------------- | -------------------------------------------------------------------------------------------------------- |
| **Enable DNSSEC** | `enabled`    | `--enabled=true` ou `--enabled=false` | boolean | Sim, em um `PUT` | Desativado no Console, `false` na API | `true` assina a zona e gera os valores DS dela. `false` interrompe as assinaturas e apaga os valores DS. |

O DNSSEC não exige nenhuma solicitação à Azion: você mesmo o ativa, pelo Console, pela CLI ou pela API. A API não recebe chave, algoritmo nem tipo de digest, porque `enabled` é o único campo que uma requisição envia. O restante do objeto é somente leitura:

| Operação           | API                                                                      | CLI                                                       |
| ------------------ | ------------------------------------------------------------------------ | --------------------------------------------------------- |
| Ler o DNSSEC       | `GET /v4/workspace/dns/zones/<zone-id>/dnssec`                           | `azion describe dnssec --zone-id <zone-id>`               |
| Ativar o DNSSEC    | `PATCH /v4/workspace/dns/zones/<zone-id>/dnssec` com `{"enabled":true}`  | `azion update dnssec --zone-id <zone-id> --enabled=true`  |
| Desativar o DNSSEC | `PATCH /v4/workspace/dns/zones/<zone-id>/dnssec` com `{"enabled":false}` | `azion update dnssec --zone-id <zone-id> --enabled=false` |

A API também aceita `PUT` no mesmo caminho, com o mesmo corpo. Toda requisição leva o header `Authorization: Token [TOKEN VALUE]`. O `azion describe dnssec` imprime `Enabled:` e `Status:` e, com `--format json`, imprime o objeto inteiro, inclusive `delegation_signer`. O `azion update dnssec` imprime `DNSSEC of DNS zone <zone-id> was updated`.

Escreva a flag da CLI com sinal de igual: `--enabled=true` ou `--enabled=false`.

---

## Status

O campo `status` do DNSSEC de uma zona indica se a Azion assinou a zona e gerou os valores DS dela. A API o retorna no objeto DNSSEC da zona, e o `azion describe dnssec` o imprime como `Status:`. O Console não mostra o status; leia-o com a API ou a CLI.

| Status         | `enabled` | `delegation_signer`  | O que significa                                                                                                                          |
| -------------- | --------- | -------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- |
| `unconfigured` | `false`   | `null`               | O DNSSEC nunca foi ativado na zona.                                                                                                      |
| `waiting`      | `true`    | `null`               | O DNSSEC está ativado, e a Azion está assinando a zona e gerando os valores DS dela. O status passa para `ready` quando a Azion termina. |
| `ready`        | `true`    | Os quatro valores DS | A Azion assinou a zona, e os valores DS estão prontos para entregar ao seu registrador.                                                  |

Uma requisição que ativa o DNSSEC retorna o status `waiting`, antes de os valores DS existirem:

```json
{
  "state": "executed",
  "data": {
    "enabled": true,
    "status": "waiting",
    "delegation_signer": null
  }
}
```

O status `ready` descreve apenas o lado da Azion. Uma zona chega a `ready` esteja ou não o domínio delegado aos nameservers da Azion, e antes de qualquer registrador ter o registro DS. Os resolvers que validam só começam a verificar as assinaturas da zona quando o registrador publica o registro DS.

Depois que o DNSSEC é desativado, `status` continua `ready`, enquanto `enabled` passa a `false` e `delegation_signer` passa a `null`. Leia `enabled` para saber se a zona está assinada.

---

## Registro DS

O registro DS liga as chaves de uma zona à zona pai. Ele contém um hash, o digest, da chave de assinatura de chaves (KSK) da zona, e o registrador o publica para que os resolvers que validam possam confiar nas chaves da zona. Quando o status do DNSSEC é `ready`, a API retorna os quatro valores DS em `delegation_signer`:

```json
{
  "data": {
    "enabled": true,
    "status": "ready",
    "delegation_signer": {
      "algorithm_type": {"id": 13, "slug": "ECDSAP256SHA256"},
      "digest": "3d22…fc79",
      "digest_type": {"id": 2, "slug": "SHA256"},
      "key_tag": 12345
    }
  }
}
```

No Console, os mesmos quatro valores aparecem como campos bloqueados abaixo de **Enable DNSSEC**, cada um com um botão de cópia. Antes de os valores existirem, cada campo mostra `Create to show` na página **Create Zone** e `Save to show` em **Main Settings**. Depois de salvar com o switch ativado, recarregue a página para ver os valores.

| Console         | Campo da API     | Exemplo                 | O que é                                                                                                          |
| --------------- | ---------------- | ----------------------- | ---------------------------------------------------------------------------------------------------------------- |
| **Key Tag**     | `key_tag`        | `12345`                 | O identificador da chave que assina a zona, um inteiro de 1 a 65.535.                                            |
| **Algorithm**   | `algorithm_type` | `13`, `ECDSAP256SHA256` | O algoritmo das chaves da zona. A API retorna o número dele em `id` e o nome em `slug`; o Console mostra o nome. |
| **Digest Type** | `digest_type`    | `2`, `SHA256`           | A função de hash que gerou o digest, com o número em `id` e o nome em `slug`.                                    |
| **Digest**      | `digest`         | `3d22…fc79`             | O hash da chave de assinatura de chaves da zona, uma string hexadecimal de 64 caracteres com `SHA256`.           |

A Azion escolhe o algoritmo e o tipo de digest; nenhum campo os define. No seu registrador, por exemplo o [registro.br](https://registro.br/), adicione um registro DS com os quatro valores, nesta ordem: key tag, número do algoritmo, número do tipo de digest e digest. Para os valores acima, o registro fica assim:

```text
12345 13 2 3d22…fc79
```

O registry do domínio de nível superior (TLD) do domínio precisa oferecer suporte a DNSSEC para que o registro DS seja publicado. Depois que você adiciona o registro, o registrador e o registry do TLD o publicam no próprio ritmo, o que pode levar até 48 horas. Para verificar a cadeia de confiança depois da publicação, use o [DNSSEC Analyzer](https://dnssec-analyzer.verisignlabs.com/).

A Azion gera as chaves da zona e as publica, e você não adiciona nenhum registro DNSSEC à zona. Quando o status é `ready`, os nameservers da Azion publicam dois registros `DNSKEY` com algoritmo 13. As flags `257` marcam a chave de assinatura de chaves, e as flags `256` marcam a chave de assinatura de zona (ZSK). Cada resposta passa então a levar um registro `RRSIG`, a assinatura dela. A opção *DS - Delegation Signer* de **Record Type** é outro objeto: um registro DS dentro da sua zona, que delega uma zona filha. Para o formato dele, consulte [Tipos de registro](/pt-br/documentacao/plataforma/edge-dns/tipos-de-registro/#ds).

---

## Desativar o DNSSEC

Desative o DNSSEC de um domínio assinado em uma ordem fixa. Primeiro, remova o registro DS no seu registrador. Depois, espere o registro DS removido expirar dos caches dos resolvers. Por último, desative o DNSSEC da zona na Azion.

Na ordem inversa, o domínio pode ficar indisponível para os resolvers que validam. Enquanto o registrador ainda publica o registro DS, ou os resolvers ainda o mantêm em cache, eles esperam respostas assinadas que a Azion não envia mais.

Desativar o DNSSEC de uma zona muda estes valores e respostas:

- `enabled` passa a `false`, e `delegation_signer` passa a `null`.
- `status` continua `ready`.
- Os nameservers da Azion deixam de adicionar registros `RRSIG` às respostas.
- Os caches podem continuar servindo os registros `DNSKEY` da zona até que o TTL de 3.600 segundos deles expire.

Ativar o DNSSEC de novo na mesma zona retorna os mesmos quatro valores DS, então um registro DS que o seu registrador ainda mantém corresponde a eles.

No Console, desative o mesmo switch **Enable DNSSEC** em **Main Settings** e selecione **Save**. Para o procedimento completo em todas as interfaces, consulte [Ative o DNSSEC em uma zona](/pt-br/documentacao/guias/seguranca-de-aplicacoes/dns/ativar-dnssec/#desative-o-dnssec).

---

## Recursos relacionados

- [Como o Edge DNS funciona](/pt-br/documentacao/plataforma/edge-dns/como-funciona.md#dnssec): Como as respostas assinadas, as chaves da zona e o registro DS permitem que um resolver que valida confie em uma zona.
- [Ative o DNSSEC em uma zona](/pt-br/documentacao/guias/seguranca-de-aplicacoes/dns/ativar-dnssec.md): Os passos para ativar o DNSSEC no Console, na CLI ou na API e para adicionar o registro DS no seu registrador.
- [Zonas e registros](/pt-br/documentacao/plataforma/edge-dns/zonas-e-registros.md): Todos os campos de zona e de registro, os nameservers e os erros da API.
- [Solucionar problemas de Edge DNS](/pt-br/documentacao/plataforma/edge-dns/solucao-de-problemas.md#a-validacao-falha-depois-de-ativar-o-dnssec): O que verificar quando os resolvers não conseguem validar uma zona depois que o DNSSEC é ativado.
