# Cliente Linux no gestionado

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

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

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

## Prerequisitos

### 1. Inscripción de autoservicio

### 2. Configuración del App Service

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

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 además evita el requisito de usar un principal de servicio 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 se puede usar para recibir 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**

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:

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

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

**-r** para renovación

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

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

{% hint style="warning" %}
Si está inscribiendo o renovando un certificado de dispositivo, se intentará leer el DeviceId desde *\~/.config/intune/registration.toml* por defecto 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 del servicio de la aplicación

La URL del servicio de la aplicación SCEPman.

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

#### 3. API\_SCOPE

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

Al usuario se le mostrará el cuadro de diálogo de consentimiento deseado y podrá después 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&#x26;token=5173dc4b-8981-40e9-8875-e932078c6667" alt=""><figcaption></figcaption></figure>

#### 4. Directorio de certificados

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

*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 para que el certificado deba expirar para que el script comience el proceso de renovación.

*Ejemplo: 30*

### Consideraciones

* Este script no cifra las claves generadas (esto requiere la entrada de 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 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 ya se ha inscrito un certificado, renovará el certificado (si está cerca de su caducidad) usando mTLS. Si el script se ejecuta regularmente, esto garantizará que el certificado se renueve cuando se acerque su caducidad. Puede configurar un cronjob para lograr esto. El comando siguiente 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 están el script/los certificados, es importante proporcionar las rutas absolutas al script/los certificados.&#x20;
