> 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/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, puede 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 con el siguiente comando:

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

{% hint style="info" %}
Siga 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, deberá añadir una pequeña modificación a su implementación de SCEPman:

{% stepper %}
{% step %}

### Agregar la URL de la página principal

Agregue la URL del App Service de SCEPman: vaya a la `Branding & Properties` sección del registro de la aplicación. Agregue 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 identificador de cliente del registro de la aplicación que se necesita para obtener el token de acceso.
{% endstep %}

{% step %}

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

En el registro de la aplicación, vaya a *Exponer una API* y cree un ámbito personalizado que se pueda usar para autorizar el identificador 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 extremo EST

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

## Permisos

SCEPman tiene distintos roles que permitirán inscribir distintos tipos de certificados. Puede 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 aplicación) y permite solicitar certificados con sujetos y usos arbitrarios.

{% content-ref url="/pages/b31d8f3786b22311eafcf73ce7738f65815607e8" %}
[Inscripción por API](/es/administracion-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 del 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/administracion-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. Mediante 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 desea solicitar un nuevo certificado en un sistema sin entorno de escritorio, puede usar el `-DeviceCode` parámetro para realizar la autenticación propiamente dicha 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.

También el uso de splatting de parámetros hará la ejecución 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 ha 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 regex con los sujetos de todos los certificados disponibles.

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

#### Proporcione 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 la renovación de un 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 le pedirá la contraseña. También puede pasar directamente la contraseña de la clave usando el `PlainTextPassword` parámetro.

#### Uso de SCEPman con 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 puede usarse para realizar en su lugar una renovación de certificado conforme al protocolo SCEP.

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

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

* AppConfig:StaticValidation:Enabled : true
* AppConfig:StaticValidation:AllowRenewals : true
* AppConfig:StaticValidation:ReenrollmentAllowedCertificateTypes: Static (según 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 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/scepmanclient.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.
