Cómo configurar Cloud PKI en Microsoft Intune paso a paso
Microsoft Cloud PKI es un enfoque moderno para la administración de certificados, que se realiza directamente desde el portal de administración de Microsoft Intune (o mediante programación con Graph API) sin ninguna infraestructura local compleja. Le permite crear autoridades de certificación raíz y emisoras desde la nube, que son privadas para usted. Los perfiles de configuración de dispositivos pueden luego implementar certificados automáticamente en los dispositivos de los usuarios finales para escenarios de autenticación como WiFi, VPN, firma de código y mucho más.
En esta publicación de blog, le mostraré cómo implementar la infraestructura PKI de Microsoft Cloud en Microsoft Intune utilizando el portal web y Microsoft Graph PowerShell para emitir certificados para dispositivos finales.
Requisitos previos
Antes de comenzar, asegúrese de cumplir con todos los requisitos previos para implementar Cloud PKI en su entorno mediante Microsoft Intune.
Licencias
Cloud PKI forma parte del paquete de licencias de Intune Suite. Como tal, debe asegurarse de que todos los usuarios que puedan beneficiarse de Microsoft Cloud PKI tengan asignada una licencia de Intune Suite.
Permisos
Para acceder a toda la funcionalidad necesaria para implementar la infraestructura PKI con Microsoft Intune, debe tener al menos el rol de Administrador de Intune si no utiliza roles personalizados.
Si utiliza Microsoft Graph PowerShell, se debe otorgar el siguiente permiso a su aplicación: DeviceManagementConfiguration.ReadWrite.All, esto le permitirá crear perfiles de configuración. En cuanto a los permisos para crear CA, la API Graph tiene errores actualmente y le permitirá crear CA sin ningún permiso asignado.
Beneficios de Cloud PKI
- Elimina en gran medida la complejidad de las implementaciones de PKI en general.
- Elimina la necesidad de implementaciones NDES complejas.
- Pasar de un modelo de gasto de capital a un modelo de gasto operativo.
- Ruta natural de actualización a la nube.
- Admite el perfil de certificado SCEP de Intune, que incluye Windows, IOS, iPadOS, Android y MacOS, pero no Linux.
- Se puede obtener a través de Intune Suite para obtener funciones adicionales o la única licencia complementaria de PKI.
- Los certificados de CA raíz e intermedio se pueden exportar para servicios de terceros.
- Las claves de CA están respaldadas por HSM.
- Cloud PKI está ubicado en la misma región geográfica que el inquilino de Intune con redundancia integrada.
- Los certificados emitidos se reemplazan automáticamente (no se renuevan directamente) a través del perfil de certificado SCEP.
- Los certificados emitidos se pueden revocar manualmente a través del portal.
Análisis de costos, ¿merece la pena?
Una de las principales dificultades para adoptar Intune Suite es el precio. Por £ 8,20 por un compromiso anual o £ 9,84 por un contrato mensual renovable, las soluciones de terceros, si bien no ofrecen la misma facilidad de uso y funcionalidad, tienden a ganar solo por el precio.
Dejando de lado por un momento las soluciones locales (debido a una evidente economía de escala y a los costes asumidos de hardware y mano de obra), el mejor competidor es SCEPman, que ofrece un precio fijo de producto de 1 euro por usuario al mes. para hasta 200 usuarios para sus servicios de CA en la nube. Luego se produce una evidente economía de escala: 3.625 usuarios cuestan un total reducido de 1.000 euros al mes.
Comparando esto con Cloud PKI, que crece indefinidamente al mismo ritmo, el precio es incomparable. En este momento, el producto viene incluido con la licencia Intune Suite, que tiene muchos otros beneficios y se vuelve atractiva si se adoptan todas las funciones. Suponiendo que el precio de Cloud PKI independiente (que no se ha lanzado) es de 2 dólares por usuario al mes. Inmediatamente, esto equivale a 400 dólares al mes para 200 usuarios y 7250 dólares al mes para 3625 usuarios (aproximadamente 6680 euros).
La única manera precisa de evaluar el valor financiero de Cloud PKI es realizar un ejercicio de costo total de propiedad en comparación con sus productos existentes y Intune Suite. Sin embargo, esto ya es difícil de vender para los nuevos clientes que han invertido completamente en el conjunto de productos de Microsoft. Herramientas como https://transform.microsoft.com/ pueden ayudarle en este viaje.
Creación de una nueva CA raíz
1. Inicie sesión en https://intune.microsoft.com.
2. Vaya a la página Administración de inquilinos y luego haga clic en Cloud PKI > Crear.
3. Defina un nombre para su CA raíz. Elegiré OurCloudNetworkRootCA y luego haré clic en Siguiente.
4. Configure el tipo de CA como CA raíz y luego defina un período de validez según sea necesario. Recomiendo elegir 10 años. Sin embargo, diferentes proveedores recomendaron diferentes períodos de validez.
Además, en Usos de claves extendidos, defina todos los usos que pueda necesitar en su CA emisora, ya que no puede volver a modificar estas propiedades.
5. Para los atributos del Asunto, es una buena práctica completarlos con precisión.
6. Por último, elija la opción de cifrado más alta para obtener la mejor protección en la Configuración de cifrado. Si bien en las implementaciones tradicionales, establecer un algoritmo superior puede tener importantes implicaciones de seguridad y capacidad, esto no es tanto una preocupación con Cloud PKI. Haga clic en Siguiente a través de las páginas finales y luego haga clic en Crear.
Creación de una nueva CA raíz con PowerShell
Puede implementar su CA raíz de Cloud PKI mediante Microsoft Graph PowerShell. El siguiente código implementará una CA raíz utilizando la configuración que definí anteriormente. Antes de implementar con PowerShell, debe modificar los nombres, algoritmos y usos de claves extendidos relevantes para satisfacer sus necesidades.
Connect-MgGraph -scope DeviceManagementConfiguration.ReadWrite.All
$body = @{
commonName = "Our Cloud Network RootCA"
displayName = "OurCloudNetworkRootCA"
cloudCertificationAuthorityType = "rootCertificationAuthority"
certificationAuthorityIssuerId = $null
validityPeriodInYears = 10
certificateKeySize = "rsa4096"
cloudCertificationAuthorityHashingAlgorithm = "sha512"
organizationName = "Our Cloud Network"
organizationUnit = "IT"
countryName = "UK"
stateName = "Kent"
localityName = "GB"
roleScopeTagIds = @(
"0"
)
extendedKeyUsages = @(
@{
name = "Server auth"
objectIdentifier = "1.3.6.1.5.5.7.3.1"
}
@{
name = "Client auth"
objectIdentifier = "1.3.6.1.5.5.7.3.2"
}
@{
name = "Code signing"
objectIdentifier = "1.3.6.1.5.5.7.3.3"
}
)
}
Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/cloudCertificationAuthority" `
-Body $body `
-ContentType "application/json"A continuación se muestra una lista de identificadores de objetos para los usos de claves extendidos admitidos en Cloud PKI.
Creación de una nueva CA emisora
Ahora que ha implementado su CA raíz, puede crear una nueva CA emisora. Siga los pasos a continuación para crear su CA emisora.
1. Vuelva a iniciar el asistente de nueva CA navegando a la página Administración de inquilinos y luego haciendo clic en Cloud PKI > Crear.
2. Defina el nombre de la CA emisora. He elegido OurCloudNetworkIssuingCA y hago clic en Siguiente.
3. Para el tipo de CA, seleccione CA emisora. Luego deberá elegir la CA raíz. Primero seleccione Intune para la fuente de CA raíz y seleccione su CA raíz de la lista. Seleccione también un Período de validez, como buena práctica, he seleccionado 2 años.
4. Seleccione los tipos de certificados que desea emitir en Usos de claves extendidos. He emparejado esto con mi CA raíz.
5. Complete todos los atributos del Asunto de manera similar a como lo hizo para la CA raíz, asegurándose de modificar el nombre común.
6. Por último, puede ver que la configuración de cifrado para la CA emisora se ha heredado de la CA raíz. Haga clic en Siguiente en las páginas finales y luego haga clic en Crear.
Creación de una nueva CA emisora con PowerShell
Al igual que nuestra CA raíz, puede crear su CA emisora utilizando Microsoft Graph PowerShell con el siguiente código. Nuevamente, asegúrese de modificar la configuración para que se ajuste a sus requisitos.
$body = @{
commonName = "Our Cloud Network Issuing CA"
displayName = "OurCloudNetworkIssuingCA"
cloudCertificationAuthorityType = "issuingCertificationAuthority"
certificationAuthorityIssuerId = "e95d737f-ab0d-401f-9b4b-aaf76bed80e5"
validityPeriodInYears = 2
certificateKeySize = "rsa4096"
cloudCertificationAuthorityHashingAlgorithm = "sha512"
organizationName = "Our Cloud Network"
organizationUnit = "IT"
countryName = "UK"
stateName = "Kent"
localityName = "GB"
roleScopeTagIds = @(
"0"
)
extendedKeyUsages = @(
@{
name = "Server auth"
objectIdentifier = "1.3.6.1.5.5.7.3.1"
}
@{
name = "Client auth"
objectIdentifier = "1.3.6.1.5.5.7.3.2"
}
@{
name = "Code signing"
objectIdentifier = "1.3.6.1.5.5.7.3.3"
}
)
}
Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/cloudCertificationAuthority" `
-Body $body `
-ContentType "application/json"Descargar e implementar los certificados de CA
Antes de comenzar a emitir certificados para dispositivos, debemos descargar los certificados raíz y de CA emisora y luego crear perfiles de configuración de dispositivos para implementarlos en nuestros dispositivos. Siga los títulos siguientes para completar la configuración.
El primer paso es descargar los certificados de CA, que deben cargarse en los almacenes de certificados intermedios y raíz de confianza de los dispositivos cliente. Para hacer esto, navegue hasta sus CA en el portal de administración de Intune, luego en la pestaña propiedades, haga clic en el botón Descargar y asegúrese de guardar los certificados en un lugar seguro.
Ahora siga los pasos a continuación para crear un perfil de configuración para implementar los certificados:
1. En el Centro de administración de Intune, navegue hasta Dispositivos > Configuración > Crear >Nueva política.
2. Seleccione Windows 10 y versiones posteriores > Plantillas, luego elija la plantilla Certificado de confianza de la lista y haga clic en Crear. .
3. Defina un nombre para la política y haga clic en Siguiente. (He elegido 'Implementar CA emisora')
4. Seleccione el certificado Intermedio que descargó y configure el Almacén de destino en Almacén de certificados de computadora - Intermedio, luego haga clic en Siguiente . .
5. En la pestaña Asignaciones, seleccione un grupo objetivo para la implementación. Recomiendo crear un grupo piloto para realizar pruebas. Creé un nuevo grupo llamado Dispositivos PKI en la nube, que incluye un puñado de dispositivos administrados.
6. Complete las páginas finales del asistente y haga clic en Crear.
7. Complete estos pasos nuevamente para el certificado CA raíz, pero esta vez para el almacén de destino, seleccione Almacén de certificados de computadora - Raíz.
Descargue e implemente los certificados de CA con PowerShell
Todo este paso se puede automatizar con la siguiente función de PowerShell. Simplemente modifique el nombre de la CA, ID de grupo y nombre de política al ejecutar la función, y automáticamente tomará el certificado base64 codificado, creará un nuevo perfil de configuración de dispositivo y lo asignará a su grupo.
Function DeployCloudPKICA (){
<#
.Author
Name: Daniel Bradley
LinkedIn: https://www.linkedin.com/in/danielbradley2/
Blog: https://ourcloudnetwork.com
.Example
DeployCloudPKICA -CA "OurCloudNetworkIssuingCA" -Groupid "5d91d8ee-a40c-45f0-be1d-d5684e636ce6" -PolicyName "Deploy Issuing CA"
#>
param(
$CA,
$Groupid,
$PolicyName
)
#Obtain CA information
$uri = "https://graph.microsoft.com/beta/deviceManagement/cloudCertificationAuthority?`$filter=displayname eq '$CA'"
$CAInfo = Invoke-MgGraphRequest -Method GET -Uri $uri
#Extract Base64 cert
[regex]$regex = '(?<=data:application/x-x509-ca-cert;base64,).*$'
$Cert = $regex.Matches($CAInfo.value.certificateDownloadUrl) | foreach-object {$_.Value}
#Create policy
Write-Output "creating policy for $($CAInfo.value.commonname)"
$body = @{
id = "00000000-0000-0000-0000-000000000000"
displayName = "$PolicyName"
roleScopeTagIds = @(
"0"
)
"@odata.type" = "#microsoft.graph.windows81TrustedRootCertificate"
destinationStore = "computerCertStoreIntermediate"
certFileName = "$($CAInfo.value.commonname).cer"
trustedRootCertificate = $Cert
}
$RootCAProfile = Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/deviceConfigurations" `
-Body $body `
-ContentType "application/json"
#Assign policy to group ID
Write-Output "Assigning $($CAInfo.value.commonname) to $($groupid)"
$AssignBody = @{
assignments = @(
@{
target = @{
"@odata.type" = "#microsoft.graph.groupAssignmentTarget"
groupId = "$groupid"
}
}
)
}
Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/deviceConfigurations/$($RootCAProfile.id)/assign" `
-Body $AssignBody `
-ContentType "application/json"
}
DeployCloudPKICA -CA "OurCloudNetworkRootCA" -Groupid "5d91d8ee-a40c-45f0-be1d-d5684e636ce6" -PolicyName "Deploy Root CA"
DeployCloudPKICA -CA "OurCloudNetworkIssuingCA" -Groupid "5d91d8ee-a40c-45f0-be1d-d5684e636ce6" -PolicyName "Deploy Issuing CA"Emisión de certificados para dispositivos
Ahora está listo para emitir certificados a nuestros usuarios finales. Esto se hace con los perfiles de configuración del dispositivo utilizando la plantilla de certificado SCEP. Siga los pasos a continuación para implementar certificados para el usuario final en Intune.
1. En el Centro de administración de Intune, navegue hasta Dispositivos > Configuración > Crear >Nueva política.
2. Seleccione Windows 10 y versiones posteriores > Plantillas, luego elija la plantilla de certificado SCEP de la lista y haga clic en Crear. .
3. Defina un nombre para la política y haga clic en Siguiente. He elegido 'Certificado SCEP - Autenticación del cliente'.
4. En la página de ajustes de Configuración, usaré los siguientes ajustes:
- Tipo de certificado: Usuario
- Formato del nombre del asunto: Dejar como predeterminado
- Nombre alternativo del sujeto: Dejar como predeterminado
- Período de validez del certificado: 1 año (predeterminado)
- Proveedor de almacenamiento de claves: Software KSP (Solo se puede elegir esta opción si establece el tamaño de clave en 4096).
- Uso de claves: Firma digital y cifrado de claves
- Tamaño de clave (bits): 4096
- Algoritmo hash: SHA-2
5. Haga clic en +Certificado raíze y seleccione su CA emisora de la lista. Nota: esta lista le mostrará una lista de las CA implementadas a través de perfiles de configuración, no de la lista de Cloud PKI en Administración de inquilinos.
6. Seleccione Autenticación de cliente en el cuadro desplegable Valores predefinidos en Uso extendido de claves.
7. En Configuración de inscripción, deje el umbral de renovación predeterminado (20%), luego copie y pegue la URL del servidor SCEP de su CA emisora y haga clic en Siguiente.
Obtenga la URL de SCEP de Administración de inquilinos > Cloud PKI > Seleccione la CA emisora > Propiedades > SCEP URI.
8. En la pestaña Asignaciones, asigne esta política a su grupo de dispositivos de destino (probablemente el mismo grupo que antes) y luego continúe para terminar de crear la política.
Implemente perfiles SCEP automáticamente con PowerShell
Si bien son un poco complicados, los perfiles SCEP se pueden implementar automáticamente usando Microsoft Graph PowerShell. ¡Asegúrese de definir las variables al comienzo del siguiente script y luego deje que haga el resto del trabajo por usted!
#Define these variables
$CA = "OurCloudNetworkIssuingCA"
$Groupid = "5d91d8ee-a40c-45f0-be1d-d5684e636ce6"
$TrustedCertificateRootProfileName = "Deploy Root CA"
#Get CA Info and Trust Root Certificate deployment profile info
$CAuri = "https://graph.microsoft.com/beta/deviceManagement/cloudCertificationAuthority?`$filter=displayname eq '$CA'"
$CAInfo = Invoke-MgGraphRequest -Method GET -Uri $CAuri
$ProfileUri = "https://graph.microsoft.com/beta/deviceManagement/deviceConfigurations?`$filter=displayName eq '$TrustedCertificateRootProfileName'"
$ProfileInfo = Invoke-MgGraphRequest -Method GET -Uri $ProfileUri
$body = @{
id = "00000000-0000-0000-0000-000000000000"
displayName = "Deploy SCEP Certificate"
roleScopeTagIds = @(
"0"
)
"@odata.type" = "#microsoft.graph.windows81SCEPCertificateProfile"
renewalThresholdPercentage = 20
certificateStore = "user"
certificateValidityPeriodScale = "years"
certificateValidityPeriodValue = 1
subjectNameFormat = "custom"
subjectNameFormatString = "CN={{UserName}},E={{EmailAddress}}"
keyStorageProvider = "useSoftwareKsp"
keyUsage = "digitalSignature,keyEncipherment"
keySize = "size4096"
hashAlgorithm = "sha2"
extendedKeyUsages = @(
@{
name = "Client Authentication"
objectIdentifier = "1.3.6.1.5.5.7.3.2"
}
)
scepServerUrls = @(
"$($CAInfo.Value.ScepServerUrl)"
)
"[email " = "https://graph.microsoft.com/beta/deviceManagement/deviceConfigurations('$($ProfileInfo.value.id)')"
}
#Create Profile
$SCEPProfile = Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/deviceConfigurations/" `
-Body $Body `
-ContentType "application/json"
#Assign Profile
$AssignBody = @{
assignments = @(
@{
target = @{
"@odata.type" = "#microsoft.graph.groupAssignmentTarget"
groupId = "$groupid"
}
}
)
}
Invoke-MgGraphRequest -Method POST `
-Uri "/beta/deviceManagement/deviceConfigurations/$($SCEPProfile.id)/assign" `
-Body $AssignBody `
-ContentType "application/json"Verificación de una implementación exitosa
Si bien el objetivo de esta publicación no es implementar certificados en ningún escenario específico, aún podemos asegurarnos de que los certificados que enviamos se implementen correctamente en los dispositivos de nuestros usuarios finales, así como garantizar que el estado del certificado sea correcto.
Inicie sesión en un sistema cliente y abra la herramienta del panel de control Administrar certificados de usuario desde la búsqueda de Windows.
Expanda Autoridades de certificación intermedias y luego Certificados. Debería ver su certificado de emisión en la lista.
Luego expanda Autoridades de certificación raíz de confianza y luego Certificados. También debería ver su certificado raíz en la lista.
Finalmente, haga clic en la carpeta Personal y seleccione Certificados. Aquí debería ver su certificado emitido desde Cloud PKI. Haga doble clic en él y vea la pestaña Ruta de certificación. Debería ver la ruta completa en la lista y el estado del certificado como OK aquí.
Preguntas frecuentes
¿Cuándo estará completamente disponible Cloud PKI?
Se podrá acceder completamente a Cloud PKI antes del 1 de marzo.
¿Se puede sustituir completamente la PKI local por la PKI en la nube?
Puede simplificar y reducir significativamente la carga de trabajo asociada con su PKI privada (local), pero aún no reemplazarla por completo.
¿Se puede implementar Cloud PKI multiinquilino?
Cuando crea una CA raíz en Cloud PKI, esto es privado para su inquilino. No puede firmar su certificado de CA emisor desde una CA raíz en otro inquilino, pero puede firmarlo desde su CA local.
¿Puedo usar esto para reemplazar el RADIUS local existente para la autenticación WiFi?
No. Cloud PKI no es un servicio RADIUS. No hay información conocida que sugiera que Microsoft esté implementando un servicio RADIUS basado en la nube.














