> 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/scepmanclient.md).

# SCEPmanClient

SCEPmanClient est un module PowerShell conçu pour interagir avec l’API REST de SCEPman. Indépendant de la plateforme et compatible avec Windows PowerShell v5, vous pouvez utiliser ce module pour demander des certificats pour tous les cas d’usage pour lesquels l’API REST peut être utilisée :

* Émission automatique de certificats serveur
* Certificats client pour des appareils non gérés
* Inscription de certificats sur des appareils Linux

## Installation

Le module SCEPmanClient est disponible dans la PowerShell Gallery et peut être installé à l’aide de la commande suivante :

```powershell
Install-Module -Name SCEPmanClient
```

{% hint style="info" %}
Suivez le guide de Microsoft pour installer PowerShell sur [Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.5) ou [MacOS](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.5).
{% endhint %}

## Prérequis

Pour que le module fonctionne comme prévu, vous devrez apporter une petite modification à votre déploiement SCEPman :

{% stepper %}
{% step %}

### Ajouter l’URL de la page d’accueil

Ajoutez l’URL App Service de SCEPman : accédez à la `Branding et propriétés` section de l’inscription d’application. Ajoutez l’URL App Service de SCEPman au champ URL de la page d’accueil :

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FpvtsVJmycjyIgaQh2sHd%2Fimage.png?alt=media&amp;token=9b9a7a21-4516-4718-9e32-346b39f9775a" alt=""><figcaption></figcaption></figure>

Ceci est nécessaire pour que le module puisse rechercher automatiquement l’ID client de l’inscription d’application, qui est requis pour la récupération du jeton d’accès.
{% endstep %}

{% step %}

### Autoriser Azure PowerShell à interagir avec l’inscription d’application

Dans l’inscription d’application, accédez à *Exposer une API* et créez une étendue personnalisée qui peut être utilisée pour autoriser l’ID client `1950a258-227b-4e31-a9cf-717495945fc2` (Microsoft Azure PowerShell)

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F46u0uC5d4K6YAQ3zh7YO%2Fimage.png?alt=media&amp;token=82a318d0-5b3c-442a-887d-a064ff5e19be" alt=""><figcaption><p>Exemple d’informations pour une étendue d’API personnalisée</p></figcaption></figure>

Après avoir créé une étendue d’API, l’application Azure PowerShell peut être autorisée :

<figure><img src="https://129332256-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fp3C0zdof95GBMKox19RZ%2Fimage.png?alt=media&amp;token=bc916c87-9233-4f11-82b1-33307e241e08" alt=""><figcaption><p>Application Microsoft Azure PowerShell autorisée</p></figcaption></figure>
{% endstep %}

{% step %}

### Activer le point de terminaison EST

#### 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***
{% endstep %}
{% endstepper %}

## Autorisations

SCEPman dispose de différents rôles qui permettront d’inscrire différents types de certificats. Vous pouvez les attribuer dans la *SCEPman-api* (nom par défaut) application d’entreprise :

#### CSR DB Requesters

Ce rôle n’est attribuable par défaut qu’aux Service Principals (par exemple les inscriptions d’application) et permet de demander des certificats avec des sujets et des usages arbitraires.

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

#### CSR Self Service

Ce rôle peut être attribué aux utilisateurs et permettra d’inscrire des certificats avec les restrictions suivantes :

* Uniquement l’EKU ClientAuth
* Les certificats utilisateur doivent correspondre à l’UPN de l’utilisateur, soit dans le sujet, soit dans le nom alternatif du sujet UPN
* Les certificats d’appareil doivent avoir un sujet ou un SAN que SCEPman peut associer à un objet d’appareil appartenant à l’utilisateur authentifié

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

## Exemples d’utilisation

### Utiliser l’authentification Azure

#### Authentification interactive

Lors de la demande d’un nouveau certificat sans spécifier le mécanisme d’authentification, l’utilisateur sera authentifié de manière interactive par défaut. En utilisant le `-SubjectFromUserContext` paramètre, le sujet du certificat et le SAN UPN seront renseignés automatiquement en fonction du contexte de l’utilisateur connecté :

