> 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/de/zertifikatsverwaltung/api-certificates/self-service-enrollment/unmanaged-linux-client.md).

# Nicht verwalteter Linux-Client

{% hint style="info" %}
Gilt für SCEPman Version 2.9 und höher
{% endhint %}

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

Diese Methode kann verwendet werden, um Zertifikate für Benutzer und Geräte zu registrieren, die nicht verwaltet werden oder von einem anderen MDM als Intune verwaltet werden.

## Voraussetzungen

### 1. Self-Service-Registrierung

Um Zertifikate zu registrieren, müssen Benutzer authentifiziert sein, um ihre Berechtigung zu überprüfen. Folgen Sie dieser Anleitung für Schritt-für-Schritt-Anweisungen, wie Sie dies einrichten.

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

### 2. App Service-Einstellungen

#### Konfiguration

*Erforderlich für die Zertifikatserneuerung*

Konfigurieren Sie Ihren SCEPman App Service so, dass er mTLS-Clientzertifikate akzeptiert. Überprüfen Sie im Konfigurationsbereich des Abschnitts Einstellungen, dass der Clientzertifikatmodus unter Eingehende Clientzertifikate auf ***Optionaler interaktiver Benutzer***.

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

Setzen Sie den Clientzertifikatmodus nicht auf Erforderlich oder Zulassen, da dies den normalen Betrieb von SCEPman an den SCEP-Endpunkten beeinträchtigen würde!

#### Umgebungsvariablen

Um dieses Szenario nutzen zu können, müssen Sie die folgenden Umgebungsvariablen für den SCEPman App Service festlegen.

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

*Erforderlich für die Zertifikatsregistrierung und -erneuerung*

Setzen Sie diese Variable auf ***true*** um die Validierung von Zertifikatsignierungsanforderungen (CSRs) zu aktivieren.

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

*Erforderlich für die Zertifikatserneuerung*

Setzen Sie diese Variable auf ***true*** um Zertifikatserneuerungen zu aktivieren.

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

*Erforderlich für die Zertifikatserneuerung*

Setzen Sie diese Variable auf eine kommagetrennte Liste von Zertifikattypen, für die Sie die Erneuerung zulassen möchten. Eine Liste möglicher Zertifikattypen finden Sie in der verlinkten Variablendokumentation.

Beispiel: ***Static,IntuneUser,IntuneDevice***

Dieses Szenario registriert Zertifikate des Typs ***IntuneUser.***

## PowerShell-Modul SCEPmanClient

### Erste Anfragen

Sie können das PowerShell-Modul SCEPmanClient verwenden, um Zertifikate auf Ihrem Linux-Gerät anzufordern:

```powershell
New-SCEPmanCertificate -Url 'scepman.contoso.com' -SubjectFromUserContext -SaveToFolder '~/certs/'
```

Der Benutzer muss sich dann interaktiv in einer Browsersitzung anmelden, und für sein angemeldetes Konto wird ein Zertifikat erstellt.

### Zertifikatserneuerung

Sie können das PowerShell-Modul auch verwenden, um bereits vorhandene Zertifikate zu erneuern. Dadurch entfällt außerdem die Notwendigkeit, für die Authentifizierung einen Dienstprinzipal zu verwenden:

```powershell
$Parameters = @{
    'CertificateFromFile' = '~/certs/john.doe@contoso.com.pem'
    'KeyFromFile'         = '~/certs/john.doe@contoso.com.key'
    'SaveToFolder'        = '~/certs/'
}

New-SCEPmanCertificate @Parameters
```

## Registrierungs- und Erneuerungsskript

Wenn das PowerShell-Modul für Sie keine Option ist, kann das [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) Skript verwendet werden, um zunächst ein Zertifikat zu beziehen sowie es zu überprüfen und im Falle eines baldigen Ablaufs eine Erneuerung zu versuchen.

### **Client-Voraussetzungen**

Die folgenden Voraussetzungen müssen auf dem ausführenden Client/Host vorhanden sein, um die Enrollment REST API verwenden zu können.

#### [**Azure CLI**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) **(Version 2.61 und höher)**

Die Azure CLI wird verwendet, um den authentifizierenden Benutzer zu verifizieren, seine Berechtigung zu prüfen und das Zugriffstoken abzurufen.

#### cURL

Wird verwendet, um das erstellte CSR an den SCEPman Enrollment API-Endpunkt zu senden und das Zertifikat zu empfangen.

#### OpenSSL

