Sdílet prostřednictvím


Použití rozhraní API k přidání certifikačních autorit třetích stran pro SCEP do Intune

V Microsoft Intune můžete přidat certifikační autority třetích stran a nechat tyto certifikační autority vydávat a ověřovat certifikáty pomocí protokolu SCEP (Simple Certificate Enrollment Protocol). Přidání certifikační autority třetí strany poskytuje přehled této funkce a popisuje úlohy správce v Intune.

Existují také některé vývojářské úlohy, které používají opensourcovou knihovnu, kterou Microsoft publikoval v GitHub.com. Knihovna obsahuje rozhraní API, které:

  • Ověří heslo SCEP dynamicky generované Intune
  • Informuje Intune o certifikátech vytvořených na zařízeních odesílaných žádosti SCEP.

Pomocí tohoto rozhraní API se server SCEP třetí strany integruje s řešením pro správu Intune SCEP pro zařízení MDM. Knihovna od svých uživatelů abstrahuje aspekty, jako je ověřování, umístění služby a rozhraní API služby Intune ODATA.

Řešení pro správu SCEP

Způsob integrace certifikační autority třetí strany SCEP s Microsoft Intune

Pomocí Intune vytvoří správci profily SCEP a pak tyto profily přiřadí zařízením MDM. Profily SCEP obsahují parametry, například:

  • Adresa URL serveru SCEP
  • Důvěryhodný kořenový certifikát certifikační autority
  • Atributy certifikátu a další

Zařízení, která se přihlašují pomocí Intune, mají přiřazený profil SCEP a jsou nakonfigurovaná s těmito parametry. Dynamicky generované heslo výzvy SCEP vytvoří Intune a přiřadí se k zařízení.

Tento úkol obsahuje:

  • Dynamicky generované heslo výzvy
  • Podrobnosti o parametrech očekávaných v žádosti o podepsání certifikátu (CSR), kterou zařízení vystaví serveru SCEP
  • Doba vypršení platnosti výzvy

Intune tyto informace zašifruje, podepíše šifrovaný objekt blob a pak tyto podrobnosti zabalí do hesla výzvy SCEP.

Zařízení, která kontaktují server SCEP s žádostí o certifikát, pak tomuto SCEP udělují heslo výzvy. Server SCEP odešle csr a šifrované heslo výzvy SCEP k Intune k ověření. Toto výzva heslo a CSR musí projít ověřením, aby server SCEP vydědil certifikát do zařízení. Při ověření výzvy SCEP proběhnou následující kontroly:

  • Ověří podpis šifrovaného objektu blob.
  • Ověří, že nevypršela platnost výzvy.
  • Ověří, že profil stále cílí na zařízení.
  • Ověří, že vlastnosti certifikátu požadované zařízením v csr odpovídají očekávaným hodnotám.

Řešení pro správu SCEP zahrnuje také vytváření sestav. Správce může získat informace o stavu nasazení profilu SCEP a o certifikátech vydaných zařízením.

Integrace s Intune

Kód pro integraci knihovny s Intune SCEP je k dispozici ke stažení v úložišti Microsoft/Intune-Resource-Access na GitHubu.

Integrace knihovny do produktů zahrnuje následující kroky. Tyto kroky vyžadují znalosti práce s úložišti GitHub a vytváření řešení a projektů v sadě Visual Studio.

  1. Registrace pro příjem oznámení z úložiště

  2. Klonování nebo stažení úložiště

  3. Ve složce přejděte na potřebnou implementaci \src\CsrValidation knihovny (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation).

  4. Sestavte knihovnu podle pokynů v souboru README.

  5. Do projektu, který sestaví server SCEP, zahrňte knihovnu.

  6. Na serveru SCEP proveďte následující úlohy:

    • Umožněte správci nakonfigurovat identifikátor Aplikace Azure, klíč Aplikace Azure a ID tenanta (v tomto článku), které knihovna používá k ověřování. Správci by měli mít možnost aktualizovat klíč Aplikace Azure.
    • Identifikace požadavků SCEP, které obsahují heslo SCEP vygenerované Intune
    • Ověření hesel Intune generovaných Intune SCEP pomocí knihovny API pro ověření požadavků
    • Pomocí rozhraní API pro oznámení knihovny můžete Intune informovat o certifikátech vystavených pro požadavky SCEP, které mají Intune vygenerovaná hesla SCEP. Upozorněte Intune také na chyby, ke kterým může dojít při zpracování těchto požadavků SCEP.
    • Ověřte, že server protokoluje dostatek informací, které správcům pomůžou při řešení problémů.
  7. Dokončete testování integrace (v tomto článku) a vyřešte případné problémy.

  8. Poskytněte zákazníkovi písemné pokyny, které vysvětlují:

    • Způsob nasazení serveru SCEP v Centru pro správu Microsoft Intune
    • Jak získat identifikátor Aplikace Azure a klíč Aplikace Azure potřebný ke konfiguraci knihovny

