Usare le API per aggiungere autorità di certificazione di terze parti per SCEP a Intune

In Microsoft Intune è possibile aggiungere autorità di certificazione (CA) di terze parti e inviare e convalidare i certificati tramite il protocollo SCEP (Simple Certificate Enrollment Protocol). Aggiungere un'autorità di certificazione di terze parti offre una panoramica di questa funzionalità e descrive le attività di amministratore in Intune.

Esistono anche alcune attività per sviluppatori che usano una libreria open source pubblicata da Microsoft in GitHub.com. La libreria include un'API che:

  • Convalida la password SCEP generata dinamicamente da Intune
  • Notifica a Intune i certificati creati nei dispositivi che inviano richieste SCEP

Usando questa API, il server SCEP di terze parti si integra con la soluzione di gestione SCEP di Intune per i dispositivi MDM. La libreria astrae dagli utenti aspetti quali l'autenticazione, la posizione del servizio e l'API del servizio ODATA Intune.

Soluzione di gestione SCEP

In che modo l'autorità di certificazione di terze parti SCEP si integra con Microsoft Intune

Usando Intune, gli amministratori creano profili SCEP e quindi assegnano questi profili ai dispositivi MDM. I profili SCEP includono parametri, ad esempio:

  • URL del server SCEP
  • Certificato radice attendibile dell'autorità di certificazione
  • Attributi del certificato e altro ancora

Ai dispositivi che eseguono l'archiviazione con Intune viene assegnato il profilo SCEP e vengono configurati con questi parametri. Una password di verifica SCEP generata dinamicamente viene creata da Intune e quindi assegnata al dispositivo.

Questa richiesta contiene:

  • Password di verifica generata dinamicamente
  • Dettagli sui parametri previsti nella richiesta di firma del certificato (CSR) che il dispositivo invia al server SCEP
  • Data e ora di scadenza della sfida

Intune crittografa queste informazioni, firma il BLOB crittografato e quindi inserisce questi dettagli nella password di verifica SCEP.

I dispositivi che contattano il server SCEP per richiedere un certificato assegnano quindi questa password di richiesta SCEP. Il server SCEP invia la csr e la password di verifica SCEP crittografata a Intune per la convalida. Questa password di verifica e csr devono superare la convalida affinché il server SCEP rilasci un certificato al dispositivo. Quando viene convalidata una verifica SCEP, vengono eseguiti i controlli seguenti:

  • Convalida la firma del BLOB crittografato
  • Verifica che la richiesta di verifica non sia scaduta
  • Verifica che il profilo sia ancora destinato al dispositivo
  • Verifica che le proprietà del certificato richieste dal dispositivo nella csr corrispondano ai valori previsti

La soluzione di gestione SCEP include anche la creazione di report. Un amministratore può ottenere informazioni sullo stato di distribuzione del profilo SCEP e sui certificati rilasciati ai dispositivi.

Integrazione con Intune

Il codice per l'integrazione della libreria con SCEP di Intune è disponibile per il download nel repository GitHub Microsoft/Intune-Resource-Access.

L'integrazione della libreria nei prodotti include i passaggi seguenti. Questi passaggi richiedono conoscenze sull'uso dei repository GitHub e sulla creazione di soluzioni e progetti in Visual Studio.

  1. Registrarsi per ricevere notifiche dal repository

  2. Clonare o scaricare il repository

  3. Passare all'implementazione della libreria necessaria nella \src\CsrValidation cartella (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)

  4. Compilare la libreria usando le istruzioni nel file README

  5. Includere la libreria nel progetto che compila il server SCEP

  6. Completare le attività seguenti nel server SCEP:

    • Consentire all'amministratore di configurare l'identificatore applicazione Azure, la chiave applicazione Azure e l'ID tenant (in questo articolo) usati dalla libreria per l'autenticazione. Agli amministratori deve essere consentito aggiornare la chiave applicazione Azure.
    • Identificare le richieste SCEP che includono una password SCEP generata da Intune
    • Usare la libreria API Validate Request per convalidare le password SCEP generate da Intune
    • Usare le API di notifica della libreria per notificare a Intune i certificati emessi per le richieste SCEP con password SCEP generate da Intune. Notificare anche a Intune gli errori che possono verificarsi durante l'elaborazione di queste richieste SCEP.
    • Verificare che il server registri informazioni sufficienti per consentire agli amministratori di risolvere i problemi
  7. Completare i test di integrazione (in questo articolo) e risolvere eventuali problemi

  8. Fornire indicazioni scritte al cliente che spiegano:

    • Come eseguire l'onboarding del server SCEP nell'interfaccia di amministrazione di Microsoft Intune
    • Come ottenere l'identificatore applicazione Azure e la chiave applicazione Azure necessari per configurare la libreria

