# SCEPmanClient

SCEPmanClient ist ein PowerShell-Modul, das für die Interaktion mit der REST-API von SCEPman vorgesehen ist. Da es plattformunabhängig und kompatibel mit Windows PowerShell v5 ist, können Sie dieses Modul verwenden, um Zertifikate für alle Anwendungsfälle anzufordern, für die die REST-API verwendet werden kann:

* Automatische Ausstellung von Serverzertifikaten
* Clientzertifikate für nicht verwaltete Geräte
* Bereitstellung von Zertifikaten für Linux-Geräte

## Installation

Das SCEPmanClient-Modul ist im PowerShell Gallery verfügbar und kann mit dem folgenden Befehl installiert werden:

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

{% hint style="info" %}
Befolgen Sie Microsofts Anleitung zur Installation von PowerShell auf [Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.5) oder [MacOS](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.5).
{% endhint %}

## Voraussetzungen

Damit das Modul wie erwartet funktioniert, müssen Sie an Ihrer SCEPman-Bereitstellung eine kleine Änderung vornehmen:

{% stepper %}
{% step %}

### Homepage-URL hinzufügen

Fügen Sie die App Service-URL von SCEPman hinzu: Navigieren Sie zum `Branding & Properties` Abschnitt der App-Registrierung. Fügen Sie die App Service-URL von SCEPman dem Feld Homepage-URL hinzu:

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

Dies ist erforderlich, damit das Modul automatisch die Client-ID der App-Registrierung nachschlagen kann, die für das Abrufen des Zugriffstokens benötigt wird.
{% endstep %}

{% step %}

### Azure PowerShell die Interaktion mit der App-Registrierung erlauben

Navigieren Sie in der App-Registrierung zu *Eine API bereitstellen* und erstellen Sie einen benutzerdefinierten Scope, der verwendet werden kann, um die Client-ID zu autorisieren `1950a258-227b-4e31-a9cf-717495945fc2` (Microsoft Azure PowerShell)

<figure><img src="/files/9f0ea8e4872d1d03ad833519846ca382639fdf9b" alt=""><figcaption><p>Beispielinformationen für einen benutzerdefinierten API-Scope</p></figcaption></figure>

Nach dem Erstellen eines API-Scopes kann die Azure PowerShell-Anwendung autorisiert werden:

<figure><img src="/files/ca30dcdbe8a84088f125a05d8d7c130e33b2fa6d" alt=""><figcaption><p>Autorisierte Microsoft Azure PowerShell-Anwendung</p></figcaption></figure>
{% endstep %}

{% step %}

### EST-Endpunkt aktivieren

{% endstep %}
{% endstepper %}

## Berechtigungen

SCEPman hat verschiedene Rollen, die das Ausstellen unterschiedlicher Zertifikatstypen ermöglichen. Diese können Sie im *SCEPman-api* (Standardname) Enterprise Application:

#### CSR DB Requesters

Diese Rolle kann standardmäßig nur Service Principals (zum Beispiel App-Registrierungen) zugewiesen werden und erlaubt das Anfordern von Zertifikaten mit beliebigen Subjects und Verwendungszwecken.

{% content-ref url="/pages/c6e9b6e18fdecafb14aaae14587abd1f7a62b135" %}
[API-Registrierung](/de/zertifikatsverwaltung/api-certificates/api-enrollment.md)
{% endcontent-ref %}

#### CSR Self Service

Diese Rolle kann Benutzern zugewiesen werden und erlaubt das Ausstellen von Zertifikaten mit den folgenden Einschränkungen:

* Nur ClientAuth EKU
* Benutzerzertifikate müssen mit der UPN des Benutzers übereinstimmen, entweder im Subject oder im UPN-Subject-Alternative-Name
* Gerätezertifikate müssen ein Subject oder SAN haben, das SCEPman einem Geräteobjekt zuordnen kann, das dem authentifizierten Benutzer gehört

{% content-ref url="/pages/da7b8437e46f95216cec58f2994820fff20618fc" %}
[Self-Service-Registrierung](/de/zertifikatsverwaltung/api-certificates/self-service-enrollment.md)
{% endcontent-ref %}

## Anwendungsbeispiele

### Azure-Authentifizierung verwenden

#### Interaktive Authentifizierung

Wenn ein neues Zertifikat angefordert wird, ohne den Authentifizierungsmechanismus anzugeben, wird der Benutzer standardmäßig interaktiv authentifiziert. Mit dem `-SubjectFromUserContext` Parameter werden das Subject und der UPN-SAN des Zertifikats automatisch anhand des Kontexts des angemeldeten Benutzers ausgefüllt:

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

#### Geräteanmeldung

Wenn Sie auf einem System ohne Desktopumgebung ein neues Zertifikat anfordern möchten, können Sie den `-DeviceCode` Parameter verwenden, um die eigentliche Authentifizierung in einer anderen Sitzung durchzuführen:

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

#### Authentifizierung mit Service Principal

In vollständig automatisierten Szenarien kann eine App-Registrierung zur Authentifizierung verwendet werden. Das Ableiten des Subjects aus dem authentifizierten Kontext ist in diesem Fall nicht möglich.

Parameter-Splatting macht die Ausführung außerdem lesbarer:

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

### Mit Zertifikaten authentifizieren

Sobald ein Zertifikat mithilfe eines authentifizierten Kontexts ausgestellt wurde, können wir es erneuern, ohne erneut einen Kontext anzugeben.

#### CertificateBySubject

*Die Interaktion mit Keystores ist nur unter Windows möglich*

Wenn Sie den `CertificateBySubject` Parameter angeben, versucht das Modul automatisch, ein geeignetes Zertifikat für die Erneuerung in den *CurrentUser* und *LocalMachine* Keystores zu finden.

Der eingegebene Wert wird per Regex mit den Subjects in allen verfügbaren Zertifikaten abgeglichen.

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

#### Ein bestimmtes Zertifikat angeben

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

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

#### CertificateFromFile

Auf Linux-Systemen kann eine Zertifikatserneuerung durchgeführt werden, indem die Pfade eines vorhandenen Zertifikats und seines privaten Schlüssels übergeben werden.

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

Wenn Sie einen verschlüsselten privaten Schlüssel verwenden, werden Sie nach dem Passwort gefragt. Sie können das Kennwort des Schlüssels auch direkt mit dem `PlainTextPassword` Parameter übergeben.

#### SCEPman mit einer Azure Web Application Firewall verwenden

Wenn SSL-Profile aktiviert sind, beendet die WAF die TLS-Verbindungen. Dadurch werden wiederum Zertifikatserneuerungen mit EST unterbrochen, da das Verfahren mTLS zur Authentifizierung verwendet. In diesem Fall kann der `UseSCEPRenewal` Parameter verwendet werden, um stattdessen eine Zertifikatserneuerung gemäß dem SCEP-Protokoll durchzuführen.

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

Bitte beachten Sie, dass dies zusätzliche SCEPman-Konfigurationen bezüglich des statischen SCEP-Endpunkts erfordert:

* AppConfig:StaticValidation:Enabled : true
* AppConfig:StaticValidation:AllowRenewals : true
* AppConfig:StaticValidation:ReenrollmentAllowedCertificateTypes: Static (Abhängig von den für die Erneuerung vorgesehenen Typen)


---

# Agent Instructions: 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:

```
GET https://docs.scepman.com/de/zertifikatsverwaltung/api-certificates/scepmanclient.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
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.