Onboarding serveru SCEP v Azure

K ověření v Intune server SCEP vyžaduje ID Aplikace Azure, klíč Aplikace Azure a ID tenanta. Server SCEP také potřebuje oprávnění pro přístup k rozhraní API Intune.

Aby správce serveru SCEP získal tato data, přihlásí se k Azure Portal, zaregistruje aplikaci, udělí aplikaci oprávnění k ověření výzvy Microsoft Intune API\SCEP i oprávnění Application.Read.All, vytvoří klíč aplikace a pak stáhne ID aplikace, její klíč a ID tenanta.

Pokyny k registraci aplikace a získání ID a klíčů najdete v tématu Použití portálu k vytvoření Microsoft Entra aplikace a instančního objektu pro přístup k prostředkům.

Rozhraní API knihovny Java

Knihovna Java se implementuje jako projekt Maven, který při sestavování načítá své závislosti. Rozhraní API je implementované v rámci com.microsoft.intune.scepvalidation oboru názvů IntuneScepServiceClient třídou .

IntuneScepServiceClient – třída

Třída IntuneScepServiceClient zahrnuje metody používané službou SCEP k ověření hesel SCEP, k oznamování Intune o vytvořených certifikátech a k výpisu chyb.

IntuneScepServiceClient – konstruktor

Podpis:

IntuneScepServiceClient(
    Properties configProperties)

Popis:

Vytvoří instanci a nakonfiguruje IntuneScepServiceClient objekt.

Parametry:

  • configProperties – objekt Properties obsahující informace o konfiguraci klienta.

Konfigurace musí obsahovat následující vlastnosti:

  • AAD_APP_ID="ID Aplikace Azure získané během procesu onboardingu"
  • AAD_APP_KEY="Klíč Aplikace Azure získaný během procesu onboardingu"
  • TENANT="ID tenanta získané během procesu onboardingu"
  • PROVIDER_NAME_AND_VERSION="Informace použité k identifikaci produktu a jeho verze"

Pokud vaše řešení vyžaduje proxy server s ověřováním nebo bez ověřování, můžete přidat následující vlastnosti:

  • PROXY_HOST="Hostitel, na které je proxy server hostovaný."
  • PROXY_PORT="Port, na který proxy server naslouchá."
  • PROXY_USER="Uživatelské jméno, které se má použít, pokud proxy server používá základní ověřování."
  • PROXY_PASS="Heslo, které se má použít, pokud proxy server používá základní ověřování."

Vyvolá:

  • IllegalArgumentException – vyvolána, pokud je konstruktor spuštěn bez správného objektu vlastnosti.

Důležité

Nejlepší je vytvořit instanci této třídy a použít ji ke zpracování více požadavků SCEP. Tím se sníží režijní náklady, protože se do mezipaměti ukládají ověřovací tokeny a informace o umístění služby.

Poznámky k zabezpečení
Implementátor serveru SCEP musí chránit data zadaná ve vlastnostech konfigurace, které se uchovávají v úložišti, před manipulací a zveřejněním. K zabezpečení informací se doporučuje používat správné seznamy ACL a šifrování.

Metoda ValidateRequest

Podpis:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Popis:

Ověří žádost o certifikát SCEP.

Parametry:

  • transactionId – ID transakce SCEP.
  • certificateRequest – kódovaný kódem DER PKCS #10 Base64 žádosti o certifikát zakódovaný jako řetězec

Vyvolá:

  • IllegalArgumentException – vyvolá se, pokud se volá s neplatným parametrem.
  • IntuneScepServiceException – vyvolá se, pokud se zjistí, že žádost o certifikát není platná.
  • Výjimka – vyvoláno, pokud dojde k neočekávané chybě.

Důležité

Výjimky vyvolané touto metodou by měl protokolovat server. Všimněte si IntuneScepServiceException , že vlastnosti obsahují podrobné informace o tom, proč se ověření žádosti o certifikát nezdařilo.

Poznámky k zabezpečení:

  • Pokud tato metoda vyvolá výjimku, server SCEP nesmí vystavit certifikát klientovi.
  • Selhání ověření žádosti o certifikát SCEP můžou značit problém v infrastruktuře Intune. Nebo můžou znamenat, že se útočník pokouší získat certifikát.
Metoda SendSuccessNotification

Podpis:

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

Popis:

Upozorní Intune, že se certifikát vytvoří v rámci zpracování žádosti SCEP.

