Creación de un certificado público autofirmado para autenticar la aplicación

Microsoft Entra ID admite dos tipos de autenticación disponibles para las entidades de servicio: autenticación basada en contraseña (secreto de aplicación) y autenticación basada en certificados. Aunque los secretos de la aplicación se pueden crear fácilmente en Azure Portal o mediante una API de Microsoft como Microsoft Graph, estos son de larga duración y no tan seguros como los certificados. Por lo tanto, se recomienda que la aplicación use un certificado en lugar de un secreto.

Para las pruebas, puede usar un certificado público autofirmado en lugar de un certificado firmado por la entidad de certificación (CA). En este tutorial, usará PowerShell para crear y exportar un certificado autofirmado.

Precaución

Los certificados autofirmados son certificados digitales que no están firmados por una entidad de certificación de terceros de confianza. Los certificados autofirmados son creados, emitidos y firmados por la empresa o el desarrollador responsable del sitio web o el software que se firma. Este es el motivo por el que los certificados autofirmados se consideran no seguros para las aplicaciones y sitios web orientados al público.

Al crear el certificado mediante PowerShell, puede especificar parámetros como algoritmos criptográficos y de hash, un período de validez del certificado y el nombre de dominio. A continuación, puede exportar el certificado con o sin su clave privada en función de las necesidades de la aplicación.

La aplicación que inicia la sesión de autenticación requiere la clave privada, mientras que la aplicación que confirma la autenticación requiere la clave pública. Por lo tanto, si va a autenticarse desde la aplicación de escritorio de PowerShell en Microsoft Entra ID, solo exportará la clave pública (archivo .cer) y la cargará en Azure Portal. La aplicación de PowerShell usa la clave privada del almacén de certificados local para iniciar la autenticación y obtener tokens de acceso para llamar a API de Microsoft como Microsoft Graph.

Es posible que la aplicación también se esté ejecutando desde otra máquina, como Azure Automation. En este escenario, exportará el par de claves pública y privada desde el almacén de certificados local, cargará la clave pública en Azure Portal y la clave privada (un archivo .pfx) en Azure Automation. La aplicación que se ejecuta en Azure Automation usará la clave privada para iniciar la autenticación y obtener tokens de acceso para llamar a API de Microsoft como Microsoft Graph.

En este artículo se usa el cmdlet New-SelfSignedCertificate de PowerShell para crear el certificado autofirmado y el cmdlet Export-Certificate para exportarlo a una ubicación fácilmente accesible. Estos cmdlets están integrados en versiones modernas de Windows (Windows 8.1 y versiones posteriores, y Windows Server 2012R2 y versiones posteriores). El certificado autofirmado tendrá la siguiente configuración:

  • Una longitud de clave de 2048 bits. Aunque se admiten valores más largos, se recomienda encarecidamente el tamaño de 2048 bits para obtener la mejor combinación de seguridad y rendimiento.
  • Usa el algoritmo criptográfico de RSA. Microsoft Entra ID. solo admite RSA actualmente.
  • El certificado se firma con el algoritmo hash SHA256. Microsoft Entra ID también admite certificados firmados con algoritmos hash SHA384 y SHA512.
  • El certificado solo es válido durante un año.
  • El certificado se admite para su uso para la autenticación de cliente y servidor.

Para personalizar la fecha de inicio y expiración y otras propiedades del certificado, consulte New-SelfSignedCertificate.

Creación y exportación del certificado público

Use el certificado que cree con este método para autenticarse desde una aplicación que se ejecuta desde la máquina. Por ejemplo, para autenticarse desde PowerShell.

En un símbolo del sistema de PowerShell con privilegios elevados, ejecute el siguiente comando y deje abierta la sesión de la consola de PowerShell. Reemplace {certificateName} por el nombre que desee dar al certificado.

$certname = "{certificateName}"    ## Replace {certificateName}
$cert = New-SelfSignedCertificate -Subject "CN=$certname" -CertStoreLocation "Cert:\CurrentUser\My" -KeyExportPolicy Exportable -KeySpec Signature -KeyLength 2048 -KeyAlgorithm RSA -HashAlgorithm SHA256

La variable $cert del comando anterior almacena el certificado en la sesión actual y le permite exportarlo.

El comando siguiente exporta el certificado en formato .cer. También puede exportarlo en otros formatos admitidos en Azure Portal incluidos .pem y .crt.


Export-Certificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.cer"   ## Specify your preferred location

El certificado ya está listo para cargarse en Azure Portal. Una vez cargado, recupere la huella digital del certificado para usarla para autenticar la aplicación.

(Opcional): Exporte el certificado público con su clave privada.

Si la aplicación se ejecuta desde otra máquina o nube, como Azure Automation, también necesitará una clave privada.

Siguiendo con los comandos anteriores, cree una contraseña para la clave privada de su certificado y guárdela en una variable. Reemplace {myPassword} por la contraseña que quiera usar para proteger la clave privada del certificado.


$mypwd = ConvertTo-SecureString -String "{myPassword}" -Force -AsPlainText  ## Replace {myPassword}

A continuación, con la contraseña que ha almacenado en la variable $mypwd, proteja y exporte la clave privada mediante el comando:


Export-PfxCertificate -Cert $cert -FilePath "C:\Users\admin\Desktop\$certname.pfx" -Password $mypwd   ## Specify your preferred location

El certificado (archivo .cer) ya está listo para cargarse en Azure Portal. También tiene una clave privada (archivo .pfx) que está cifrada y que otras entidades no pueden leer. Una vez cargado, recupere la huella digital del certificado para usarla para autenticar la aplicación.

Tarea opcional: elimine el certificado del almacén de claves.

Puede eliminar el par de claves de su almacén personal ejecutando el siguiente comando para recuperar la huella digital del certificado.


Get-ChildItem -Path "Cert:\CurrentUser\My" | Where-Object {$_.Subject -Match "$certname"} | Select-Object Thumbprint, FriendlyName

A continuación, copie la huella digital que se muestra y úsela para eliminar el certificado y su clave privada.


Remove-Item -Path Cert:\CurrentUser\My\{pasteTheCertificateThumbprintHere} -DeleteKey

Conocer la fecha de expiración del certificado

El certificado autofirmado que creó siguiendo los pasos anteriores tiene una duración limitada antes de expirar. En la sección Registros de aplicaciones de Azure Portal, la pantalla Certificados y secretos muestra la fecha de expiración del certificado. Si usa Azure Automation, la pantalla Certificados de la cuenta de Automation muestra la fecha de expiración del certificado. Siga los pasos anteriores para crear un certificado autofirmado.

Pasos siguientes

Consulte Administración de certificados para el inicio de sesión único federado en Microsoft Entra ID