Dela via


Använda API:er för att lägga till certifikatutfärdare från tredje part för SCEP i Intune

I Microsoft Intune kan du lägga till certifikatutfärdare från tredje part (CA) och få dessa certifikatutfärdare att utfärda och verifiera certifikat med hjälp av SCEP (Simple Certificate Enrollment Protocol). Lägg till tredjepartscertifikatutfärdare ger en översikt över den här funktionen och beskriver administratörsuppgifterna i Intune.

Det finns också vissa utvecklaruppgifter som använder ett bibliotek med öppen källkod som Microsoft publicerade i GitHub.com. Biblioteket innehåller ett API som:

  • Verifierar SCEP-lösenordet dynamiskt som genereras av Intune
  • Meddelar Intune om de certifikat som skapats på enheter som skickar SCEP-begäranden

Med det här API:et integreras din SCEP-server från tredje part med Intune SCEP-hanteringslösningen för MDM-enheter. Biblioteket abstraherar aspekter som autentisering, tjänstplats och ODATA Intune-tjänst-API:et från sina användare.

SCEP-hanteringslösning

Så integreras SCEP för tredjepartscertifikatutfärdare med Microsoft Intune

Med Intune skapar administratörer SCEP-profiler och tilldelar sedan dessa profiler till MDM-enheter. SCEP-profilerna innehåller parametrar, till exempel:

  • URL:en för SCEP-servern
  • Certifikatutfärdarnas betrodda rotcertifikat
  • Certifikatattribut med mera

Enheter som checkar in med Intune tilldelas SCEP-profilen och konfigureras med dessa parametrar. Ett dynamiskt genererat SCEP-utmaningslösenord skapas av Intune och tilldelas sedan till enheten.

Den här uppgiften innehåller:

  • Det dynamiskt genererade utmaningslösenordet
  • Information om de parametrar som förväntas i certifikatsigneringsbegäran (CSR) som enheten utfärdar till SCEP-servern
  • Förfallotiden för utmaningen

Intune krypterar den här informationen, signerar den krypterade bloben och paketerar sedan informationen i SCEP-utmaningslösenordet.

Enheter som kontaktar SCEP-servern för att begära ett certifikat ger sedan det här SCEP-utmaningslösenordet. SCEP-servern skickar CSR och krypterat SCEP-utmaningslösenord till Intune för validering. Det här utmaningslösenordet och CSR måste godkännas för att SCEP-servern ska utfärda ett certifikat till enheten. När en SCEP-utmaning verifieras utförs följande kontroller:

  • Verifierar signaturen för den krypterade bloben
  • Verifierar att utmaningen inte har upphört att gälla
  • Verifierar att profilen fortfarande är riktad mot enheten
  • Verifierar att certifikategenskaperna som begärs av enheten i CSR matchar de förväntade värdena

SCEP-hanteringslösningen innehåller även rapportering. En administratör kan få information om distributionsstatusen för SCEP-profilen och om de certifikat som utfärdats till enheterna.

Integrera med Intune

Koden för biblioteket som ska integreras med Intune SCEP är tillgänglig för nedladdning på GitHub-lagringsplatsen Microsoft/Intune-Resource-Access.

Integreringen av biblioteket i dina produkter omfattar följande steg. De här stegen kräver kunskap om hur du arbetar med GitHub-lagringsplatser och skapar lösningar och projekt i Visual Studio.

  1. Registrera dig för att ta emot meddelanden från lagringsplatsen

  2. Klona eller ladda ned lagringsplatsen

  3. Gå till den biblioteksimplementering som du behöver under \src\CsrValidation mappen (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)

  4. Skapa biblioteket med hjälp av anvisningarna i README-filen

  5. Inkludera biblioteket i projektet som skapar DIN SCEP-server

  6. Utför följande uppgifter på SCEP-servern:

    • Tillåt administratören att konfigurera Azure Application identifierare, Azure Application nyckel och klientorganisations-ID (i den här artikeln) som biblioteket använder för autentisering. Administratörer bör tillåtas att uppdatera Azure Application-nyckeln.
    • Identifiera SCEP-begäranden som innehåller ett Intune-genererat SCEP-lösenord
    • Använd biblioteket Validate Request API (Verifiera API för begäran ) för att verifiera Intune-genererade SCEP-lösenord
    • Använd API:erna för biblioteksavisering för att meddela Intune om certifikat som utfärdats för SCEP-begäranden som har intune-genererade SCEP-lösenord. Meddela även Intune om fel som kan uppstå vid bearbetning av dessa SCEP-begäranden.
    • Bekräfta att servern loggar tillräckligt med information för att hjälpa administratörer att felsöka problem
  7. Slutför integreringstestning (i den här artikeln) och åtgärda eventuella problem

  8. Ge skriftlig vägledning till kunden som förklarar:

    • Så här måste SCEP-servern registreras i Microsoft Intune administrationscenter
    • Så här hämtar du den Azure Application identifierare och Azure Application nyckel som behövs för att konfigurera biblioteket