OpenSSL wird verwendet, um einen privaten Schlüssel zu erzeugen und ein CSR für die Ausstellung oder Erneuerung eines Zertifikats zu erstellen.

Beispiel:

{% code overflow="wrap" %}

```bash
./enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll ~/certs/ "myCertificate" "myKey" 30
```

{% endcode %}

#### 1. Befehl

Definiert das Verhalten des Skripts

Kann eines der folgenden sein:

**-u** für Benutzerzertifikat mit automatischer Erkennung, ob es sich um eine Erstregistrierung oder Erneuerung handelt

**-d** für Gerätezertifikat mit automatischer Erkennung, ob es sich um eine Erstregistrierung oder Erneuerung handelt

**-r** für Erneuerung

**-w** für die Erstregistrierung eines Benutzers

**-x** für die Erstregistrierung eines Geräts

{% hint style="warning" %}
Wenn Sie ein Gerätezertifikat registrieren oder erneuern, wird versucht, die DeviceId aus *\~/.config/intune/registration.toml* standardmäßig zu lesen, und der authentifizierte Benutzer muss dem Besitzer des Objekts in der konfigurierten [DeviceDirectory](https://docs.scepman.com/advanced-configuration/application-settings/intune-validation#appconfig-intunevalidation-devicedirectory)
{% endhint %}

#### 2. App Service-URL

Die URL des SCEPman-App-Services.

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

#### 3. API\_SCOPE

Dies ist der API-Bereich, den Sie in der ***SCEPman-api*** App-Registrierung in Ihrer Umgebung erstellen können.

Dem Benutzer wird Ihr gewünschter Zustimmungsdialog angezeigt, und anschließend kann er die Self-Service-Funktionalität verwenden.

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

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

#### 4. Zertifikatsverzeichnis

Das Verzeichnis, in dem das Zertifikat erstellt oder dessen Erneuerung versucht wird.

*Beispiel: \~/certs/*

#### 5. Zertifikatsdateiname

Der Dateiname (ohne Erweiterung) des Zertifikats, das erstellt oder zur Erneuerung gelesen wird.

*Beispiel: "myCertificate"*

#### 6. Dateiname des privaten Schlüssels

Der Dateiname des privaten Schlüssels, der erstellt oder zur Erneuerung gelesen wird.

*Beispiel: "myKey"*

#### 7. Erneuerungsschwellenwert

Die Anzahl der Tage, die das Zertifikat noch gültig sein muss, damit das Skript den Erneuerungsprozess startet.

*Beispiel: 30*

### Hinweise

* Dieses Skript verschlüsselt die erzeugten Schlüssel nicht (dafür ist eine Passphrase-Eingabe erforderlich, daher wurde auf Verschlüsselung verzichtet, um eine automatische Erneuerung zu ermöglichen.)
* Wenn Sie passphrasegeschützte Zertifikate aus Certificate Master erneuern, müssen Sie diese Passphrase eingeben, um sie zu erneuern.

## Automatische Erneuerung einrichten

Wenn das obige Bash-Skript ausgeführt wird und erkennt, dass ein Zertifikat bereits registriert wurde, wird es das Zertifikat (falls es kurz vor dem Ablauf steht) mithilfe von mTLS erneuern. Wenn das Skript regelmäßig ausgeführt wird, wird dadurch sichergestellt, dass das Zertifikat erneuert wird, wenn es sich dem Ablauf nähert. Sie können dazu einen Cronjob einrichten. Der folgende Befehl ist ein Beispiel dafür, wie dies erledigt werden könnte. Er richtet einen Cronjob ein, der den Befehl täglich ausführt (wenn das System eingeschaltet ist), und einen Cronjob, der den Befehl beim Neustart ausführt.

<pre data-overflow="wrap"><code><strong>(crontab -l ; echo @daily /path/to/enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll /home/user/certs/ "myCertificate" "myKeyName" 30 ; echo @reboot /path/to/enrollrenewcertificate.sh -u https://scepman.contoso.net/ api://b7d17d51-8b6d-45eb-b42b-3dae638cd5bc/Cert.Enroll /home/user/certs/ "myCertificate" "myKeyName" 30 ) | crontab -
</strong></code></pre>

Da Befehle, die von Cron ausgeführt werden, nicht unbedingt aus dem Verzeichnis ausgeführt werden, in dem sich das Skript/die Zertifikate befinden, ist es wichtig, die absoluten Pfade zum Skript/zu den Zertifikaten anzugeben.


---

# 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/de/zertifikatsverwaltung/api-certificates/self-service-enrollment/unmanaged-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.
