Teilen über


Hinzufügen von Drittanbieter-Zertifizierungsstellen für SCEP zu Intune mithilfe von APIs

In Microsoft Intune können Sie Zertifizierungsstellen von Drittanbietern hinzufügen und diese Zertifizierungsstellen mithilfe des Simple Certificate Enrollment Protocol (SCEP) Zertifikate ausstellen und überprüfen lassen. Hinzufügen einer Drittanbieterzertifizierungsstelle bietet eine Übersicht über dieses Feature und beschreibt die Administratoraufgaben in Intune.

Es gibt auch einige Entwickleraufgaben, die eine Open-Source-Bibliothek verwenden, die Microsoft in GitHub.com veröffentlicht hat. Die Bibliothek enthält eine API, die:

  • Überprüft das von Intune dynamisch generierte SCEP-Kennwort.
  • Benachrichtigt Intune über die Zertifikate, die auf Geräten erstellt wurden, die SCEP-Anforderungen übermitteln

Mithilfe dieser API kann Ihr SCEP-Server eines Drittanbieters in die SCEP-Verwaltungslösung von Intune für MDM-Geräte integriert werden. Die Bibliothek abstrahiert Aspekte wie Authentifizierung, Dienststandort und die ODATA Intune-Dienst-API von ihren Benutzern.

SCEP-Verwaltungslösung

Integration der Drittanbieterzertifizierungsstelle SCEP in Microsoft Intune

Mithilfe von Intune erstellen Administratoren SCEP-Profile und weisen diese Profile dann MDM-Geräten zu. Die SCEP-Profile enthalten Parameter, z. B.:

  • Die URL des SCEP-Servers
  • Das vertrauenswürdige Stammzertifikat der Zertifizierungsstelle
  • Zertifikatattribute und mehr

Geräten, die bei Intune einchecken, wird das SCEP-Profil zugewiesen und mit diesen Parametern konfiguriert. Ein dynamisch generiertes SCEP-Anforderungskennwort wird von Intune erstellt und dann dem Gerät zugewiesen.

Diese Herausforderung enthält Folgendes:

  • Das dynamisch generierte Anforderungskennwort
  • Die Details zu den Parametern, die in der Zertifikatsignieranforderung (Certificate Signing Request, CSR) erwartet werden, die das Gerät an den SCEP-Server ausgibt
  • Die Ablaufzeit der Herausforderung

Intune verschlüsselt diese Informationen, signiert das verschlüsselte Blob und packt diese Details dann in das SCEP-Anforderungskennwort.

Geräte, die den SCEP-Server kontaktieren, um ein Zertifikat anzufordern, geben dann dieses SCEP-Abfragekennwort. Der SCEP-Server sendet die CSR und das verschlüsselte SCEP-Anforderungskennwort zur Überprüfung an Intune. Dieses Anforderungskennwort und die CSR müssen die Überprüfung bestehen, damit der SCEP-Server ein Zertifikat für das Gerät ausstellen kann. Wenn eine SCEP-Herausforderung überprüft wird, werden die folgenden Überprüfungen durchgeführt:

  • Überprüft die Signatur des verschlüsselten Blobs.
  • Überprüft, ob die Abfrage nicht abgelaufen ist.
  • Überprüft, ob das Profil weiterhin auf das Gerät ausgerichtet ist
  • Überprüft, ob die vom Gerät in der CSR angeforderten Zertifikateigenschaften mit den erwarteten Werten übereinstimmen.

Die SCEP-Verwaltungslösung umfasst auch die Berichterstellung. Ein Administrator kann Informationen zum Bereitstellungsstatus des SCEP-Profils und zu den Zertifikaten abrufen, die für die Geräte ausgestellt wurden.

Integration in Intune

Der Code für die Integration der Bibliothek in das Intune-SCEP steht im GitHub-Repository Microsoft/Intune-Resource-Access zum Download zur Verfügung.