Registrera SCEP-server i Azure

För att autentisera till Intune kräver SCEP-servern ett Azure Application-ID, en Azure Application nyckel och ett klientorganisations-ID. SCEP-servern måste också ha behörighet att komma åt Intune-API:et.

För att hämta dessa data loggar SCEP-serveradministratören in på Azure Portal, registrerar programmet, ger programmet både behörigheten Microsoft Intune API\SCEP-utmaningsverifiering och behörigheten Application.Read.All, skapar en nyckel för programmet och laddar sedan ned program-ID, dess nyckel och klientorganisations-ID.

Information om hur du registrerar ett program och hämtar ID:t och nycklarna finns i Använda portalen för att skapa ett Microsoft Entra program och tjänstens huvudnamn för att få åtkomst till resurser.

Api för Java-bibliotek

Java-biblioteket implementeras som ett Maven-projekt som hämtar sina beroenden när det skapas. API:et com.microsoft.intune.scepvalidation implementeras under namnområdet av IntuneScepServiceClient klassen .

IntuneScepServiceClient-klass

Klassen IntuneScepServiceClient innehåller de metoder som används av SCEP-tjänsten för att verifiera SCEP-lösenord, för att meddela Intune om certifikat som har skapats och för att lista eventuella fel.

IntuneScepServiceClient-konstruktor

Signatur:

IntuneScepServiceClient(
    Properties configProperties)

Beskrivning:

Instansierar och konfigurerar ett IntuneScepServiceClient objekt.

Parametrar:

  • configProperties – Egenskapsobjekt som innehåller information om klientkonfiguration

Konfigurationen måste innehålla följande egenskaper:

  • AAD_APP_ID="Det Azure Application ID som erhölls under registreringsprocessen"
  • AAD_APP_KEY="Den Azure Application nyckel som erhölls under registreringsprocessen"
  • TENANT="Klientorganisations-ID som hämtades under registreringsprocessen"
  • PROVIDER_NAME_AND_VERSION="Information som används för att identifiera din produkt och dess version"

Om din lösning kräver en proxy antingen med autentisering eller utan autentisering kan du lägga till följande egenskaper:

  • PROXY_HOST="Värden som proxyn finns på."
  • PROXY_PORT="Porten som proxyn lyssnar på."
  • PROXY_USER="Användarnamnet som ska användas om proxyn använder grundläggande autentisering."
  • PROXY_PASS="Lösenordet som ska användas om proxyn använder grundläggande autentisering."

Kastar:

  • IllegalArgumentException – utlöses om konstruktorn körs utan ett korrekt egenskapsobjekt.

Viktigt

Det är bäst att instansiera en instans av den här klassen och använda den för att bearbeta flera SCEP-begäranden. Detta minskar kostnaderna eftersom det cachelagrar autentiseringstoken och information om tjänstplats.

Säkerhetsanteckningar
SCEP-serverimplementeraren måste skydda de data som anges i konfigurationsegenskaperna som sparats till lagringen mot manipulering och avslöjande. Vi rekommenderar att du använder rätt ACL:er och kryptering för att skydda informationen.

ValidateRequest-metod

Signatur:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Beskrivning:

Verifierar en SCEP-certifikatbegäran.

Parametrar:

  • transactionId – SCEP-transaktions-ID
  • certificateRequest – DER-kodad PKCS #10 Certifikatbegäran Base64 kodad som en sträng

Kastar:

  • IllegalArgumentException – genereras om anropas med en parameter som inte är giltig
  • IntuneScepServiceException – Genereras om det konstateras att certifikatbegäran inte är giltig
  • Undantag – utlöses om ett oväntat fel påträffas

Viktigt

Undantag som genereras av den här metoden ska loggas av servern. Observera att IntuneScepServiceException egenskaperna har detaljerad information om varför valideringen av certifikatbegäran misslyckades.

Säkerhetsanteckningar:

  • Om den här metoden utlöser ett undantag får SCEP-servern inte utfärda ett certifikat till klienten.
  • Verifieringsfel för SCEP-certifikatbegäran kan tyda på ett problem i Intune-infrastrukturen. Eller så kan de indikera att en angripare försöker hämta ett certifikat.
SendSuccessNotification-metod

Signatur:

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

Beskrivning:

Meddelar Intune att ett certifikat skapas som en del av bearbetningen av en SCEP-begäran.

