> For the complete documentation index, see [llms.txt](https://docs.scepman.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.scepman.com/pt/gestao-de-certificados/api-certificates/self-service-enrollment/intune-managed-linux-client.md).

# Cliente Linux gerido pelo Intune

{% hint style="info" %}
Aplicável à versão 2.9 do SCEPman e superior
{% endhint %}

{% hint style="warning" %}
apenas na Edição Enterprise do SCEPman
{% endhint %}

Este método pode ser usado para inscrever certificados para utilizadores e dispositivos geridos pelo Intune.

Neste caso, o Intune enviará um script para utilizar a API REST do SCEPman, que por sua vez irá inscrever um novo certificado ou renovar um já existente.

O nosso programador Christoph apresentou esta funcionalidade e alguns detalhes de contexto no Workplace Ninja Usergroup Germany:

{% embed url="<https://www.youtube.com/watch?v=dQcVl1vS3lg>" %}

## Pré-requisitos

### 1. Inscrição de autoatendimento

Para inscrever certificados, os utilizadores têm de ser autenticados para verificar a respetiva elegibilidade. Siga este guia para obter instruções passo a passo sobre como configurar isto

{% content-ref url="/pages/1e799ec75d1cb56025eee9c110760d8b59cd3666" %}
[Registo de autoatendimento](/pt/gestao-de-certificados/api-certificates/self-service-enrollment.md)
{% endcontent-ref %}

### 2. Definições do App Service

#### Configuração

*Necessário para renovação de certificado*

Configure o seu SCEPman App Service para aceitar certificados de cliente mTLS. No painel Configuration da seção Settings, verifique se o Client certificate mode em Incoming client certificates está definido como ***Utilizador interativo opcional***.

<figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F9UeFFxwefnV8Cb7Zz14u%2Fimage.png?alt=media&amp;token=210ea9b7-ecd5-4b2b-9641-22447246e718" alt=""><figcaption></figcaption></figure>

Não defina o Client certificate mode como Require ou Allow, pois isso quebraria o funcionamento normal do SCEPman nos endpoints SCEP!

#### Variáveis de ambiente

Para usar este cenário, você deve definir as seguintes Variáveis de Ambiente no serviço de aplicativo SCEPman.

#### [AppConfig:DbCSRValidation:Enabled](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-enabled)

*Necessário para inscrição e renovação de certificado*

Defina esta variável como ***true*** para ativar a validação de solicitações de assinatura de certificado (CSRs).

#### [AppConfig:DbCSRValidation:AllowRenewals](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-allowrenewals)

*Necessário para renovação de certificado*

Defina esta variável como ***true*** para ativar renovações de certificado.

#### [AppConfig:DbCSRValidation:ReenrollmentAllowedCertificateTypes](https://docs.scepman.com/advanced-configuration/application-settings/dbcsr-validation#appconfig-dbcsrvalidation-reenrollmentallowedcertificatetypes)

*Necessário para renovação de certificado*

Defina esta variável como uma lista separada por vírgulas de tipos de certificado para os quais você deseja permitir a renovação. Consulte a documentação da variável vinculada para ver uma lista de tipos de certificado possíveis.

Exemplo: ***Static,IntuneUser,IntuneDevice***

Este cenário irá inscrever certificados do tipo ***IntuneUser*** e ***IntuneDevice*** dependendo da sua escolha.

### **3. Pré-requisitos do cliente**

Os seguintes pré-requisitos devem estar presentes no cliente/host de execução para poder utilizar a API REST de inscrição.

#### [**Azure CLI**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) **( versão 2.61 e superior)**

O Azure CLI é usado para autenticar o utilizador em processo de inscrição, verificar a sua elegibilidade e obter o token de acesso.

#### cURL

Usado para enviar o CSR criado para o endpoint da API de inscrição do SCEPman e receber o certificado.

#### OpenSSL

O OpenSSL é usado para gerar uma chave privada e criar um CSR para inscrever ou renovar um certificado.

#### [**Inscrição no Intune**](https://learn.microsoft.com/en-us/mem/intune/user-help/enroll-device-linux)

Siga a documentação ligada para inscrever o seu cliente Linux no Intune.

## Script de inscrição e renovação

O [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) O script será usado para obter inicialmente um certificado, bem como para o verificar regularmente e tentar uma renovação caso o limiar seja atingido.

Embora o script seja normalmente executado passando os parâmetros no terminal, precisaremos de modificar algumas partes para ser implementado através do Intune.

Localize a parte do script que atribui os argumentos passados no terminal à variável e ajuste-os às suas necessidades:

Exemplo de configuração:

```bash
APPSERVICE_URL="https://scepman.contoso.net/"
API_SCOPE="api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll"
CERT_DIR=~/certs
CERT_NAME="myCertificate"
KEY_NAME="myKey"
RENEWAL_THRESHOLD_DAYS=30

# Além disso, adicione as seguintes variáveis
CERT_TYPE="user"
CERT_COMMAND="auto"
```

#### APPSERVICE\_URL

O URL do serviço de aplicações da SCEPman.

*Exemplo: "<https://scepman.contoso.net/>"*

#### API\_SCOPE

Este é o âmbito da API que pode criar no ***SCEPman-api*** registo da aplicação no seu ambiente.

Ao utilizador será apresentado o diálogo de consentimento desejado e, posteriormente, poderá usar a funcionalidade de autoatendimento.

*Exemplo: "api://*&#x62;7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enrol&#x6C;*"*

<figure><img src="https://3802289327-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FKWdXwi8JnKGy27tU384e%2Fimage.png?alt=media&amp;token=5173dc4b-8981-40e9-8875-e932078c6667" alt=""><figcaption></figcaption></figure>

#### CERT\_DIR

O diretório onde o certificado será criado ou onde se tentará renová-lo. A chave privada e o certificado raiz também serão colocados aqui.

*Exemplo: \~/certs/*

#### CERT\_NAME

O nome do ficheiro (sem extensão) do certificado que será criado ou lido para renovação.

*Exemplo: "myCertificate"*

#### KEY\_NAME

O nome do ficheiro da chave privada que será criado ou lido para renovação.

*Exemplo: "myKey"*

#### RENEWAL\_THRESHOLD\_DAYS

O número de dias em que o certificado terá de expirar para que o script inicie o processo de renovação.

*Exemplo: 30*

#### CERT\_TYPE

O tipo de certificado que será inscrito.

*Pode ser "user" ou "device"*

#### CERT\_COMMAND

Isto define o comportamento do script em relação à inscrição e renovação:

**"auto"** criará um certificado inicialmente ou renovará um certificado se ele já existir e estiver prestes a expirar.

**"renewal"** renovará um certificado se ele estiver prestes a expirar, mas não criará um certificado inicialmente.

**"initial"** inscreverá apenas um certificado, mas não renovará um existente.

{% hint style="warning" %}
Se você estiver inscrevendo ou renovando um certificado de dispositivo, o DeviceId será obtido a partir de *\~/.config/intune/registration.toml* e o utilizador autenticado precisará corresponder ao proprietário do objeto no [DeviceDirectory](https://docs.scepman.com/advanced-configuration/application-settings/intune-validation#appconfig-intunevalidation-devicedirectory).
{% endhint %}

### Considerações

* Este script não encripta as chaves geradas (isto requer introdução de frase-passe, pelo que a encriptação foi omitida para permitir a renovação automática.)
* Se estiver a renovar certificados protegidos por frase-passe do Certificate Master, terá de introduzir essa frase-passe para os renovar.

## Implementar script

Usando o Intune, podemos implementar o script modificado de forma agendada para inscrever inicialmente um certificado com os parâmetros fornecidos e verificar regularmente se ele precisa de ser renovado.

Adicione uma nova implementação de script Linux e certifique-se de definir o ***contexto de execução*** para ***Usuário*** e faça upload ou cole o conteúdo do script bash modificado que criou na secção anterior.

Ajuste a ***frequência de execução*** de acordo com o seu limiar de renovação.

{% hint style="info" %}
O utilizador será solicitado a iniciar sessão na aplicação Azure CLI na primeira execução, uma vez que é necessário autenticar-se.
{% endhint %}


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://docs.scepman.com/pt/gestao-de-certificados/api-certificates/self-service-enrollment/intune-managed-linux-client.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
