> 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/fr/gestion-des-certificats/api-certificates/self-service-enrollment/intune-managed-linux-client.md).

# Client Linux géré par Intune

{% hint style="info" %}
Applicable à la version 2.9 de SCEPman et ultérieures
{% endhint %}

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

Cette méthode peut être utilisée pour inscrire des certificats pour des utilisateurs et des appareils gérés par Intune.

Intune va, dans ce cas, déployer un script pour exploiter l’API REST SCEPman qui, à son tour, inscrira soit un nouveau certificat, soit renouvellera un certificat déjà existant.

Notre développeur Christoph a présenté cette fonctionnalité et quelques détails de contexte lors du Workplace Ninja Usergroup Germany :

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

## Prérequis

### 1. Inscription en libre-service

Pour inscrire des certificats, les utilisateurs doivent être authentifiés afin de vérifier leur éligibilité. Suivez ce guide pour obtenir des instructions étape par étape sur la manière de configurer cela

{% content-ref url="/pages/9d82681498507ac944ca4d6297d5ecfb2730b6de" %}
[Inscription en libre-service](/fr/gestion-des-certificats/api-certificates/self-service-enrollment.md)
{% endcontent-ref %}

### 2. Paramètres d'App Service

#### Configuration

*Requis pour le renouvellement du certificat*

Configurez votre App Service SCEPman pour accepter les certificats clients mTLS. Dans le volet Configuration de la section Paramètres, vérifiez que le mode Certificat client dans Certificats clients entrants est défini sur ***Utilisateur interactif facultatif***.

<figure><img src="https://129332256-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>

Ne définissez pas le mode Certificat client sur Exiger ou Autoriser, car cela perturberait le fonctionnement normal de SCEPman sur les points de terminaison SCEP !

#### Variables d’environnement

Pour pouvoir utiliser ce scénario, vous devez définir les variables d’environnement suivantes sur l’App Service SCEPman.

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

*Requis pour l’inscription et le renouvellement des certificats*

Définissez cette variable sur ***true*** pour activer la validation des demandes de signature de certificat (CSR).

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

*Requis pour le renouvellement du certificat*

Définissez cette variable sur ***true*** pour activer le renouvellement des certificats.

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

*Requis pour le renouvellement du certificat*

Définissez cette variable sur une liste de types de certificats séparés par des virgules pour lesquels vous souhaitez autoriser le renouvellement. Consultez la documentation liée de la variable pour une liste des types de certificats possibles.

Exemple : ***Static,IntuneUser,IntuneDevice***

Ce scénario inscrira des certificats du type ***IntuneUser*** et ***IntuneDevice*** selon votre choix.

### **3. Prérequis côté client**

Les prérequis suivants doivent être présents sur le client/hôte exécutant pour pouvoir utiliser l’API REST d’inscription.

#### [**Azure CLI**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) **( version 2.61 et supérieure)**

Azure CLI est utilisé pour authentifier l’utilisateur en cours d’inscription afin de vérifier son éligibilité et de récupérer le jeton d’accès.

#### cURL

Utilisé pour envoyer le CSR créé au point de terminaison de l’API d’inscription SCEPman et recevoir le certificat.

#### OpenSSL

OpenSSL est utilisé pour générer une clé privée et créer un CSR pour l’inscription ou le renouvellement d’un certificat.

#### [**Inscription à Intune**](https://learn.microsoft.com/en-us/mem/intune/user-help/enroll-device-linux)

Suivez la documentation liée pour inscrire votre client Linux à Intune.

## Script d’inscription et de renouvellement

Le [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) Le script sera utilisé pour obtenir initialement un certificat, ainsi que pour le vérifier régulièrement et tenter un renouvellement si le seuil est atteint.

Bien que le script soit généralement exécuté en passant les paramètres dans le terminal, nous devrons en modifier certaines parties pour le déployer via Intune.

Repérez la partie du script qui affecte les arguments de terminal passés à la variable et adaptez-les à vos besoins :

Exemple de configuration :

```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

# Ajoutez également les variables suivantes
CERT_TYPE="user"
CERT_COMMAND="auto"
```

#### APPSERVICE\_URL

L’URL du service d’application SCEPman.

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

#### API\_SCOPE

Il s’agit de la portée d’API que vous pouvez créer dans la ***SCEPman-api*** inscription d’application dans votre environnement.

L’utilisateur se verra présenter la boîte de dialogue de consentement souhaitée et pourra ensuite utiliser la fonctionnalité en libre-service.

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

<figure><img src="https://129332256-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

Le répertoire dans lequel le certificat sera créé ou dont le renouvellement sera tenté. La clé privée et le certificat racine y seront également placés.

*Exemple : \~/certs/*

#### CERT\_NAME

Le nom de fichier (sans extension) du certificat qui sera créé ou lu pour le renouvellement.

*Exemple : "myCertificate"*

#### KEY\_NAME

Le nom de fichier de la clé privée qui sera créée ou lue pour le renouvellement.

*Exemple : "myKey"*

#### RENEWAL\_THRESHOLD\_DAYS

Le nombre de jours avant l’expiration à partir duquel le script commencera le processus de renouvellement.

*Exemple : 30*

#### CERT\_TYPE

Le type de certificat qui sera inscrit.

*Peut être soit "user" soit "device"*

#### CERT\_COMMAND

Cela définit le comportement du script en matière d'inscription et de renouvellement :

**"auto"** créera initialement un certificat ou renouvellera un certificat s'il existe déjà et est sur le point d'expirer.

**"renewal"** renouvellera un certificat s'il est sur le point d'expirer, mais ne créera pas de certificat initialement.

**"initial"** n'inscrira qu'un certificat, mais ne renouvellera pas un certificat existant.

{% hint style="warning" %}
Si vous inscrivez ou renouvelez un certificat d'appareil, le DeviceId sera récupéré depuis *\~/.config/intune/registration.toml* et l'utilisateur authentifié devra correspondre au propriétaire de l'objet dans le [DeviceDirectory](https://docs.scepman.com/advanced-configuration/application-settings/intune-validation#appconfig-intunevalidation-devicedirectory).
{% endhint %}

### Considérations

* Ce script ne chiffre pas les clés générées (cela nécessite la saisie d’une phrase de passe, donc le chiffrement a été omis pour permettre le renouvellement automatique.)
* Si vous renouvelez des certificats protégés par une phrase de passe provenant de Certificate Master, vous devrez saisir cette phrase de passe afin de les renouveler.

## Déployer le script

Avec Intune, nous pouvons déployer le script modifié selon un calendrier afin d'inscrire initialement un certificat avec les paramètres donnés et de vérifier régulièrement s'il doit être renouvelé.

Ajoutez un nouveau déploiement de script Linux et assurez-vous de définir le ***contexte d’exécution*** à ***Utilisateur*** et téléversez ou collez le contenu du script bash modifié que vous avez créé dans la section précédente.

Ajustez la ***fréquence d’exécution*** en fonction de votre seuil de renouvellement.

{% hint style="info" %}
L'utilisateur sera invité à se connecter à l'application Azure CLI lors de la première exécution, car il doit s'authentifier.
{% 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 by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.scepman.com/fr/gestion-des-certificats/api-certificates/self-service-enrollment/intune-managed-linux-client.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

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.
