# Configuração Geral

Para permitir que o SCEPman trate com êxito os pedidos SOAP recebidos, precisamos tomar 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` aponte 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" %}
O domínio personalizado não precisa se assemelhar ao FQDN do seu domínio AD. Portanto, ter um domínio `ad.contoso.local` não significa que você precise de um domínio personalizado idêntico ou semelhante para o SCEPman.

Consulte abaixo o problema conhecido sobre [WS\_E\_ENDPOINT\_ACCESS\_DENIED](#ws_e_endpoint_access_denied) para obter mais informações sobre isso.
{% endhint %}

Certifique-se de 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 o pedido inicial da política (listando os modelos de certificado) para emitir 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 configuração dedicada [AppConfig:ActiveDirectory:BaseUrl](https://docs.scepman.com/pt/configuracao-do-scepman/application-settings/active-directory/general#appconfig-activedirectory-baseurl) se preferir acessar o Endpoint do AD em uma Url diferente dos seus outros endpoints do SCEPman.
{% endstep %}

{% step %}

### Criar Service Principal

Use o `New-SCEPmanADPrincipal` Cmdlet do módulo SCEPman PowerShell para criar o service principal no seu domínio Active Directory local. Ele também exportará um keytab desta 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 ingressado no 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
* Escrever `msDS-SupportedEncryptionTypes`
* Escrever `servicePrincipalName`
* Escrever `userPrincipalName`

A variante abaixo também exige acesso de rede HTTPS de saída para a sua instância SCEPman.

{% hint style="info" %}
Se o seu computador com acesso a um Controlador de Domínio não tiver acesso à rede, existem variantes do CMDlet que funcionam sem isso, 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 fará 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 na etapa 5.
3. Adicionar um nome de service principal (SPN) ao objeto de computador.
4. Criar um keytab para a conta de computador contendo a chave de criptografia com base na senha do computador.
5. Criptografar o keytab com o certificado CA do SCEPman, para que apenas o SCEPman possa descriptografá-lo novamente usando a chave privada da CA.
6. Gerar a saída do 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 SCEPman App Service.
{% endstep %}

{% step %}

### Adicionar Keytab ao SCEPman

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

*Exemplo com todos os modelos de certificado ativados:*

<table data-full-width="true"><thead><tr><th>Definição</th><th>Valor</th></tr></thead><tbody><tr><td>AppConfig:ActiveDirectory:Keytab</td><td>Keytab codificado em Base64 para o service principal criado na Etapa 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
```

Este erro é conhecido por ocorrer durante a validação do servidor CEP quando você está usando os *padrão* URIs do Azure App Service. Esse erro é causado pelo protocolo Kerberos ao solicitar um service principal name do registro A do serviço a 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 tem garantia de 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 use 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
```

Este erro ocorre durante o registro do servidor CEP se você inserir uma URI que comece com `http://`. Certifique-se de registrar um servidor CEP usando apenas `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 local Administrators no computador enquanto edita a GPO.

Certifique-se de iniciar `gpmc.msc` com privilégios elevados neste caso.

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

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

    {% endcode %}
