> 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/scepmanclient.md).

# SCEPmanClient

SCEPmanClient es un módulo de PowerShell destinado a interactuar con la API REST de SCEPman. Al ser independiente de la plataforma y compatible con Windows PowerShell v5, puedes usar este módulo para solicitar certificados para todos los casos de uso para los que se puede usar la API REST:

* Emisión automática de certificados de servidor
* Certificados de cliente para dispositivos no administrados
* Inscripción de certificados en dispositivos Linux

## Instalación

El módulo SCEPmanClient está disponible en la PowerShell Gallery y se puede instalar usando el siguiente comando:

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

{% hint style="info" %}
Sigue la guía de Microsoft sobre cómo instalar PowerShell en [Linux](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-linux?view=powershell-7.5) o [MacOS](https://learn.microsoft.com/en-us/powershell/scripting/install/installing-powershell-on-macos?view=powershell-7.5).
{% endhint %}

## Requisitos previos

Para que el módulo funcione como se espera, tendrás que añadir una pequeña modificación a tu implementación de SCEPman:

{% stepper %}
{% step %}

### Añadir URL de la página principal

Añade la URL del App Service de SCEPman: Navega a la `Marca y propiedades` sección del registro de aplicación. Agrega la URL del App Service de SCEPman al campo URL de la página principal:

<figure><img src="https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2FpvtsVJmycjyIgaQh2sHd%2Fimage.png?alt=media&amp;token=9b9a7a21-4516-4718-9e32-346b39f9775a" alt=""><figcaption></figcaption></figure>

Esto es necesario para que el módulo pueda buscar automáticamente el id de cliente del registro de aplicación que se necesita para obtener el token de acceso.
{% endstep %}

{% step %}

### Permitir que Azure PowerShell interactúe con el registro de aplicación

En el registro de aplicación, navega a *Exponer una API* y crea un ámbito personalizado que se pueda usar para autorizar el id de cliente `1950a258-227b-4e31-a9cf-717495945fc2` (Microsoft Azure PowerShell)

<figure><img src="https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2F46u0uC5d4K6YAQ3zh7YO%2Fimage.png?alt=media&amp;token=82a318d0-5b3c-442a-887d-a064ff5e19be" alt=""><figcaption><p>Información de ejemplo para un ámbito de API personalizado</p></figcaption></figure>

Después de crear un ámbito de API, se puede autorizar la aplicación Azure PowerShell:

<figure><img src="https://4115997120-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-LoGejQeUQcw7lqnQ3WX%2Fuploads%2Fp3C0zdof95GBMKox19RZ%2Fimage.png?alt=media&amp;token=bc916c87-9233-4f11-82b1-33307e241e08" alt=""><figcaption><p>Aplicación Microsoft Azure PowerShell autorizada</p></figcaption></figure>
{% endstep %}

{% step %}

### Habilitar el punto de conexión EST

#### 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***
{% endstep %}
{% endstepper %}

## Permisos

SCEPman tiene diferentes roles que permitirán inscribir distintos tipos de certificados. Puedes asignarlos en la *SCEPman-api* (nombre predeterminado) Aplicación empresarial:

#### CSR DB Requesters

Este rol solo se puede asignar de forma predeterminada a Service Principals (por ejemplo, registros de aplicaciones) y permite solicitar certificados con sujetos y usos arbitrarios.

{% content-ref url="/pages/b31d8f3786b22311eafcf73ce7738f65815607e8" %}
[Inscripción mediante API](/es/gestion-de-certificados/api-certificates/api-enrollment.md)
{% endcontent-ref %}

#### Autoservicio CSR

Este rol se puede asignar a usuarios y permitirá inscribir certificados con las siguientes restricciones:

* Solo EKU ClientAuth
* Los certificados de usuario deben coincidir con el UPN del usuario, ya sea en el sujeto o en el nombre alternativo de sujeto UPN
* Los certificados de dispositivo deben tener un sujeto o SAN que SCEPman pueda asignar a un objeto de dispositivo propiedad del usuario autenticado

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

## Ejemplos de uso

### Usar autenticación de Azure

#### Autenticación interactiva

Al solicitar un nuevo certificado sin especificar el mecanismo de autenticación, el usuario se autenticará de forma interactiva de manera predeterminada. Al usar el `-SubjectFromUserContext` parámetro, el sujeto del certificado y el SAN UPN se rellenarán automáticamente según el contexto del usuario que ha iniciado sesión:

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

#### Inicio de sesión del dispositivo

Si quieres solicitar un nuevo certificado en un sistema sin entorno de escritorio, puedes usar el `-DeviceCode` parámetro para realizar la autenticación real en otra sesión:

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

#### Autenticación de Service Principal

En escenarios totalmente automatizados, se puede usar un registro de aplicación para la autenticación. En este caso no será posible inferir el sujeto a partir del contexto autenticado.

El uso de splatting de parámetros también hará que la ejecución sea más legible:

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

### Autenticar usando certificados

Una vez que se haya emitido un certificado usando un contexto autenticado, podemos usarlo para renovarlo sin proporcionar de nuevo ningún contexto.

#### CertificateBySubject

*Interactuar con almacenes de claves solo es posible en Windows*

Al proporcionar el `CertificateBySubject` parámetro, el módulo intentará automáticamente encontrar un certificado adecuado para la renovación en los *CurrentUser* y *LocalMachine* almacenes de claves.

El valor introducido se comparará mediante una expresión regular con los sujetos de todos los certificados disponibles.

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

#### Proporcionar un certificado específico

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

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

#### CertificateFromFile

En sistemas Linux, se puede realizar una renovación de certificado pasando las rutas de un certificado existente y su clave privada.

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

Al usar una clave privada cifrada, se te pedirá la contraseña. También puedes pasar directamente la contraseña de la clave usando el `PlainTextPassword` parámetro.

#### Usar SCEPman con un Azure Web Application Firewall

Con los perfiles SSL habilitados, el WAF terminará las conexiones TLS. Esto, a su vez, romperá las renovaciones de certificados mediante EST, ya que el procedimiento depende de mTLS para la autenticación. En este caso, el `UseSCEPRenewal` parámetro se puede usar para realizar en su lugar una renovación de certificado que cumpla con el protocolo SCEP.

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

Ten en cuenta que esto requiere una configuración adicional de SCEPman con respecto al punto de conexión SCEP estático:

* AppConfig:StaticValidation:Enabled : true
* AppConfig:StaticValidation:AllowRenewals : true
* AppConfig:StaticValidation:ReenrollmentAllowedCertificateTypes: Static (Dependiendo de los tipos destinados a la renovación)


---

# 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/scepmanclient.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.