```powershell
New-SCEPmanCertificate -Url 'scepman.contoso.com' -SubjectFromUserContext -SaveToStore CurrentUser
```

#### Connexion par appareil

Si vous souhaitez demander un nouveau certificat sur un système sans environnement de bureau, vous pouvez utiliser le `-DeviceCode` paramètre pour effectuer l’authentification proprement dite dans une autre session :

```powershell
New-SCEPmanCertificate -Url 'scepman.contoso.com' -DeviceCode -SubjectFromUserContext -SaveToFolder /home/user/certificates
```

#### Authentification par Service Principal

Dans des scénarios entièrement automatisés, une inscription d’application peut être utilisée pour l’authentification. Dans ce cas, il ne sera pas possible de déduire le sujet à partir du contexte authentifié.

La décomposition des paramètres rendra également l’exécution plus lisible :

```powershell
$Parameters = @{
    'Url'              = 'scepman.contoso.com'
    'ClientId'         = '569fbf51-aa63-4b5c-8b26-ebbcfcde2715'
    'TenantId'         = '8aa3123d-e76c-42e2-ba3c-190cabbec531'
    'ClientSecret'     = 'csa8Q~aVaWCLZTzswIBGvhxUiEvhptuqEyJugb70'
    'Subject'          = 'CN=WebServer'
    'DNSName'          = 'Webserver.domain.local'
    'ExtendedKeyUsage' = 'ServerAuth'
    'SaveToStore'      = 'LocalMachine'
}

New-SCEPmanCertificate @Parameters
```

### S’authentifier à l’aide de certificats

Une fois qu’un certificat a été émis à l’aide d’un contexte authentifié, nous pouvons l’utiliser pour le renouveler sans fournir à nouveau de contexte.

#### CertificateBySubject

*L’interaction avec les keystores n’est possible que sur Windows*

Lorsque vous fournissez le `CertificateBySubject` paramètre, le module essaiera automatiquement de trouver un certificat approprié pour le renouvellement dans les *CurrentUser* et *LocalMachine* magasins de certificats.

La valeur saisie sera comparée par expression régulière aux sujets de tous les certificats disponibles.

```powershell
New-SCEPmanCertificate -CertificateBySubject 'WebServer' -SaveToStore 'LocalMachine'
```

#### Fournir un certificat spécifique

```powershell
$Certificate = Get-ChildItem Cert:\LocalMachine\My | Where-Object Thumbprint -eq '9B08EA68B16773CEF3C49D5D95BE50B784638984'

New-SCEPmanCertificate -Certificate $Certificate -SaveToStore LocalMachine
```

#### CertificateFromFile

Sur les systèmes Linux, le renouvellement d’un certificat peut être effectué en indiquant les chemins d’accès d’un certificat existant et de sa clé privée.

```powershell
New-SCEPmanCertificate -CertificateFromFile '~/certs/myCert.pem' -KeyFromFile '~/certs/myKey.key' -SaveToFolder '~/certs'
```

Lorsque vous utilisez une clé privée chiffrée, vous serez invité à saisir le mot de passe. Vous pouvez également transmettre directement le mot de passe de la clé à l’aide du `PlainTextPassword` paramètre.

#### Utiliser SCEPman avec un pare-feu d’applications Web Azure

Avec les profils SSL activés, le WAF mettra fin aux connexions TLS. Cela rompra en retour les renouvellements de certificats utilisant EST, car la procédure repose sur mTLS pour l’authentification. Dans ce cas, le `UseSCEPRenewal` paramètre peut être utilisé pour effectuer à la place un renouvellement de certificat conforme au protocole SCEP.

```powershell
New-SCEPmanCertificate -CertificateBySubject 'WebServer' -SaveToStore 'LocalMachine' -UseSCEPRenewal
```

Veuillez noter que cela nécessite une configuration supplémentaire de SCEPman concernant le point de terminaison SCEP statique :

* AppConfig:StaticValidation:Enabled : true
* AppConfig:StaticValidation:AllowRenewals : true
* AppConfig:StaticValidation:ReenrollmentAllowedCertificateTypes: Static (selon les types destinés au renouvellement)


---

# 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/scepmanclient.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.