Eseguire l'onboarding del server SCEP in Azure

Per eseguire l'autenticazione in Intune, il server SCEP richiede un ID applicazione Azure, una chiave applicazione Azure e un ID tenant. Il server SCEP deve anche essere autorizzato ad accedere all'API di Intune.

Per ottenere questi dati, l'amministratore del server SCEP accede al portale di Azure, registra l'applicazione, fornisce all'applicazione sia l'autorizzazione di convalida di verifica API\SCEP Microsoft Intune che l'autorizzazione Application.Read.All, crea una chiave per l'applicazione e quindi scarica l'ID applicazione, la chiave e l'ID tenant.

Per indicazioni sulla registrazione di un'applicazione e sul recupero di ID e chiavi, vedere Usare il portale per creare un'applicazione Microsoft Entra e un'entità servizio per accedere alle risorse.

API della libreria Java

La libreria Java viene implementata come progetto Maven che esegue il pull delle relative dipendenze quando viene compilata. L'API viene implementata nello com.microsoft.intune.scepvalidation spazio dei nomi dalla IntuneScepServiceClient classe .

Classe IntuneScepServiceClient

La IntuneScepServiceClient classe include i metodi usati dal servizio SCEP per convalidare le password SCEP, per notificare a Intune i certificati creati e per elencare eventuali errori.

Costruttore IntuneScepServiceClient

Firma:

IntuneScepServiceClient(
    Properties configProperties)

Descrizione:

Crea un'istanza e configura un IntuneScepServiceClient oggetto .

Parametri:

  • configProperties - Oggetto Properties contenente informazioni di configurazione client

La configurazione deve includere le proprietà seguenti:

  • AAD_APP_ID="ID applicazione Azure ottenuto durante il processo di onboarding"
  • AAD_APP_KEY="Chiave applicazione Azure ottenuta durante il processo di onboarding"
  • TENANT="Id tenant ottenuto durante il processo di onboarding"
  • PROVIDER_NAME_AND_VERSION="Informazioni usate per identificare il prodotto e la sua versione"

Se la soluzione richiede un proxy con autenticazione o senza autenticazione, è possibile aggiungere le proprietà seguenti:

  • PROXY_HOST="L'host in cui è ospitato il proxy".
  • PROXY_PORT="La porta su cui è in ascolto il proxy".
  • PROXY_USER="Nome utente da usare se il proxy usa l'autenticazione di base".
  • PROXY_PASS="Password da usare se il proxy usa l'autenticazione di base".

Genera:

  • IllegalArgumentException : generata se il costruttore viene eseguito senza un oggetto proprietà appropriato.

Importante

È consigliabile creare un'istanza di questa classe e usarla per elaborare più richieste SCEP. In questo modo si riduce il sovraccarico, perché memorizza nella cache i token di autenticazione e le informazioni sulla posizione del servizio.

Note sulla sicurezza
L'implementatore del server SCEP deve proteggere i dati immessi nelle proprietà di configurazione persistenti nell'archiviazione da manomissioni e divulgazione. È consigliabile usare gli ACL e la crittografia appropriati per proteggere le informazioni.

Metodo ValidateRequest

Firma:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Descrizione:

Convalida una richiesta di certificato SCEP.

Parametri:

  • transactionId - ID transazione SCEP
  • certificateRequest - Codifica DER PKCS #10 Certificate Request Base64 codificata come stringa

Genera:

  • IllegalArgumentException : generata se chiamata con un parametro non valido
  • IntuneScepServiceException - Generata se viene rilevato che la richiesta di certificato non è valida
  • Eccezione : generata se si verifica un errore non previsto

Importante

Le eccezioni generate da questo metodo devono essere registrate dal server. Si noti che le IntuneScepServiceException proprietà contengono informazioni dettagliate sul motivo per cui la convalida della richiesta di certificato non è riuscita.

Note sulla sicurezza:

  • Se questo metodo genera un'eccezione, il server SCEP non deve rilasciare un certificato al client.
  • Gli errori di convalida delle richieste di certificato SCEP possono indicare un problema nell'infrastruttura di Intune. In alternativa, potrebbero indicare che un utente malintenzionato sta provando a ottenere un certificato.
Metodo SendSuccessNotification

Firma:

void SendSuccessNotification(
    String transactionId,
    String certificateRequest,
    String certThumbprint,
    String certSerialNumber,
    String certExpirationDate,
    String certIssuingAuthority)

Descrizione:

Notifica a Intune che un certificato viene creato come parte dell'elaborazione di una richiesta SCEP.

