> 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/es/administracion-de-certificados/api-certificates/self-service-enrollment/intune-managed-linux-client.md).

# Cliente Linux administrado por Intune

{% hint style="info" %}
Aplicable a SCEPman versión 2.9 y posteriores
{% endhint %}

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

Este método puede utilizarse para inscribir certificados para usuarios y dispositivos administrados por Intune.

En este caso, Intune enviará un script para aprovechar la API REST de SCEPman, que a su vez inscribirá un nuevo certificado o renovará uno ya existente.

Nuestro desarrollador Christoph presentó esta característica y algunos detalles de contexto en el Workplace Ninja Usergroup Germany:

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

## Requisitos previos

### 1. Inscripción de autoservicio

Para inscribir certificados, los usuarios deben estar autenticados para verificar su elegibilidad. Siga esta guía para obtener instrucciones paso a paso sobre cómo configurarlo

{% content-ref url="/pages/31649805582853e94d36fcdf740fb0511d66a7d8" %}
[Inscripción de autoservicio](/es/administracion-de-certificados/api-certificates/self-service-enrollment.md)
{% endcontent-ref %}

### 2. Configuración de App Service

#### Configuración

*Requerido para la renovación del certificado*

Configure el servicio de aplicaciones de SCEPman para aceptar certificados de cliente mTLS. En la blade de Configuración de la sección de Ajustes, verifique que el modo de certificado de cliente en Certificados de cliente entrantes esté configurado en ***Usuario interactivo opcional***.

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

No establezca el modo de certificado de cliente en Requerir o Permitir, ya que eso rompería el funcionamiento normal de SCEPman en los puntos de conexión SCEP.

#### Variables de entorno

Para poder usar este escenario, debe establecer las siguientes Variables de entorno en el servicio de aplicaciones de SCEPman.

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

*Requerido para el registro y la renovación de certificados*

Establezca esta variable en ***true*** para habilitar la validación de las solicitudes de firma de certificados (CSR).

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

*Requerido para la renovación del certificado*

Establezca esta variable en ***true*** para habilitar las renovaciones de certificados.

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

*Requerido para la renovación del certificado*

Establezca esta variable en una lista separada por comas de tipos de certificado que desea permitir renovar. Consulte la documentación enlazada de la variable para obtener una lista de los tipos de certificado posibles.

Ejemplo: ***Static,IntuneUser,IntuneDevice***

Este escenario inscribirá certificados del tipo ***IntuneUser*** y ***IntuneDevice*** según su elección.

### **3. Requisitos del cliente**

Se deben cumplir los siguientes requisitos previos en el cliente/anfitrión de ejecución para poder usar la API REST de inscripción.

#### [**Azure CLI**](https://learn.microsoft.com/en-us/cli/azure/install-azure-cli) **(versión 2.61 y superior)**

La CLI de Azure se usa para autenticar al usuario que se inscribe, comprobar su elegibilidad y recuperar el token de acceso.

#### cURL

Se usa para enviar el CSR creado al punto de conexión de la API de inscripción de SCEPman y recibir el certificado.

#### OpenSSL

OpenSSL se usa para generar una clave privada y crear un CSR para inscribir o renovar un certificado.

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

Siga la documentación enlazada para inscribir su cliente Linux en Intune.

## Script de inscripción y renovación

El [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) El script se utilizará para obtener inicialmente un certificado, así como para comprobarlo periódicamente e intentar su renovación en caso de que se alcance el umbral.

Aunque normalmente el script se ejecuta pasando los parámetros en la terminal, necesitaremos modificar algunas partes para desplegarlo mediante Intune.

Localice la parte del script que asigna los argumentos de terminal pasados a la variable y ajústela a sus necesidades:

Configuración de ejemplo:

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

# Además, añada las siguientes variables
CERT_TYPE="user"
CERT_COMMAND="auto"
```

#### APPSERVICE\_URL

La URL del servicio de la aplicación SCEPman.

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

#### API\_SCOPE

Este es el ámbito de API que puede crear en el ***SCEPman-api*** registro de aplicación en su entorno.

Al usuario se le mostrará el diálogo de consentimiento deseado y después podrá usar la funcionalidad de autoservicio.

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

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

El directorio en el que se creará el certificado o se intentará renovarlo. La clave privada y el certificado raíz también se colocarán aquí.

*Ejemplo: \~/certs/*

#### CERT\_NAME

El nombre de archivo (sin extensión) del certificado que se creará o se leerá para su renovación.

*Ejemplo: "myCertificate"*

#### KEY\_NAME

El nombre de archivo de la clave privada que se creará o se leerá para su renovación.

*Ejemplo: "myKey"*

#### RENEWAL\_THRESHOLD\_DAYS

La cantidad de días que faltan para que el certificado expire para que el script inicie el proceso de renovación.

*Ejemplo: 30*

#### CERT\_TYPE

El tipo de certificado que se inscribirá.

*Puede ser "user" o "device"*

#### CERT\_COMMAND

Esto define el comportamiento del script con respecto a la inscripción y la renovación:

**"auto"** creará un certificado inicialmente o renovará un certificado si ya existe y está a punto de expirar.

**"renewal"** renovará un certificado si está a punto de expirar, pero no creará un certificado inicialmente.

**"initial"** solo inscribirá un certificado, pero no renovará uno existente.

{% hint style="warning" %}
Si está inscribiendo o renovando un certificado de dispositivo, el DeviceId se recuperará de *\~/.config/intune/registration.toml* y el usuario autenticado deberá coincidir con el propietario del objeto en el [DeviceDirectory configurado](https://docs.scepman.com/advanced-configuration/application-settings/intune-validation#appconfig-intunevalidation-devicedirectory).
{% endhint %}

### Consideraciones

* Este script no cifra las claves generadas (esto requiere introducir una frase de contraseña, por lo que se ha omitido el cifrado para permitir la renovación automática).
* Si está renovando certificados protegidos con frase de contraseña de Certificate Master, deberá introducir esta frase de contraseña para poder renovarlos.

## Desplegar script

Usando Intune, podemos desplegar el script modificado según una programación para inscribir inicialmente un certificado con los parámetros dados y comprobar regularmente si necesita renovarse.

Agregue una nueva implementación de script de Linux y asegúrese de establecer el ***contexto de ejecución*** a ***Usuario*** y cargue o pegue el contenido del script bash modificado que creó en la sección anterior.

Ajuste la ***frecuencia de ejecución*** de acuerdo con su umbral de renovación.

{% hint style="info" %}
Se pedirá al usuario que inicie sesión en la aplicación Azure CLI en la primera ejecución, ya que debe autenticarse.
{% 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/es/administracion-de-certificados/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.
