# Como criar um certificado digital

import Tabs from '~/components/tabs/Tabs'
import Code from '~/components/Code/Code.astro'
import Apiv4Rollout from '~/includes/snippets/apiv4Rollout/pt/snippet.mdx'

<Apiv4Rollout />

Se sua aplicação roda em HTTPS, você precisa cadastrar um certificado digital com Azion [Certificate Manager](/pt-br/documentacao/produtos/secure/firewall/certificate-manager/). Um certificado digital TLS confirma a identidade de um site e protege as transferências de dados. Ele garante transações financeiras e qualquer troca de informações sensíveis, desde credenciais de login até dados pessoais.

Você também pode solicitar que um **certificado Let's Encrypt** seja gerado para o seu domínio através da Azion. O processo para solicitar um certificado Let's Encrypt é diferente dos certificados personalizados. Consulte [como gerar um certificado Let's Encrypt](/pt-br/documentacao/produtos/guias/como-gerar-um-certificado-lets-encrypt/) para mais informações.

:::note
- A Azion agora oferece a flexibilidade de emitir e renovar [certificados Let’s Encrypt](/pt-br/documentacao/produtos/secure/firewall/certificate-manager/) via API utilizando tanto o desafio DNS-01 quanto o HTTP-01, permitindo que você escolha o método que melhor atenda às suas necessidades.
- Não possui um certificado digital? Consulte o guia sobre [Como obter e registrar um certificado digital com a Azion](/pt-br/documentacao/produtos/guias/secure/certificado-digital/).
:::

Há instruções separadas para as configurações do [Domains legado](/pt-br/documentacao/produtos/build/applications/domains/) e para o novo produto [Workloads](/pt-br/documentacao/produtos/secure/workloads).

:::tip[Dica]
Se você não tem certeza de quais passos se aplicam à sua conta, consulte [o guia Verifique a migração da sua conta para a API v4](/pt-br/documentacao/produtos/guias/verificar-migracao-conta/) para determinar se sua conta já foi migrada.
:::

---

## Opção 1: Faça upload de certificado personalizado

<Tabs client:visible>
    <Fragment slot="tab.console">Console</Fragment>
    <Fragment slot="tab.api">API</Fragment>

<Fragment slot="panel.console">
1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Certificate Manager**.
2. Clique no botão **+ Digital Certificate**.
3. Nomeie seu certificado.
4. Selecione a opção **Import a server certificate**.
5. No campo **Certificate**, cole o certificado.
6. No campo **Private Key**, cole a chave privada.
7. Clique no botão **Save**.
</Fragment>

<Fragment slot="panel.api">
1. Adquira o certificado X.509 de uma CA.
2. Substitua quebras de linha por `\n`, incluindo para os marcadores de início e fim, para transformar o certificado em uma string.
3. Faça o mesmo com a chave privada.
4. Execute o seguinte comando cURL no seu terminal, substituindo `[TOKEN VALUE]` pelo seu [personal token](/pt-br/documentacao/produtos/guias/personal-tokens/) e adicionando seu certificado e chave privada aos campos:

<Code lang="bash" code={`
curl --request POST \
  --url https://api.azion.com/v4/digital_certificates/certificates \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "CERT yourdomain.com",
  "certificate": "-----BEGIN CERTIFICATE-----\n<your_private_key>\n-----END CERTIFICATE-----",
  "private_key": "-----BEGIN RSA PRIVATE KEY-----\n<your_private_key>\n-----END RSA PRIVATE KEY-----",
  "type": "edge_certificate",
  "active": true
}'
`} />

  | Chave | Descrição |
  | --- | --- |
  | `name` | Define a string no valor como um nome da entrada do certificado na Azion. |
  | `certificate` | Recebe seu certificado como um valor. Deve ser uma string contínua. |
  | `private_key` | Recebe sua chave privada como um valor. Deve ser uma string contínua. |

Ao fazer o upload de seu certificado, você receberá uma resposta confirmando a sua criação:

<Code lang="json" code={`
{
    "results": {
        "id": <digital_certificate_id>,
        "name": "CERT yourdomain.com",
        "issuer": "",
        "subject_name": [],
        "validity": "2028-03-24 20:09:00-03:00",
        "status": "Active",
        "certificate_type": "edge_certificate",
        "managed": false
    }
}
`} />
</Fragment>

</Tabs>

---

## Opção 2: Faça upload do Trusted CA para mTLS

<Tabs client:visible>
    <Fragment slot="tab.console">Console</Fragment>
    <Fragment slot="tab.api">API</Fragment>

<Fragment slot="panel.console">

1. Acesse o [Azion Console](/pt-br/documentacao/produtos/guias/como-acessar-o-azion-console/) > **Certificate Manager**.
2. Clique no botão **+ Digital Certificate**.
3. Nomeie seu certificado.
4. Selecione a opção **Import a Trusted CA certificate**.
5. No campo **Certificate**, cole o certificado.
6. Clique no botão **Save**.
</Fragment>

<Fragment slot="panel.api">

1. Adquira um trusted certificate assinado pela sua CA.
2. Substitua qualquer quebra de linha por `\n`, incluindo para os marcadores de início e fim, para transformar o certificado em uma string.
3. Execute o seguinte comando cURL no seu terminal, substituindo `[TOKEN VALUE]` pelo seu [personal token](/pt-br/documentacao/produtos/guias/personal-tokens/) e adicionando seu certificado aos campos:

<Code lang="bash" code={`
curl --request POST \
  --url https://api.azion.com/v4/digital_certificates/certificates \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "TCA yourdomain.com",
  "certificate": "-----BEGIN CERTIFICATE-----\n<your_private_key>\n-----END CERTIFICATE-----",
  "type": "trusted_ca_certificate",
  "active": true
}'
`} />

  | Chave | Descrição |
  | --- | --- |
  | `name` | Define a string no valor como um nome da entrada do certificado com Azion. |
  | `certificate` | Recebe seu certificado como um valor. Deve ser uma string contínua. |
  | `certificate_type` | Quando definido como `trusted_ca_certificate`, o endpoint não requer mais uma entrada de chave privada. |

Ao fazer o upload de seu Trusted CA, você receberá uma resposta com dados sobre o certificado:

<Code lang="json" code={`
{
    "results": {
        "id": <digital_certificate_id>,
        "name": "TCA yourdomain.com",
        "issuer": "",
        "subject_name": [],
        "validity": "2028-03-24 20:09:00-03:00",
        "status": "Active",
        "certificate_type": "trusted_ca_certificate",
        "managed": false
    }
}
`} />

</Fragment>

</Tabs>

---

## Associe certificado a um domínio

Para associar seu certificado a um domínio Azion:

<Tabs client:visible>
    <Fragment slot="tab.consoleworkloads">Console - Workloads</Fragment>
    <Fragment slot="tab.consoledomain">Console - Domains</Fragment>
    <Fragment slot="tab.apiv4">API v4</Fragment>
    <Fragment slot="tab.apiv3">API v3</Fragment>

<Fragment slot="panel.consoleworkloads">

1. No canto superior esquerdo da página, abra o **Products menu**, representado por três linhas horizontais > **Workloads**.
2. Selecione o domínio desejado.
3. Em **Digital Certificate**, selecione o certificado que você criou nas etapas anteriores.
4. Certifique-se de que os domínios listados nos campos **Subdomain** e **Domain** sejam os mesmos do certificado emitido para o seu domínio.
5. Clique no botão **Save**.
6. Espere alguns minutos para que as alterações se propaguem. 

Você pode acessar sua aplicação HTTPS e verificar as configurações de segurança usando seu navegador ou executar o seguinte comando OpenSSL, substituindo `seudominio.com` por um dos CNAMEs do domínio:

<Code lang="bash" code={`
openssl s_client -showcerts -connect seudominio.com:443
`} />

</Fragment>

<Fragment slot="panel.consoledomain">

1. No canto superior esquerdo da página, abra o **Products menu**, representado por três linhas horizontais > **Domains**.
2. Selecione o domínio desejado.
3. Em **Digital Certificate**, selecione o certificado que você criou nas etapas anteriores.
4. Certifique-se de que os CNAMEs listados no campo **CNAME** sejam os mesmos do certificado emitido para o seu domínio.
5. Clique no botão **Save**.
6. Espere alguns minutos para que as alterações se propaguem. 

Você pode acessar sua aplicação HTTPS e verificar as configurações de segurança usando seu navegador ou executar o seguinte comando OpenSSL, substituindo `seudominio.com` por um dos CNAMEs do domínio:

<Code lang="bash" code={`
openssl s_client -showcerts -connect seudominio.com:443
`} />
</Fragment>

<Fragment slot="panel.apiv4">

1. Execute a seguinte requisição `GET` para obter o ID do seu workload:

<Code lang="bash" code={`
curl --request GET \
  --url https://api.azion.com/v4/workspace/workloads \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]'
`} />

2. Você receberá uma resposta semelhante a esta:

<Code lang="json" code={`
  "results": [
    {
      "id": <workload_id>,
      "name": "My Workload",
      "active": true,
      "last_editor": "your-email@example.com",
      "last_modified": "2025-08-06T17:53:47.460211Z",
      "infrastructure": 1,
      "tls": {
        "certificate": null,
        "ciphers": 7,
        "minimum_version": "tls_1_3"
    },
    }
   ]
`} />

3. Localize o workload que você deseja associar ao certificado e copie o valor `workload_id` recebido na resposta.
4. Execute uma requisição `PATCH`, adicionando o `workload_id` como um caminho, para atualizar o campo `digital_certificate_id` com o id que você recebeu no processo de criação:

:::note[Opcional]
Como mostrado no exemplo abaixo, se você ainda não atualizou o campo CNAME com seu domínio personalizado, certifique-se de adicionar o host e quaisquer CNAMEs para a aplicação que são protegidos pelo certificado. Isso será útil para quando você [apontar seu domínio](/pt-br/documentacao/produtos/guias/apontar-dominio-para-a-azion/) ou [migrar sua resolução NS](/pt-br/documentacao/produtos/guias/migrar-ns-para-a-azion/) para a Azion.
:::

<Code lang="bash" code={`
curl --request PATCH \
  --url https://api.azion.com/v4/workspace/workloads/{workload_id} \
  --header 'Accept: application/json' \
  --header 'Authorization: Token [TOKEN VALUE]' \
  --header 'Content-Type: application/json' \
  --data '{
    "tls": {
      "certificate": <digital_certificate_id>
    },
    "domains": [
      "yourdomain.com"
    ]
  }'
`} />

5. Você deve receber uma resposta com os dados atualizados.
6. Aguarde alguns minutos para que as alterações propaguem para o edge. Em seguida, acesse sua aplicação HTTPS e verifique as configurações de segurança usando seu navegador ou execute o seguinte comando OpenSSL, substituindo `seudominio.com` por um dos CNAMEs do domínio:

<Code lang="bash" code={`
openssl s_client -showcerts -connect seudominio.com:443
`} />

:::tip
Confira a [documentação da API da Azion](https://api.azion.com/) para saber mais sobre todas as funcionalidades disponíveis via API.
:::
</Fragment>

<Fragment slot="panel.apiv3">

1. Execute a seguinte requisição `GET` para obter o ID do seu domínio:

<Code lang="bash" code={`
curl --location 'https://api.azionapi.net/domains' \
--header 'Accept: application/json; version=3' \
--header 'Authorization: Token [TOKEN VALUE]' \
`} />

2. Você receberá uma resposta semelhante a esta:

<Code lang="json" code={`
{
    ...
    "results": [
        {
            "id": <domain_id>,
            "name": "example.com CA1 DC0",
            "cnames": [],
            "cname_access_only": true,
            "digital_certificate_id": null,
            "edge_application_id": <edge_application_id>,
            "is_active": true,
            "domain_name": "xxxxxxxxxx.map.azionedge.net"
        }
    ]
}
`} />

3. Localize o domínio que você deseja associar ao certificado e copie o valor `domain_id` recebido na resposta.
4. Execute uma requisição `PATCH`, adicionando o `domain_id` como um caminho, para atualizar o campo `digital_certificate_id` com o id que você recebeu no processo de criação:

:::note[Opcional]
Como mostrado no exemplo abaixo, se você ainda não atualizou o campo CNAME com seu domínio personalizado, certifique-se de adicionar o host e quaisquer CNAMEs para a aplicação que são protegidos pelo certificado. Isso será útil para quando você [apontar seu domínio](/pt-br/documentacao/produtos/guias/apontar-dominio-para-a-azion/) ou [migrar sua resolução NS](/pt-br/documentacao/produtos/guias/migrar-ns-para-a-azion/) para Azion.
:::

<Code lang="bash" code={`
curl --location --request PATCH 'https://api.azionapi.net/domains/<domain_id>' \
--header 'Accept: application/json; version=3' \
--header 'Authorization: Token [TOKEN VALUE]' \
--header 'Content-Type: application/json' \
--data '{
    "digital_certificate_id": <digital_certificate_id>,
    "cnames": [
        "seudominio.com"
    ]
}'
`} />

5. Você deve receber uma resposta com os dados atualizados.
6. Aguarde alguns minutos para que as alterações propaguem para o edge. Em seguida, acesse sua aplicação HTTPS e verifique as configurações de segurança usando seu navegador ou execute o seguinte comando OpenSSL, substituindo `seudominio.com` por um dos CNAMEs do domínio:

<Code lang="bash" code={`
openssl s_client -showcerts -connect seudominio.com:443
`} />

:::tip
Confira a [documentação da API da Azion](https://api.azion.com/v3) para saber mais sobre todas as funcionalidades disponíveis via API.
:::
</Fragment>

</Tabs>