# Configuração Geral

Para permitir que o SCEPman trate com sucesso solicitações SOAP recebidas, precisamos executar alguns passos:

{% stepper %}
{% step %}

### Domínio personalizado e BaseUrl

Para uma autenticação bem-sucedida com o SCEPman, certifique-se de que um domínio personalizado usando um `registro A` aponta para o App Service. Caso contrário, o cliente não conseguirá solicitar um ticket Kerberos válido ao controlador de domínio.

{% hint style="info" %}
Veja o problema conhecido abaixo sobre [WS\_E\_ENDPOINT\_ACCESS\_DENIED](#ws_e_endpoint_access_denied) para mais informações sobre isso.
{% endhint %}

Garanta que o SCEPman esteja configurado para ser acessível usando um domínio personalizado:

{% content-ref url="../../configuracao-do-azure/custom-domain" %}
[custom-domain](https://docs.scepman.com/pt/configuracao-do-azure/custom-domain)
{% endcontent-ref %}

O mesmo requisito também se aplica após a solicitação inicial de política (listagem dos templates de certificado) para registrar certificados. Para permitir autenticações bem-sucedidas, certifique-se de que a [AppConfig:BaseUrl](https://docs.scepman.com/pt/configuracao-do-scepman/application-settings/basics#appconfig-baseurl) variável corresponda ao seu domínio personalizado ou use a [AppConfig:ActiveDirectory:BaseUrl](https://docs.scepman.com/pt/configuracao-do-scepman/application-settings/active-directory/general#appconfig-activedirectory-baseurl) configuração dedicada se preferir acessar o Endpoint do AD em uma URL diferente das suas outras endpoints do SCEPman.
{% endstep %}

{% step %}

### Criar Service Principal

Use o `New-SCEPmanADPrincipal` Cmdlet do módulo PowerShell do SCEPman para criar o service principal no seu domínio Active Directory on-premises. Ele também exportará um keytab dessa conta e o criptografará com o certificado CA do SCEPman.

Você pode executar este comando em um controlador de domínio ou em um servidor associado ao domínio que tenha instalado o [`RSAT-AD-Tools`](#user-content-fn-1)[^1] recurso. Você também precisará das seguintes permissões na OU em que deseja criar o principal:

Na própria OU:

* Criar objetos de computador

Em objetos de computador descendentes:

* Redefinir senha
* Gravar `msDS-SupportedEncryptionTypes`
* Gravar `servicePrincipalName`
* Gravar `userPrincipalName`

A variante abaixo também requer acesso de rede HTTPS de saída à sua instância do SCEPman.

{% hint style="info" %}
Se o seu computador com acesso a um Controlador de Domínio não tiver acesso à rede, há variantes do CMDlet que funcionam sem ele, mas exigem alguma preparação adicional, como baixar o certificado CA do SCEPman e copiar a CA para a máquina que executa o CMDlet.
{% endhint %}

{% code overflow="wrap" lineNumbers="true" expandable="true" %}

```powershell
Install-Module SCEPman -Force
New-SCEPmanADPrincipal -Name "SCEPmanAD" -AppServiceUrl "scepman.contoso.com" -OU "OU=Example,DC=contoso,DC=local"
```

{% endcode %}

Executar este comando realizará o seguinte:

1. Criar um objeto de computador na `OU=Example,DC=contoso,DC=com` Unidade Organizacional.
2. Baixar o certificado CA do SCEPman para criptografar o keytab no passo 5.
3. Adicionar um service principal name (SPN) ao objeto de computador.
4. Criar um keytab para a conta do computador contendo a chave de criptografia baseada na senha do computador.
5. Criptografar o keytab com o certificado CA do SCEPman, de modo que apenas o SCEPman possa descriptografá-lo novamente usando a chave privada da CA.
6. Gerar o keytab criptografado, para que ele possa ser transferido para a configuração do SCEPman.

A saída codificada em Base64 deve então ser adicionada à variável de ambiente **AppConfig:ActiveDirectory:Keytab** do seu App Service do SCEPman.
{% endstep %}

{% step %}

### Adicionar Keytab ao SCEPman

A integração pode ser facilmente habilitada adicionando as seguintes variáveis de ambiente no **App Service do SCEPman.** Dependendo do seu caso de uso, habilite um ou mais dos templates de certificado disponíveis:

*Exemplo com todos os templates de certificado habilitados:*

<table data-full-width="true"><thead><tr><th>Configuração</th><th>Valor</th></tr></thead><tbody><tr><td>AppConfig:ActiveDirectory:Keytab</td><td>Keytab codificado em Base64 para o service principal criado no Passo 1</td></tr><tr><td>AppConfig:ActiveDirectory:Computer:Enabled</td><td>true</td></tr><tr><td>AppConfig:ActiveDirectory:User:Enabled</td><td>true</td></tr><tr><td>AppConfig:ActiveDirectory:DC:Enabled</td><td>true</td></tr></tbody></table>
{% endstep %}
{% endstepper %}

## Problemas conhecidos

### WS\_E\_ENDPOINT\_ACCESS\_DENIED

```
Erro: WS_E_ENDPOINT_ACCESS_DENIED 
Hex: 0x803d0005
Dec: -2143485947
```

Sabe-se que esse erro ocorre durante a validação do servidor CEP quando você está usando os *padrões* URIs do Azure App Service. Esse erro é causado pelo protocolo Kerberos solicitando um service principal name do registro A do serviço que será acessado. No caso dos domínios padrão do app service, por exemplo `contoso.azurewebsites.net` é apenas um CNAME e aponta para um registro A semelhante a:

```
waws-prod-ab1-234-c56d.westeurope.cloudapp.azure.com
```

Como esse registro A de um host de infraestrutura não é garantido ser consistente no futuro, adicionar um service principal name para esse host **não é recomendado**.

Certifique-se de adicionar um domínio personalizado ao seu app service e usar um registro A no seu provedor de DNS para apontá-lo para o app service em vez de um CNAME.

{% content-ref url="../../configuracao-do-azure/custom-domain" %}
[custom-domain](https://docs.scepman.com/pt/configuracao-do-azure/custom-domain)
{% endcontent-ref %}

### ERROR\_INVALID\_PARAMETER

```
Erro: ERROR_INVALID_PARAMETER
Hex: 0x80070057
Dec: -2147024809
```

Esse erro ocorre durante o registro do servidor CEP se você inserir um URI que começa com `http://`. Certifique-se de registrar um servidor CEP apenas usando `https://`

### ERROR\_ACCESS\_DENIED

```
Erro: ERROR_ACCESS_DENIED
Hex: 0x80070005
Dec: -2147024891
```

Ao registrar um servidor CEP no contexto da máquina, o usuário atuante (a conta que iniciou `gpmc.msc`) precisa ser membro do grupo Administradores locais no computador enquanto edita a GPO.

Certifique-se de iniciar `gpmc.msc` com permissões elevadas neste caso.

[^1]: {% code fullWidth="true" %}

    ```powershell
    Install-WindowsFeature -Name RSAT-AD-Tools
    ```

    {% endcode %}