Parametrar:

  • transactionId – SCEP-transaktions-ID
  • certificateRequest – DER-kodad PKCS #10 Certifikatbegäran Base64 kodad som en sträng
  • certThumprint – SHA1-hash för tumavtrycket för det etablerade certifikatet
  • certSerialNumber – serienummer för det etablerade certifikatet
  • certExpirationDate – Utgångsdatum för det etablerade certifikatet. Datumtidssträngen ska formateras som web-UTC-tid (ÅÅÅÅ-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority – Namnet på den utfärdare som utfärdade certifikatet

Kastar:

  • IllegalArgumentException – genereras om anropas med en parameter som inte är giltig
  • IntuneScepServiceException – Genereras om det konstateras att certifikatbegäran inte är giltig
  • Undantag – utlöses om ett oväntat fel påträffas

Viktigt

Undantag som genereras av den här metoden ska loggas av servern. Observera att IntuneScepServiceException egenskaperna har detaljerad information om varför valideringen av certifikatbegäran misslyckades.

Säkerhetsanteckningar:

  • Om den här metoden utlöser ett undantag får SCEP-servern inte utfärda ett certifikat till klienten.
  • Verifieringsfel för SCEP-certifikatbegäran kan tyda på ett problem i Intune-infrastrukturen. Eller så kan de indikera att en angripare försöker hämta ett certifikat.
SendFailureNotification-metod

Signatur:

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

Beskrivning:

Meddelar Intune att ett fel uppstod när en SCEP-begäran bearbetades. Den här metoden ska inte anropas för undantag som genereras av metoderna i den här klassen.

Parametrar:

  • transactionId – SCEP-transaktions-ID
  • certificateRequest – DER-kodad PKCS #10 Certifikatbegäran Base64 kodad som en sträng
  • hResult – Win32-felkod som bäst beskriver felet som påträffades. Se Win32-felkoder
  • errorDescription – Beskrivning av felet som påträffades

Kastar:

  • IllegalArgumentException – genereras om anropas med en parameter som inte är giltig
  • IntuneScepServiceException – Genereras om det konstateras att certifikatbegäran inte är giltig
  • Undantag – utlöses om ett oväntat fel påträffas

Viktigt

Undantag som genereras av den här metoden ska loggas av servern. Observera att IntuneScepServiceException egenskaperna har detaljerad information om varför valideringen av certifikatbegäran misslyckades.

Säkerhetsanteckningar:

  • Om den här metoden utlöser ett undantag får SCEP-servern inte utfärda ett certifikat till klienten.
  • Verifieringsfel för SCEP-certifikatbegäran kan tyda på ett problem i Intune-infrastrukturen. Eller så kan de indikera att en angripare försöker hämta ett certifikat.
SetSslSocketFactory-metod

Signatur:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Beskrivning:

Använd den här metoden för att informera klienten om att den måste använda den angivna SSL-socketfabriken (i stället för standardinställningen) vid kommunikation med Intune.

Parametrar:

  • factory – SSL-socketfabriken som klienten ska använda för HTTPS-begäranden

Kastar:

  • IllegalArgumentException – genereras om anropas med en parameter som inte är giltig

Obs!

SSL Socket-fabriken måste anges om det behövs innan du kör de andra metoderna i den här klassen.

Integreringstestning

Validering och testning av att din lösning är korrekt integrerad med Intune är ett måste. Följande visar en översikt över stegen:

  1. Konfigurera ett utvärderingskonto för Intune.
  2. Registrera SCEP-servern i Azure Portal (i den här artikeln).
  3. Konfigurera SCEP-servern med ID:na och nyckeln som skapades när du registrerade SCEP-servern.
  4. Registrera enheter för att testa scenarierna i scenariotestmatrisen.
  5. Skapa en profil för betrott rotcertifikat för testcertifikatutfärdare.
  6. Skapa SCEP-profiler för att testa scenarierna som anges i scenariotestningsmatrisen.
  7. Tilldela profilerna till användare som har registrerat sina enheter.
  8. Vänta tills enheterna har synkroniserats med Intune. Eller synkronisera enheterna manuellt.
  9. Bekräfta att de betrodda rotcertifikaten och SCEP-profilerna har distribuerats till enheterna.
  10. Bekräfta att det betrodda rotcertifikatet är installerat på alla enheter.
  11. Bekräfta att SCEP-certifikaten för de tilldelade profilerna är installerade på alla enheter.
  12. Bekräfta att egenskaperna för de installerade certifikaten matchar egenskaperna som angetts i SCEP-profilen.
  13. Bekräfta att de utfärdade certifikaten visas korrekt i Administrationscenter för Intune

Se även