Die Integration der Bibliothek in Ihre Produkte umfasst die folgenden Schritte. Diese Schritte erfordern Kenntnisse zum Arbeiten mit GitHub-Repositorys und zum Erstellen von Projektmappen und Projekten in Visual Studio.

  1. Registrieren, um Benachrichtigungen aus dem Repository zu erhalten

  2. Klonen oder Herunterladen des Repositorys

  3. Navigieren Sie im Ordner (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation) zu der benötigten Bibliotheksimplementierung\src\CsrValidation.

  4. Erstellen Sie die Bibliothek mithilfe der Anweisungen in der INFODATEI.

  5. Einschließen der Bibliothek in das Projekt, das Ihren SCEP-Server erstellt

  6. Führen Sie die folgenden Aufgaben auf dem SCEP-Server aus:

    • Ermöglichen Sie es dem Administrator , die Azure-Anwendungs-ID, den Azure-Anwendungsschlüssel und die Mandanten-ID (in diesem Artikel) zu konfigurieren, die die Bibliothek für die Authentifizierung verwendet. Administratoren sollten berechtigt sein, den Azure-Anwendungsschlüssel zu aktualisieren.
    • Identifizieren von SCEP-Anforderungen, die ein von Intune generiertes SCEP-Kennwort enthalten
    • Verwenden der API-Bibliothek "Anforderung überprüfen", um in Intune generierte SCEP-Kennwörter zu überprüfen
    • Verwenden Sie die Bibliotheksbenachrichtigungs-APIs, um Intune über Zertifikate zu benachrichtigen, die für SCEP-Anforderungen ausgestellt wurden, die über die von Intune generierten SCEP-Kennwörter verfügen. Benachrichtigen Sie Intune außerdem über Fehler, die bei der Verarbeitung dieser SCEP-Anforderungen auftreten können.
    • Vergewissern Sie sich, dass der Server genügend Informationen protokolliert, um Administratoren bei der Problembehandlung zu unterstützen.
  7. Abschließen von Integrationstests (in diesem Artikel) und Beheben von Problemen

  8. Geben Sie dem Kunden eine schriftliche Anleitung, in der Folgendes erläutert wird:

    • Wie der SCEP-Server im Microsoft Intune Admin Center integriert werden muss
    • Abrufen des Azure-Anwendungsbezeichners und des Azure-Anwendungsschlüssels, die zum Konfigurieren der Bibliothek erforderlich sind

Integrieren eines SCEP-Servers in Azure

Für die Authentifizierung bei Intune benötigt der SCEP-Server eine Azure-Anwendungs-ID, einen Azure-Anwendungsschlüssel und eine Mandanten-ID. Der SCEP-Server muss auch für den Zugriff auf die Intune-API autorisiert werden.

Um diese Daten zu erhalten, meldet sich der SCEP-Serveradministrator beim Azure-Portal an, registriert die Anwendung, erteilt der Anwendung sowohl die Berechtigung Microsoft Intune API\SCEP challenge validation als auch die Berechtigung Application.Read.All , erstellt einen Schlüssel für die Anwendung und lädt dann die Anwendungs-ID, den zugehörigen Schlüssel und die Mandanten-ID herunter.

Anleitungen zum Registrieren einer Anwendung und zum Abrufen der IDs und Schlüssel finden Sie unter Verwenden des Portals zum Erstellen einer Microsoft Entra-Anwendung und eines Dienstprinzipals für den Zugriff auf Ressourcen.

Java-Bibliotheks-API

Die Java-Bibliothek wird als Maven-Projekt implementiert, das seine Abhängigkeiten abruft, wenn es erstellt wird. Die API wird von der -Klasse unter dem com.microsoft.intune.scepvalidationIntuneScepServiceClient -Namespace implementiert.

IntuneScepServiceClient-Klasse

Die IntuneScepServiceClient -Klasse enthält die Methoden, die vom SCEP-Dienst zum Überprüfen von SCEP-Kennwörtern, zum Benachrichtigen von Intune über erstellte Zertifikate und zum Auflisten von Fehlern verwendet werden.

IntuneScepServiceClient-Konstruktor

Signatur:

IntuneScepServiceClient(
    Properties configProperties)

Beschreibung:

Instanziiert und konfiguriert ein IntuneScepServiceClient -Objekt.

Parameter:

  • configProperties : Eigenschaftenobjekt mit Clientkonfigurationsinformationen

Die Konfiguration muss die folgenden Eigenschaften enthalten:

  • AAD_APP_ID="Die während des Onboardingvorgangs abgerufene Azure-Anwendungs-ID"
  • AAD_APP_KEY="Der Azure-Anwendungsschlüssel, der während des Onboardingprozesses abgerufen wurde"
  • TENANT="Die Mandanten-ID, die während des Onboardingprozesses abgerufen wurde"
  • PROVIDER_NAME_AND_VERSION="Informationen, die zur Identifizierung Ihres Produkts und seiner Version verwendet werden"

