> 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/api-enrollment/linux-server.md).

# Serveur Linux

{% hint style="info" %}
Cette fonctionnalité nécessite la version **2.3.689** ou supérieure.
{% endhint %}

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

Alors que les autres cas d’utilisation de SCEPman offrent la possibilité d’authentifier un utilisateur de manière interactive pour ne lui permettre ensuite d’inscrire que des certificats utilisateur pour son compte ou ses appareils, vous pourriez vouloir pouvoir inscrire des certificats de manière non interactive pour des sujets arbitraires.

Pour ce faire, nous pouvons authentifier un Service Principal et permettre à celui-ci d’exploiter l’API REST d’inscription de SCEPman.

## Prérequis

Veuillez consulter l’article sur l’inscription via API pour savoir comment créer un Service Principal pouvant être utilisé pour l’authentification :

{% content-ref url="/pages/9c02c2d84b9f5cb46dd91ef987350d59110b089c" %}
[Enrôlement via l'API](/fr/gestion-des-certificats/api-certificates/api-enrollment.md)
{% endcontent-ref %}

## Module PowerShell SCEPmanClient

### Demandes initiales

Vous pouvez utiliser le module PowerShell SCEPmanClient pour demander des certificats sur votre serveur Linux :

```powershell
$Parameters = @{
    'Url'              = 'scepman.contoso.com'
    'ClientId'         = '569fbf51-aa63-4b5c-8b26-ebbcfcde2715'
    'TenantId'         = '8aa3123d-e76c-42e2-ba3c-190cabbec531'
    'ClientSecret'     = 'csa8Q~aVaWCLZTzswIBGvhxUiEvhptuqEyJugb70'
    'Subject'          = 'CN=LinuxServer'
    'IP'               = '10.22.11.8'
    'ExtendedKeyUsage' = 'ServerAuth'
    'SaveToFolder'     = '/etc/ssl/scepman'
    'IncludeRootCA'    = $true
}

New-SCEPmanCertificate @Parameters
```

### Renouvellement du certificat

Vous pouvez également utiliser le module PowerShell pour renouveler des certificats déjà existants. Cela évitera également d'avoir à utiliser un Service Principal pour l'authentification :

```powershell
$Parameters = @{
    'CertificateFromFile' = '/home/user/.certs/server.pem'
    'KeyFromFile'         = '/home/user/.certs/server.key'
    'SaveToFolder'        = '/home/user/.certs'
}

New-SCEPmanCertificate @Parameters
```

## Script d'inscription et de renouvellement

Si le module PowerShell n'est pas une option pour vous, le [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) script peut être utilisé pour obtenir initialement un certificat ainsi que pour le vérifier et tenter un renouvellement s'il est sur le point d'expirer.

### Prérequis du client

Les prérequis suivants doivent être présents sur le client/hôte exécutant afin de 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 procédant à l'inscription, vérifier son éligibilité et récupérer le jeton d'accès.

#### cURL

Utilisé pour envoyer la CSR créée 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 une CSR pour inscrire ou renouveler un certificat.

Exemple :

{% code overflow="wrap" %}

```bash
./enrollrenewcertificate.sh -s https://scepman.contoso.net/ api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436 ~/certs/ "myCertificate" "myKeyName" 30 edbc406b-7384-414e-af8b-1a3b187b3f7e [Client_Secret] 736e80bb-3102-479b-83ba-e45c80ef723b "/CN=SubjectName,O=Organization" "DNS:webserver.contoso.com"
```

{% endcode %}

#### 1. Commande

Définit le comportement du script

Pour ce cas d’utilisation, nous pouvons utiliser les options suivantes :

**-s** pour un certificat de serveur avec détection automatique s’il s’agit d’une inscription initiale ou d’un renouvellement

**-y** pour l’inscription initiale d’un certificat de serveur

**-c** pour soumettre une demande de signature de certificat existante

Pour les cas d’utilisation de l’authentification client, voir :

{% content-ref url="/pages/19dd43c598789475b9360e742c421839fb8c16d9" %}
[Client Linux non géré](/fr/gestion-des-certificats/api-certificates/self-service-enrollment/unmanaged-linux-client.md)
{% endcontent-ref %}

#### 2. URL du service App

L'URL du service d'application SCEPman.

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

#### 3. Portée de l’API

C’est le ***URI de l’ID de l’application*** de la ***SCEPman-api*** enregistrement d'application dans votre environnement.

*Exemple : "api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436"*

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FtjlK9CzLeLcLmbu0nK3b%2Fimage.png?alt=media&amp;token=a7af923f-c790-416e-bb9d-9e640d391c44" alt=""><figcaption></figcaption></figure>

#### 4. Nom de fichier du certificat

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

*Exemple : "myCertificate"*

#### 5. Répertoire du certificat

Le répertoire dans lequel le certificat sera créé ou dont le renouvellement sera tenté.

*Exemple : \~/certs/*

#### 8. Seuil de renouvellement

Le nombre de jours avant l'expiration auquel le certificat devra se trouver pour que le script commence le processus de renouvellement.

*Exemple : 30*

### *Paramètres supplémentaires pour les certificats de serveur :*

#### 9. ID client du Service Principal

L’ID d’application (client) de l’inscription d’application que nous voulons authentifier.

#### 10. Secret client du Service Principal

Le secret client créé de l’inscription d’application que nous voulons authentifier.

#### 11. ID du Tenant du Service Principal

L’ID du Tenant de notre inscription d’application.

#### 12. Sujet du certificat

Le sujet avec lequel vous souhaitez inscrire le certificat.

*Format : /CN=SubjectName,O=Organization*

#### 13. Extension du certificat

Cela sera ajouté comme nom alternatif du sujet

*Exemple : DNS:webserver.contoso.com*

### *Exemple d’utilisation pour la signature d’une CSR (commande -c)*

{% code overflow="wrap" %}

```bash
# Générer une clé privée
openssl genrsa -out myKey.rsa 4096

# Créer une CSR pour un certificat utilisateur pour l’authentification client
openssl req -new -key myKey.rsa -sha256 -out myCSR -subj "/CN=John Smith" -addext "subjectAltName=otherName:1.3.6.1.4.1.311.20.2.3;UTF8:john.smith@contoso.net" -addext "extendedKeyUsage=1.3.6.1.5.5.7.3.2"

./enrollrenewcertificate.sh -c https://scepman.contoso.net/ api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436 ~/certs "myCertificate" myKey.rsa 30 edbc406b-7384-414e-af8b-1a3b187b3f7e [Client_Secret] 736e80bb-3102-479b-83ba-e45c80ef723b myCSR

```

{% endcode %}

#### Considérations

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

## Mettre en place le renouvellement automatique

Lorsque le script bash ci-dessus est exécuté et détecte qu'un certificat a déjà été inscrit, il renouvellera le certificat (s'il est proche de l'expiration) à l'aide de mTLS. Si le script est exécuté régulièrement, cela garantira que le certificat est renouvelé lorsqu'il approche de son expiration. Vous pouvez configurer une tâche cron pour y parvenir. La commande ci-dessous est un exemple de la manière dont cela peut être fait. Elle configurera une tâche cron pour exécuter la commande quotidiennement (si le système est sous tension) et une tâche cron pour l'exécuter au redémarrage.

{% code overflow="wrap" %}

```
(crontab -l ; echo @daily /path/to/enrollrenewcertificate.sh -s https://scepman.contoso.net/ api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436 /path/to/certs "myCertificate" "myKeyName" 30 edbc406b-7384-414e-af8b-1a3b187b3f7e [Client_Secret] 736e80bb-3102-479b-83ba-e45c80ef723b "/CN=SubjectName,O=Organization" "DNS:webserver.contoso.com" ; echo @reboot /path/to/enrollrenewcertificate.sh -s https://scepman.contoso.net/ api://a7a1d6c8-51b9-48ec-9ca0-a363dc2c8436 /path/to/certs "myCertificate" "myKeyName" 30 edbc406b-7384-414e-af8b-1a3b187b3f7e [Client_Secret] 736e80bb-3102-479b-83ba-e45c80ef723b "/CN=SubjectName,O=Organization" "DNS:webserver.contoso.com") | crontab -
```

{% endcode %}

Comme les commandes exécutées par Cron ne seront pas nécessairement lancées depuis le répertoire où se trouvent le script/les certificats, il est important de fournir les chemins absolus vers le script/les certificats.


---

# 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/fr/gestion-des-certificats/api-certificates/api-enrollment/linux-server.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.