Parametry:

  • transactionId – ID transakce SCEP.
  • certificateRequest – kódovaný kódem DER PKCS #10 Base64 žádosti o certifikát zakódovaný jako řetězec
  • certThumprint – hodnota hash SHA1 kryptografického otisku zřízeného certifikátu.
  • certSerialNumber – sériové číslo zřízeného certifikátu.
  • certExpirationDate – datum vypršení platnosti zřízeného certifikátu. Řetězec data a času by měl být formátován jako web UTC (YYYY-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority – název autority, která certifikát vydala.

Vyvolá:

  • IllegalArgumentException – vyvolá se, pokud se volá s neplatným parametrem.
  • IntuneScepServiceException – vyvolá se, pokud se zjistí, že žádost o certifikát není platná.
  • Výjimka – vyvoláno, pokud dojde k neočekávané chybě.

Důležité

Výjimky vyvolané touto metodou by měl protokolovat server. Všimněte si IntuneScepServiceException , že vlastnosti obsahují podrobné informace o tom, proč se ověření žádosti o certifikát nezdařilo.

Poznámky k zabezpečení:

  • Pokud tato metoda vyvolá výjimku, server SCEP nesmí vystavit certifikát klientovi.
  • Selhání ověření žádosti o certifikát SCEP můžou značit problém v infrastruktuře Intune. Nebo můžou znamenat, že se útočník pokouší získat certifikát.
Metoda SendFailureNotification

Podpis:

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

Popis:

Upozorní Intune, že při zpracování požadavku SCEP došlo k chybě. Tato metoda by neměla být vyvolána pro výjimky vyvolané metodami této třídy.

Parametry:

  • transactionId – ID transakce SCEP.
  • certificateRequest – kódovaný kódem DER PKCS #10 Base64 žádosti o certifikát zakódovaný jako řetězec
  • hResult – kód chyby Win32, který nejlépe popisuje chybu, ke které došlo. Viz Kódy chyb Win32.
  • errorDescription – popis chyby, ke které došlo.

Vyvolá:

  • IllegalArgumentException – vyvolá se, pokud se volá s neplatným parametrem.
  • IntuneScepServiceException – vyvolá se, pokud se zjistí, že žádost o certifikát není platná.
  • Výjimka – vyvoláno, pokud dojde k neočekávané chybě.

Důležité

Výjimky vyvolané touto metodou by měl protokolovat server. Všimněte si IntuneScepServiceException , že vlastnosti obsahují podrobné informace o tom, proč se ověření žádosti o certifikát nezdařilo.

Poznámky k zabezpečení:

  • Pokud tato metoda vyvolá výjimku, server SCEP nesmí vystavit certifikát klientovi.
  • Selhání ověření žádosti o certifikát SCEP můžou značit problém v infrastruktuře Intune. Nebo můžou znamenat, že se útočník pokouší získat certifikát.
Metoda SetSslSocketFactory

Podpis:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Popis:

Tato metoda slouží k informování klienta, že při komunikaci s Intune musí použít zadaný objekt pro vytváření soketů SSL (místo výchozího).

Parametry:

  • factory – objekt pro vytváření soketů SSL, který by měl klient používat pro požadavky HTTPS

Vyvolá:

  • IllegalArgumentException – vyvolá se, pokud se volá s neplatným parametrem.

Poznámka

Objekt pro vytváření soketů SSL musí být v případě potřeby nastaven před spuštěním ostatních metod této třídy.

Testování integrace

Ověření a otestování správné integrace řešení s Intune je nutností. Následující seznam obsahuje přehled kroků:

  1. Nastavte Intune zkušební účet.
  2. Onboarding serveru SCEP v Azure Portal (v tomto článku).
  3. Nakonfigurujte server SCEP pomocí ID a klíče vytvořeného při onboardingu serveru SCEP.
  4. Zaregistrujte zařízení pro testování scénářů v matici testování scénářů.
  5. Vytvořte profil důvěryhodného kořenového certifikátu pro testovací certifikační autoritu.
  6. Vytvořte profily SCEP a otestujte scénáře uvedené v matici testování scénářů.
  7. Přiřaďte profily uživatelům, kteří si zaregistrovali svá zařízení.
  8. Počkejte, až se zařízení synchronizují s Intune. Nebo můžete zařízení synchronizovat ručně.
  9. Ověřte, že jsou na zařízení nasazené profily Důvěryhodný kořenový certifikát a SCEP.
  10. Ověřte, že je na všech zařízeních nainstalovaný důvěryhodný kořenový certifikát.
  11. Ověřte, že jsou na všech zařízeních nainstalované certifikáty SCEP pro přiřazené profily.
  12. Ověřte, že vlastnosti nainstalovaných certifikátů odpovídají vlastnostem nastaveným v profilu SCEP.
  13. Ověřte, že jsou vydané certifikáty správně uvedené v Centru pro správu Intune.

Viz také