Wenn Ihre Lösung einen Proxy mit oder ohne Authentifizierung erfordert, können Sie die folgenden Eigenschaften hinzufügen:

  • PROXY_HOST="Der Host, auf dem der Proxy gehostet wird."
  • PROXY_PORT="Der Port, an dem der Proxy lauscht."
  • PROXY_USER="Der Benutzername, der verwendet werden soll, wenn der Proxy die Standardauthentifizierung verwendet."
  • PROXY_PASS="Das Kennwort, das verwendet werden soll, wenn der Proxy die Standardauthentifizierung verwendet."

Löst Folgendes aus:

  • IllegalArgumentException : Wird ausgelöst, wenn der Konstruktor ohne ein ordnungsgemäßes Eigenschaftsobjekt ausgeführt wird.

Wichtig

Es empfiehlt sich, eine Instanz dieser Klasse zu instanziieren und zum Verarbeiten mehrerer SCEP-Anforderungen zu verwenden. Dadurch wird der Aufwand reduziert, da Authentifizierungstoken und Dienststandortinformationen zwischengespeichert werden.

Sicherheitshinweise
Der SCEP-Serverimplementierer muss die in den Konfigurationseigenschaften eingegebenen Daten, die im Speicher gespeichert werden, vor Manipulation und Offenlegung schützen. Es wird empfohlen, die richtigen ACLs und Verschlüsselung zu verwenden, um die Informationen zu schützen.

ValidateRequest-Methode

Signatur:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Beschreibung:

Überprüft eine SCEP-Zertifikatanforderung.

Parameter:

  • transactionId: Die SCEP-Transaktions-ID
  • certificateRequest : DER-codierte PKCS #10 Certificate Request Base64-codiert als Zeichenfolge

Löst Folgendes aus:

  • IllegalArgumentException : Wird ausgelöst, wenn mit einem ungültigen Parameter aufgerufen wird.
  • IntuneScepServiceException : Wird ausgelöst, wenn festgestellt wird, dass die Zertifikatanforderung ungültig ist.
  • Ausnahme : Wird ausgelöst, wenn ein nicht erwarteter Fehler auftritt.

Wichtig

Von dieser Methode ausgelöste Ausnahmen sollten vom Server protokolliert werden. Beachten Sie, dass die IntuneScepServiceException Eigenschaften detaillierte Informationen darüber enthalten, warum die Überprüfung der Zertifikatanforderung fehlgeschlagen ist.

Sicherheitshinweise:

  • Wenn diese Methode eine Ausnahme auslöst, darf der SCEP-Server kein Zertifikat für den Client ausstellen.
  • Fehler bei der Überprüfung von SCEP-Zertifikatanforderungen können auf ein Problem in der Intune-Infrastruktur hinweisen. Oder sie könnten angeben, dass ein Angreifer versucht, ein Zertifikat zu erhalten.
SendSuccessNotification-Methode

Signatur:

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

Beschreibung:

Benachrichtigt Intune, dass im Rahmen der Verarbeitung einer SCEP-Anforderung ein Zertifikat erstellt wird.

Parameter:

  • transactionId: Die SCEP-Transaktions-ID
  • certificateRequest : DER-codierte PKCS #10 Certificate Request Base64-codiert als Zeichenfolge
  • certThumprint : SHA1-Hash des Fingerabdrucks des bereitgestellten Zertifikats
  • certSerialNumber : Seriennummer des bereitgestellten Zertifikats
  • certExpirationDate : Ablaufdatum des bereitgestellten Zertifikats. Die Datum/Uhrzeit-Zeichenfolge sollte als WEB-UTC-Zeit (JJJJ-MM-TTThh:mm:sss.sssTZD) ISO 8601 formatiert werden.
  • certIssuingAuthority : Name der Zertifizierungsstelle, die das Zertifikat ausgestellt hat

Löst Folgendes aus:

  • IllegalArgumentException : Wird ausgelöst, wenn mit einem ungültigen Parameter aufgerufen wird.
  • IntuneScepServiceException : Wird ausgelöst, wenn festgestellt wird, dass die Zertifikatanforderung ungültig ist.
  • Ausnahme : Wird ausgelöst, wenn ein nicht erwarteter Fehler auftritt.

Wichtig

Von dieser Methode ausgelöste Ausnahmen sollten vom Server protokolliert werden. Beachten Sie, dass die IntuneScepServiceException Eigenschaften detaillierte Informationen darüber enthalten, warum die Überprüfung der Zertifikatanforderung fehlgeschlagen ist.

Sicherheitshinweise:

  • Wenn diese Methode eine Ausnahme auslöst, darf der SCEP-Server kein Zertifikat für den Client ausstellen.
  • Fehler bei der Überprüfung von SCEP-Zertifikatanforderungen können auf ein Problem in der Intune-Infrastruktur hinweisen. Oder sie könnten angeben, dass ein Angreifer versucht, ein Zertifikat zu erhalten.