Parametri:

  • transactionId - ID transazione SCEP
  • certificateRequest - Codifica DER PKCS #10 Certificate Request Base64 codificata come stringa
  • certThumprint - Hash SHA1 dell'identificazione personale del certificato di cui è stato effettuato il provisioning
  • certSerialNumber - Numero di serie del certificato di cui è stato effettuato il provisioning
  • certExpirationDate - Data di scadenza del certificato di cui è stato effettuato il provisioning. La stringa dell'ora di data deve essere formattata come ora UTC Web (AAAA-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority - Nome dell'autorità che ha emesso il certificato

Genera:

  • IllegalArgumentException : generata se chiamata con un parametro non valido
  • IntuneScepServiceException - Generata se viene rilevato che la richiesta di certificato non è valida
  • Eccezione : generata se si verifica un errore non previsto

Importante

Le eccezioni generate da questo metodo devono essere registrate dal server. Si noti che le IntuneScepServiceException proprietà contengono informazioni dettagliate sul motivo per cui la convalida della richiesta di certificato non è riuscita.

Note sulla sicurezza:

  • Se questo metodo genera un'eccezione, il server SCEP non deve rilasciare un certificato al client.
  • Gli errori di convalida delle richieste di certificato SCEP possono indicare un problema nell'infrastruttura di Intune. In alternativa, potrebbero indicare che un utente malintenzionato sta provando a ottenere un certificato.
Metodo SendFailureNotification

Firma:

void SendFailureNotification(
    String transactionId,
    String certificateRequest,
    long  hResult,
    String errorDescription)

Descrizione:

Notifica a Intune che si è verificato un errore durante l'elaborazione di una richiesta SCEP. Questo metodo non deve essere richiamato per le eccezioni generate dai metodi di questa classe.

Parametri:

  • transactionId - ID transazione SCEP
  • certificateRequest - Codifica DER PKCS #10 Certificate Request Base64 codificata come stringa
  • hResult : codice di errore Win32 che descrive meglio l'errore rilevato. Vedere Codici di errore Win32
  • errorDescription - Descrizione dell'errore rilevato

Genera:

  • IllegalArgumentException : generata se chiamata con un parametro non valido
  • IntuneScepServiceException - Generata se viene rilevato che la richiesta di certificato non è valida
  • Eccezione : generata se si verifica un errore non previsto

Importante

Le eccezioni generate da questo metodo devono essere registrate dal server. Si noti che le IntuneScepServiceException proprietà contengono informazioni dettagliate sul motivo per cui la convalida della richiesta di certificato non è riuscita.

Note sulla sicurezza:

  • Se questo metodo genera un'eccezione, il server SCEP non deve rilasciare un certificato al client.
  • Gli errori di convalida delle richieste di certificato SCEP possono indicare un problema nell'infrastruttura di Intune. In alternativa, potrebbero indicare che un utente malintenzionato sta provando a ottenere un certificato.
Metodo SetSslSocketFactory

Firma:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Descrizione:

Usare questo metodo per informare il client che deve usare la socket factory SSL specificata (anziché l'impostazione predefinita) durante la comunicazione con Intune.

Parametri:

  • factory - Factory del socket SSL che il client deve usare per le richieste HTTPS

Genera:

  • IllegalArgumentException : generata se chiamata con un parametro non valido

Nota

La factory del socket SSL deve essere impostata se necessario prima di eseguire gli altri metodi di questa classe.

Test di integrazione

La convalida e il test della corretta integrazione della soluzione con Intune è un must. Di seguito è riportata una panoramica dei passaggi:

  1. Configurare un account di valutazione di Intune.
  2. Eseguire l'onboarding del server SCEP nel portale di Azure (in questo articolo).
  3. Configurare il server SCEP con gli ID e la chiave creati durante l'onboarding del server SCEP.
  4. Registrare i dispositivi per testare gli scenari nella matrice di test dello scenario.
  5. Creare un profilo certificato radice attendibile per l'autorità di certificazione di test.
  6. Creare profili SCEP per testare gli scenari elencati nella matrice di test dello scenario.
  7. Assegnare i profili agli utenti che hanno registrato i propri dispositivi.
  8. Attendere la sincronizzazione dei dispositivi con Intune. In alternativa, sincronizzare manualmente i dispositivi.
  9. Verificare che il certificato radice attendibile e i profili SCEP siano distribuiti nei dispositivi.
  10. Verificare che il certificato radice attendibile sia installato in tutti i dispositivi.
  11. Verificare che i certificati SCEP per i profili assegnati siano installati in tutti i dispositivi.
  12. Verificare che le proprietà dei certificati installati corrispondano alle proprietà impostate nel profilo SCEP.
  13. Verificare che i certificati rilasciati siano elencati correttamente nell'interfaccia di amministrazione di Intune

Vedere anche