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

Comment l’autorité de certification tierce SCEP s’intègre à Microsoft Intune

À 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 case activée avec 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 les status 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.

  1. S’inscrire pour recevoir des notifications à partir du référentiel

  2. Cloner ou télécharger le dépôt

  3. 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)

  4. Générer la bibliothèque à l’aide des instructions du fichier README

  5. Inclure la bibliothèque dans le projet qui génère votre serveur SCEP

  6. Effectuez les tâches suivantes sur le serveur SCEP :

    • Autorisez l’administrateur à configurer l’identificateur de Azure Application, la clé Azure Application 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é Azure Application.
    • 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
  7. Effectuer les tests d’intégration (dans cet article) et résoudre les problèmes

  8. 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 Azure Application et la clé de Azure Application 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 de Azure Application, d’une clé Azure Application 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 à l’Portail Azure, inscrit l’application, donne à l’application l’autorisation de validation du défi Microsoft Intune API\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 et un principal de service Microsoft Entra 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 Azure Application obtenu pendant le processus d’intégration »
  • AAD_APP_KEY="Clé Azure Application 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 un 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 :

  1. Configurer un compte d’évaluation Intune.
  2. Intégrez le serveur SCEP dans le Portail Azure (dans cet article).
  3. Configurez le serveur SCEP avec les ID et la clé créés lors de l’intégration de votre serveur SCEP.
  4. Inscrivez des appareils pour tester les scénarios dans la matrice de test de scénario.
  5. Créez un profil de certificat racine approuvé pour votre autorité de certification de test.
  6. Créez des profils SCEP pour tester les scénarios répertoriés dans la matrice de test de scénario.
  7. Attribuez les profils aux utilisateurs qui ont inscrit leurs appareils.
  8. Attendez que les appareils se synchronisent avec Intune. Vous pouvez également synchroniser manuellement les appareils.
  9. Vérifiez que le certificat racine approuvé et les profils SCEP sont déployés sur les appareils.
  10. Vérifiez que le certificat racine approuvé est installé sur tous les appareils.
  11. Vérifiez que les certificats SCEP pour les profils attribués sont installés sur tous les appareils.
  12. Vérifiez que les propriétés des certificats installés correspondent aux propriétés définies dans le profil SCEP.
  13. Vérifiez que les certificats émis sont correctement répertoriés dans le Centre d’administration Intune

Voir aussi