SendFailureNotification-Methode

Signatur:

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

Beschreibung:

Benachrichtigt Intune, dass beim Verarbeiten einer SCEP-Anforderung ein Fehler aufgetreten ist. Diese Methode sollte nicht für Ausnahmen aufgerufen werden, die von den Methoden dieser Klasse ausgelöst werden.

Parameter:

  • transactionId: Die SCEP-Transaktions-ID
  • certificateRequest : DER-codierte PKCS #10 Certificate Request Base64-codiert als Zeichenfolge
  • hResult : Win32-Fehlercode, der den aufgetretenen Fehler am besten beschreibt. Weitere Informationen finden Sie unter Win32-Fehlercodes.
  • errorDescription: Beschreibung des aufgetretenen Fehlers

Löst Folgendes aus:

  • IllegalArgumentException : Wird ausgelöst, wenn mit einem ungültigen Parameter aufgerufen wird.
  • IntuneScepServiceException : Wird ausgelöst, wenn festgestellt wird, dass die Zertifikatanforderung ungültig ist.
  • Ausnahme : Wird ausgelöst, wenn ein nicht erwarteter Fehler auftritt.

Wichtig

Von dieser Methode ausgelöste Ausnahmen sollten vom Server protokolliert werden. Beachten Sie, dass die IntuneScepServiceException Eigenschaften detaillierte Informationen darüber enthalten, warum die Überprüfung der Zertifikatanforderung fehlgeschlagen ist.

Sicherheitshinweise:

  • Wenn diese Methode eine Ausnahme auslöst, darf der SCEP-Server kein Zertifikat für den Client ausstellen.
  • Fehler bei der Überprüfung von SCEP-Zertifikatanforderungen können auf ein Problem in der Intune-Infrastruktur hinweisen. Oder sie könnten angeben, dass ein Angreifer versucht, ein Zertifikat zu erhalten.
SetSslSocketFactory-Methode

Signatur:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Beschreibung:

Verwenden Sie diese Methode, um den Client darüber zu informieren, dass er bei der Kommunikation mit Intune die angegebene SSL-Socketfactory (anstelle der Standardeinstellung) verwenden muss.

Parameter:

  • factory : Die SSL-Socketfactory, die der Client für HTTPS-Anforderungen verwenden soll.

Löst Folgendes aus:

  • IllegalArgumentException : Wird ausgelöst, wenn mit einem ungültigen Parameter aufgerufen wird.

Hinweis

Die SSL Socket Factory muss bei Bedarf festgelegt werden, bevor die anderen Methoden dieser Klasse ausgeführt werden.

Integrationstests

Es ist ein Muss, zu überprüfen und zu testen, dass Ihre Lösung ordnungsgemäß in Intune integriert ist. Im Folgenden finden Sie eine Übersicht über die Schritte:

  1. Richten Sie ein Intune-Testkonto ein.
  2. Integrieren Sie den SCEP-Server im Azure-Portal (in diesem Artikel).
  3. Konfigurieren Sie den SCEP-Server mit den IDs und dem Schlüssel, die beim Onboarding Ihres SCEP-Servers erstellt wurden.
  4. Registrieren Sie Geräte , um die Szenarien in der Szenariotestmatrix zu testen.
  5. Erstellen Sie ein vertrauenswürdiges Stammzertifikatprofil für Ihre Testzertifizierungsstelle.
  6. Erstellen Sie SCEP-Profile, um die in der Szenariotestmatrix aufgeführten Szenarien zu testen.
  7. Weisen Sie die Profile Benutzern zu, die ihre Geräte registriert haben.
  8. Warten Sie, bis die Geräte mit Intune synchronisiert wurden. Oder synchronisieren Sie die Geräte manuell.
  9. Vergewissern Sie sich, dass das vertrauenswürdige Stammzertifikat und die SCEP-Profile auf den Geräten bereitgestellt werden.
  10. Vergewissern Sie sich, dass das vertrauenswürdige Stammzertifikat auf allen Geräten installiert ist.
  11. Vergewissern Sie sich, dass die SCEP-Zertifikate für die zugewiesenen Profile auf allen Geräten installiert sind.
  12. Vergewissern Sie sich, dass die Eigenschaften der installierten Zertifikate mit den im SCEP-Profil festgelegten Eigenschaften übereinstimmen.
  13. Vergewissern Sie sich, dass die ausgestellten Zertifikate im Intune Admin Center ordnungsgemäß aufgeführt sind.

Siehe auch