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

# Cliente Linux no administrado

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

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

Este método puede usarse para inscribir certificados para usuarios y dispositivos que no están administrados o que están administrados por un MDM distinto de Intune.

## 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 configurar esto.

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

### 2. Configuración de App Service

#### Configuración

*Requerido para la renovación de certificados*

Configura tu App Service de SCEPman para aceptar certificados de cliente mTLS. En el panel Configuration de la sección Settings, verifica que el modo de certificado de cliente en Incoming client certificates 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 establezcas el modo de certificado de cliente en Require o Allow, ya que eso rompería el funcionamiento normal de SCEPman en los endpoints SCEP.

#### Variables de entorno

Para poder hacer uso de este escenario, debes 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 la inscripción y renovación de certificados*

Establece 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 de certificados*

Establece 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 de certificados*

Establece esta variable en una lista de tipos de certificado separados por comas para permitir la renovación. Consulta la documentación enlazada de la variable para obtener una lista de posibles tipos de certificado.

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

Este escenario inscribirá certificados del tipo ***IntuneUser.***

## Módulo de PowerShell SCEPmanClient

### Solicitudes iniciales

Puede usar el módulo de PowerShell SCEPmanClient para solicitar certificados en su dispositivo Linux:

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

Después, el usuario deberá iniciar sesión de forma interactiva en una sesión del navegador y se creará un certificado para la cuenta con la que haya iniciado sesión.

### Renovación de certificados

También puede usar el módulo de PowerShell para renovar certificados ya existentes. Esto también evitará la necesidad de usar un Service Principal para la autenticación:

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

New-SCEPmanCertificate @Parameters
```

## Script de inscripción y renovación

Si el módulo de PowerShell no es una opción para usted, el [enrollrenewcertificate.sh](https://github.com/scepman/csr-request/blob/main/enroll-certificate/enrollrenewcertificate.sh) script puede usarse para obtener inicialmente un certificado, así como para verificarlo e intentar una renovación en caso de que esté a punto de expirar.

### **Requisitos previos del cliente**

Los siguientes requisitos previos deben estar presentes en el cliente/host 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 utiliza para autenticar al usuario que se inscribe para comprobar su elegibilidad y recuperar el token de acceso.

#### cURL

Se utiliza 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 utiliza para generar una clave privada y crear un CSR para inscribir o renovar un certificado.

Ejemplo:

{% 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. Comando

Define el comportamiento del script

Puede ser cualquiera de los siguientes:

**-u** para certificado de usuario con autodetección de si se trata de una inscripción inicial o una renovación

**-d** para certificado de dispositivo con autodetección de si se trata de una inscripción inicial o una renovación

**-r** para renovación

**-w** para la inscripción inicial de un usuario

**-x** para la inscripción inicial de un dispositivo

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

#### 2. URL de la App Service

La URL de la App Service de SCEPman.

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

#### 3. API\_SCOPE

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

Se le mostrará al usuario el cuadro de diálogo de consentimiento que usted desee 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>

#### 4. Directorio de certificados

El directorio en el que se creará el certificado o se intentará renovarlo.

*Ejemplo: \~/certs/*

#### 5. Nombre de archivo del certificado

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

*Ejemplo: "myCertificate"*

#### 6. Nombre de archivo de la clave privada

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

*Ejemplo: "myKey"*

#### 7. Umbral de renovación

La cantidad de días que deben faltar para que expire el certificado para que el script comience el proceso de renovación.

*Ejemplo: 30*

### 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 va a renovar certificados protegidos con frase de contraseña desde Certificate Master, deberá introducir esta frase de contraseña para poder renovarlos.

## Configurar la renovación automática

Cuando se ejecute el script bash anterior y detecte que un certificado ya se ha inscrito, renovará el certificado (si está cerca de expirar) usando mTLS. Si el script se ejecuta regularmente, esto garantizará que el certificado se renueve cuando esté cerca de expirar. Puede configurar un cronjob para lograrlo. El siguiente comando es un ejemplo de cómo podría hacerse. Configurará un cronjob para ejecutar el comando diariamente (si el sistema está encendido) y un cronjob para ejecutar el comando al reiniciar.

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

Dado que los comandos ejecutados por Cron no necesariamente se ejecutarán desde el directorio en el que se encuentran el script/los certificados, es importante proporcionar las rutas absolutas al script/a los certificados.


---

# 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/es/gestion-de-certificados/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.
