Utiliser des API pour ajouter des autorités de certification tierces pour SCEP à Intune
Dans Microsoft Intune, vous pouvez ajouter des autorités de certification tierces et demander à ces autorités de certification d’émettre et de valider des certificats à l’aide du protocole SCEP (Simple Certificate Enrollment Protocol). Ajouter une autorité de certification tierce fournit une vue d’ensemble de cette fonctionnalité et décrit les tâches d’administrateur dans Intune.
Certaines tâches de développement utilisent également une bibliothèque open source que Microsoft a publiée dans GitHub.com. La bibliothèque inclut une API qui :
- Valide le mot de passe SCEP généré dynamiquement par Intune
- Avertit Intune des certificats créés sur les appareils qui envoient des demandes SCEP
À l’aide de cette API, votre serveur SCEP tiers s’intègre à la solution de gestion SCEP Intune pour les appareils GPM. La bibliothèque extrait les aspects tels que l’authentification, l’emplacement du service et l’API du service ODATA Intune de ses utilisateurs.
Solution de gestion SCEP
À l’aide d’Intune, les administrateurs créent des profils SCEP, puis attribuent ces profils aux appareils GPM. Les profils SCEP incluent des paramètres, tels que :
- URL du serveur SCEP
- Certificat racine approuvé de l’autorité de certification
- Attributs de certificat, et bien plus encore
Les appareils qui s’archivent auprès d’Intune se voient attribuer le profil SCEP et sont configurés avec ces paramètres. Un mot de passe de défi SCEP généré dynamiquement est créé par Intune, puis affecté à l’appareil.
Ce défi contient les éléments suivants :
- Mot de passe de défi généré dynamiquement
- Détails sur les paramètres attendus dans la demande de signature de certificat (CSR) que l’appareil envoie au serveur SCEP
- Délai d’expiration du défi
Intune chiffre ces informations, signe l’objet blob chiffré, puis empaquet ces détails dans le mot de passe de défi SCEP.
Les appareils contactant le serveur SCEP pour demander un certificat, puis fournissent ce mot de passe de défi SCEP. Le serveur SCEP envoie le csr et le mot de passe de défi SCEP chiffré à Intune pour validation. Ce mot de passe de défi et la demande de signature de certificat doivent être validés pour que le serveur SCEP émette un certificat sur l’appareil. Lorsqu’un défi SCEP est validé, les vérifications suivantes se produisent :
- Valide la signature de l’objet blob chiffré
- Vérifie que le défi n’a pas expiré
- Vérifie que le profil est toujours ciblé sur l’appareil
- Vérifie que les propriétés de certificat demandées par l’appareil dans le CSR correspondent aux valeurs attendues
La solution de gestion SCEP inclut également la création de rapports. Un administrateur peut obtenir des informations sur l’état de déploiement du profil SCEP et sur les certificats émis pour les appareils.
Intégrer à Intune
Le code de la bibliothèque à intégrer au SCEP Intune est disponible en téléchargement dans le référentiel GitHub Microsoft/Intune-Resource-Access.
L’intégration de la bibliothèque dans vos produits comprend les étapes suivantes. Ces étapes nécessitent des connaissances sur l’utilisation des dépôts GitHub et la création de solutions et de projets dans Visual Studio.
S’inscrire pour recevoir des notifications à partir du référentiel
Cloner ou télécharger le dépôt
Accédez à l’implémentation de bibliothèque dont vous avez besoin sous le
\src\CsrValidation
dossier (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)Générer la bibliothèque à l’aide des instructions du fichier README
Inclure la bibliothèque dans le projet qui génère votre serveur SCEP
Effectuez les tâches suivantes sur le serveur SCEP :
- Autorisez l’administrateur à configurer l’identificateur d’application Azure, la clé d’application Azure et l’ID de locataire (dans cet article) que la bibliothèque utilise pour l’authentification. Les administrateurs doivent être autorisés à mettre à jour la clé d’application Azure.
- Identifier les requêtes SCEP qui incluent un mot de passe SCEP généré par Intune
- Utiliser la bibliothèque d’API Valider la demande pour valider les mots de passe SCEP générés par Intune
- Utilisez les API de notification de bibliothèque pour informer Intune des certificats émis pour les requêtes SCEP qui ont les mots de passe SCEP générés par Intune. Informez également Intune des erreurs qui peuvent se produire lors du traitement de ces demandes SCEP.
- Vérifiez que le serveur enregistre suffisamment d’informations pour aider les administrateurs à résoudre les problèmes
Effectuer les tests d’intégration (dans cet article) et résoudre les problèmes
Donnez des conseils écrits au client qui expliquent :
- Comment le serveur SCEP doit être intégré dans le Centre d’administration Microsoft Intune
- Comment obtenir l’identificateur d’application Azure et la clé d’application Azure nécessaires pour configurer la bibliothèque
Intégrer un serveur SCEP dans Azure
Pour s’authentifier auprès d’Intune, le serveur SCEP a besoin d’un ID d’application Azure, d’une clé d’application Azure et d’un ID de locataire. Le serveur SCEP doit également être autorisé à accéder à l’API Intune.
Pour obtenir ces données, l’administrateur du serveur SCEP se connecte au portail Azure, inscrit l’application, donne à l’application l’autorisation de validation du défi API Microsoft Intune\SCEP et l’autorisation Application.Read.All , crée une clé pour l’application, puis télécharge l’ID d’application, sa clé et l’ID de locataire.
Pour obtenir des conseils sur l’inscription d’une application et l’obtention des ID et des clés, consultez Utiliser le portail pour créer une application Microsoft Entra et un principal de service pour accéder aux ressources.
API de bibliothèque Java
La bibliothèque Java est implémentée en tant que projet Maven qui extrait ses dépendances lorsqu’elle est générée. L’API est implémentée sous l’espace com.microsoft.intune.scepvalidation
de noms par la IntuneScepServiceClient
classe .
Classe IntuneScepServiceClient
La IntuneScepServiceClient
classe inclut les méthodes utilisées par le service SCEP pour valider les mots de passe SCEP, informer Intune des certificats créés et répertorier les erreurs éventuelles.
Constructeur IntuneScepServiceClient
Signature :
IntuneScepServiceClient(
Properties configProperties)
Description :
Instancie et configure un IntuneScepServiceClient
objet .
Paramètres :
- configProperties : objet Properties contenant les informations de configuration du client
La configuration doit inclure les propriétés suivantes :
- AAD_APP_ID="ID d’application Azure obtenu pendant le processus d’intégration »
- AAD_APP_KEY="La clé d’application Azure obtenue pendant le processus d’intégration »
- TENANT="ID de locataire obtenu pendant le processus d’intégration »
- PROVIDER_NAME_AND_VERSION="Informations utilisées pour identifier votre produit et sa version »
Si votre solution nécessite un proxy avec authentification ou sans authentification, vous pouvez ajouter les propriétés suivantes :
- PROXY_HOST="Hôte sur lequel le proxy est hébergé. »
- PROXY_PORT="Port sur lequel le proxy écoute. »
- PROXY_USER="Nom d’utilisateur à utiliser si le proxy utilise l’authentification de base. »
- PROXY_PASS="Mot de passe à utiliser si le proxy utilise l’authentification de base. »
Lève :
- IllegalArgumentException : levée si le constructeur est exécuté sans objet de propriété approprié.
Importante
Il est préférable d’instancier une instance de cette classe et de l’utiliser pour traiter plusieurs requêtes SCEP. Cela réduit la surcharge, car il met en cache les jetons d’authentification et les informations d’emplacement du service.
Notes de sécurité
L’implémenteur de serveur SCEP doit protéger les données entrées dans les propriétés de configuration conservées dans le stockage contre la falsification et la divulgation. Il est recommandé d’utiliser les listes de contrôle d’accès et le chiffrement appropriés pour sécuriser les informations.
ValidateRequest, méthode
Signature :
void ValidateRequest(
String transactionId,
String certificateRequest)
Description :
Valide une demande de certificat SCEP.
Paramètres :
- transactionId : ID de transaction SCEP
- certificateRequest : encodée en DER PKCS #10 Certificate Request Base64 encodée sous forme de chaîne
Lève :
- IllegalArgumentException : levée en cas d’appel avec un paramètre qui n’est pas valide
- IntuneScepServiceException : levée si la demande de certificat n’est pas valide
- Exception : levée si une erreur non attendue est rencontrée
Importante
Les exceptions levées par cette méthode doivent être enregistrées par le serveur. Notez que les IntuneScepServiceException
propriétés ont des informations détaillées sur la raison de l’échec de la validation de la demande de certificat.
Remarques sur la sécurité :
- Si cette méthode lève une exception, le serveur SCEP ne doit pas émettre de certificat au client.
- Les échecs de validation des demandes de certificat SCEP peuvent indiquer un problème dans l’infrastructure Intune. Ou bien, ils peuvent indiquer qu’un attaquant tente d’obtenir un certificat.
Méthode SendSuccessNotification
Signature :
void SendSuccessNotification(
String transactionId,
String certificateRequest,
String certThumbprint,
String certSerialNumber,
String certExpirationDate,
String certIssuingAuthority)
Description :
Avertit Intune qu’un certificat est créé dans le cadre du traitement d’une demande SCEP.
Paramètres :
- transactionId : ID de transaction SCEP
- certificateRequest : encodée en DER PKCS #10 Certificate Request Base64 encodée sous forme de chaîne
- certThumprint : hachage SHA1 de l’empreinte numérique du certificat provisionné
- certSerialNumber : numéro de série du certificat provisionné
- certExpirationDate : date d’expiration du certificat provisionné. La chaîne de date et d’heure doit être mise en forme en tant qu’heure UTC web (AAAA-MM-DDThh :mm :ss.sssTZD) ISO 8601.
- certIssuingAuthority : nom de l’autorité qui a émis le certificat
Lève :
- IllegalArgumentException : levée en cas d’appel avec un paramètre qui n’est pas valide
- IntuneScepServiceException : levée si la demande de certificat n’est pas valide
- Exception : levée si une erreur non attendue est rencontrée
Importante
Les exceptions levées par cette méthode doivent être enregistrées par le serveur. Notez que les IntuneScepServiceException
propriétés ont des informations détaillées sur la raison de l’échec de la validation de la demande de certificat.
Remarques sur la sécurité :
- Si cette méthode lève une exception, le serveur SCEP ne doit pas émettre de certificat au client.
- Les échecs de validation des demandes de certificat SCEP peuvent indiquer un problème dans l’infrastructure Intune. Ou bien, ils peuvent indiquer qu’un attaquant tente d’obtenir un certificat.
Méthode SendFailureNotification
Signature :
void SendFailureNotification(
String transactionId,
String certificateRequest,
long hResult,
String errorDescription)
Description :
Avertit Intune qu’une erreur s’est produite lors du traitement d’une requête SCEP. Cette méthode ne doit pas être appelée pour les exceptions levées par les méthodes de cette classe.
Paramètres :
- transactionId : ID de transaction SCEP
- certificateRequest : encodée en DER PKCS #10 Certificate Request Base64 encodée sous forme de chaîne
- hResult : code d’erreur Win32 qui décrit le mieux l’erreur rencontrée. Consultez Codes d’erreur Win32
- errorDescription : description de l’erreur rencontrée
Lève :
- IllegalArgumentException : levée en cas d’appel avec un paramètre qui n’est pas valide
- IntuneScepServiceException : levée si la demande de certificat n’est pas valide
- Exception : levée si une erreur non attendue est rencontrée
Importante
Les exceptions levées par cette méthode doivent être enregistrées par le serveur. Notez que les IntuneScepServiceException
propriétés ont des informations détaillées sur la raison de l’échec de la validation de la demande de certificat.
Remarques sur la sécurité :
- Si cette méthode lève une exception, le serveur SCEP ne doit pas émettre de certificat au client.
- Les échecs de validation des demandes de certificat SCEP peuvent indiquer un problème dans l’infrastructure Intune. Ou bien, ils peuvent indiquer qu’un attaquant tente d’obtenir un certificat.
Méthode SetSslSocketFactory
Signature :
void SetSslSocketFactory(
SSLSocketFactory factory)
Description :
Utilisez cette méthode pour informer le client qu’il doit utiliser la fabrique de socket SSL spécifiée (au lieu de la valeur par défaut) lors de la communication avec Intune.
Paramètres :
- factory : fabrique de socket SSL que le client doit utiliser pour les requêtes HTTPS
Lève :
- IllegalArgumentException : levée en cas d’appel avec un paramètre qui n’est pas valide
Remarque
La fabrique de socket SSL doit être définie si nécessaire avant d’exécuter les autres méthodes de cette classe.
Tests d’intégration
Il est indispensable de valider et de tester que votre solution est correctement intégrée à Intune. Voici une vue d’ensemble des étapes :
- Configurer un compte d’évaluation Intune.
- Intégrez le serveur SCEP dans le portail Azure (dans cet article).
- Configurez le serveur SCEP avec les ID et la clé créés lors de l’intégration de votre serveur SCEP.
- Inscrivez des appareils pour tester les scénarios dans la matrice de test de scénario.
- Créez un profil de certificat racine approuvé pour votre autorité de certification de test.
- Créez des profils SCEP pour tester les scénarios répertoriés dans la matrice de test de scénario.
- Attribuez les profils aux utilisateurs qui ont inscrit leurs appareils.
- Attendez que les appareils se synchronisent avec Intune. Vous pouvez également synchroniser manuellement les appareils.
- Vérifiez que le certificat racine approuvé et les profils SCEP sont déployés sur les appareils.
- Vérifiez que le certificat racine approuvé est installé sur tous les appareils.
- Vérifiez que les certificats SCEP pour les profils attribués sont installés sur tous les appareils.
- Vérifiez que les propriétés des certificats installés correspondent aux propriétés définies dans le profil SCEP.
- Vérifiez que les certificats émis sont correctement répertoriés dans le Centre d’administration Intune
Voir aussi
- Vue d’ensemble de l’ajout d’une autorité de certification tierce
- Configurer Intune
- Inscription de l’appareil
- Configurer des profils de certificat SCEP (le programme d’installation de Microsoft NDES Server\Connector n’est pas utilisé pour ce scénario)