> 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 e superior do SCEPman
{% endhint %}

{% hint style="warning" %}
Apenas SCEPman Enterprise Edition
{% endhint %}

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

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

O nosso developer 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 registar certificados, os utilizadores devem estar autenticados para verificar a sua elegibilidade. Siga este guia para instruções passo a passo sobre como configurar isto

{% content-ref url="/pages/1e799ec75d1cb56025eee9c110760d8b59cd3666" %}
[Inscrição 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 a renovação do certificado*

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

<figure><img src="/files/e31b8e4f8eba4e835913ea2e756ef55d5ee35fd2" alt=""><figcaption></figcaption></figure>

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

#### Variáveis de ambiente

Para poder utilizar este cenário, tem de definir as seguintes variáveis de ambiente no SCEPman app service.

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

*Necessário para o registo e a renovação de certificados*

Defina esta variável como ***true*** para permitir a validação de pedidos de assinatura de certificados (CSRs).

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

*Necessário para a renovação do certificado*

Defina esta variável como ***true*** para permitir renovações de certificados.

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

*Necessário para a renovação do certificado*

Defina esta variável como uma lista de tipos de certificados separada por vírgulas que pretende اجازه renovações. Consulte a documentação da variável ligada para obter uma lista dos possíveis tipos de certificados.

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

Este cenário 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 usar a Enrollment REST API.

#### [**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 que está a registar-se, para verificar a sua elegibilidade e recuperar o token de acesso.

#### cURL

Usado para enviar o CSR criado para o Endpoint da SCEPman Enrollment API e receber o certificado.

#### OpenSSL

O OpenSSL é usado para gerar uma chave privada e criar um CSR para registar 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 associada para inscrever o seu cliente Linux no Intune.&#x20;

## 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 receber 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, teremos de modificar algumas partes dele 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

A URL do serviço de aplicativo SCEPman.

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

#### API\_SCOPE

Este é o escopo da API que você pode criar no ***SCEPman-api*** registro de aplicativo no seu ambiente.

O usuário verá a caixa de diálogo de consentimento desejada e depois poderá usar a funcionalidade de autoatendimento.

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

<figure><img src="/files/786cb559882ae9aba7a0dc8902423f3ceee252f3" alt=""><figcaption></figcaption></figure>

#### CERT\_DIR

O diretório onde o certificado será criado ou será tentada a sua renovação. A chave privada e o certificado raiz também serão colocados aqui.

*Exemplo: \~/certs/*

#### CERT\_NAME

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

*Exemplo: "myCertificate"*

#### KEY\_NAME

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

*Exemplo: "myKey"*

#### RENEWAL\_THRESHOLD\_DAYS

A quantidade de dias para os quais o certificado precisará estar prestes a 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"** irá criar inicialmente um certificado ou renovar um certificado, se este já existir e estiver prestes a expirar.

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

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

{% hint style="warning" %}
Se estiver a inscrever ou a renovar um certificado de dispositivo, o DeviceId será obtido de *\~/.config/intune/registration.toml* e o utilizador autenticado terá de 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 criptografa as chaves geradas (isso requer a entrada de uma senha, portanto a criptografia foi omitida para permitir a renovação automática).
* Se você estiver renovando certificados protegidos por senha do Certificate Master, precisará informar essa senha para renová-los.

## Implementar Script

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

Adicione uma nova implementação de script Linux e certifique-se de definir o ***Contexto de execução*** para ***Utilizador*** e carregue 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.&#x20;
{% 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.
