Dodawanie urzędów certyfikacji innych firm dla protokołu SCEP do usługi Intune przy użyciu interfejsów API

W Microsoft Intune można dodać urzędy certyfikacji innych firm, a te urzędy certyfikacji wystawiają i weryfikują certyfikaty przy użyciu prostego protokołu rejestracji certyfikatów (SCEP). Dodanie urzędu certyfikacji innej firmy zawiera omówienie tej funkcji i opisuje zadania administratora w usłudze Intune.

Istnieją również pewne zadania deweloperskie korzystające z biblioteki open source opublikowanej przez firmę Microsoft w GitHub.com. Biblioteka zawiera interfejs API, który:

  • Weryfikuje hasło protokołu SCEP generowane dynamicznie przez usługę Intune
  • Powiadamia usługę Intune o certyfikatach utworzonych na urządzeniach przesyłających żądania SCEP

Korzystając z tego interfejsu API, serwer SCEP innej firmy integruje się z rozwiązaniem do zarządzania SCEP usługi Intune dla urządzeń MDM. Biblioteka zawiera abstrakcję takich aspektów jak uwierzytelnianie, lokalizacja usługi i interfejs API usługi ODATA Intune od użytkowników.

Rozwiązanie do zarządzania SCEP

Jak protokół SCEP urzędu certyfikacji innej firmy integruje się z Microsoft Intune

Za pomocą usługi Intune administratorzy tworzą profile protokołu SCEP, a następnie przypisują te profile do urządzeń MDM. Profile protokołu SCEP obejmują parametry, takie jak:

  • Adres URL serwera SCEP
  • Zaufany certyfikat główny urzędu certyfikacji
  • Atrybuty certyfikatu i nie tylko

Urządzenia zaewidencjonowane w usłudze Intune mają przypisany profil protokołu SCEP i są skonfigurowane przy użyciu tych parametrów. Dynamicznie wygenerowane hasło wyzwania SCEP jest tworzone przez usługę Intune, a następnie przypisywane do urządzenia.

To wyzwanie zawiera:

  • Dynamicznie wygenerowane hasło wyzwania
  • Szczegóły dotyczące parametrów oczekiwanych w żądaniu podpisania certyfikatu (CSR), które urządzenie wystawia na serwerze SCEP
  • Czas wygaśnięcia wyzwania

Usługa Intune szyfruje te informacje, podpisuje zaszyfrowany obiekt blob, a następnie pakuje te szczegóły do hasła wyzwania SCEP.

Urządzenia kontaktujące się z serwerem SCEP w celu zażądania certyfikatu podają to hasło wyzwania SCEP. Serwer SCEP wysyła csr i zaszyfrowane hasło wyzwania SCEP do usługi Intune w celu weryfikacji. To hasło wyzwania i plik CSR muszą przejść weryfikację, aby serwer SCEP wystawił certyfikat na urządzeniu. Po zweryfikowaniu wyzwania SCEP wykonywane są następujące testy:

  • Weryfikuje podpis zaszyfrowanego obiektu blob
  • Sprawdza, czy wyzwanie nie wygasło
  • Sprawdza, czy profil jest nadal przeznaczony dla urządzenia
  • Sprawdza, czy właściwości certyfikatu żądane przez urządzenie w pliku CSR są zgodne z oczekiwanymi wartościami

Rozwiązanie do zarządzania SCEP obejmuje również raportowanie. Administrator może uzyskać informacje o stanie wdrożenia profilu protokołu SCEP oraz o certyfikatach wystawionych na urządzeniach.

Integracja z usługą Intune

Kod biblioteki do integracji z programem Intune SCEP jest dostępny do pobrania w repozytorium GitHub Microsoft/Intune-Resource-Access.

Integracja biblioteki z produktami obejmuje następujące kroki. Te kroki wymagają wiedzy na temat pracy z repozytoriami GitHub oraz tworzenia rozwiązań i projektów w programie Visual Studio.

  1. Zarejestruj się, aby otrzymywać powiadomienia z repozytorium

  2. Klonowanie lub pobieranie repozytorium

  3. Przejdź do implementacji biblioteki, której potrzebujesz w folderze \src\CsrValidation (https://github.com/Microsoft/Intune-Resource-Access/tree/develop/src/CsrValidation)

  4. Skompiluj bibliotekę przy użyciu instrukcji w pliku README

  5. Uwzględnij bibliotekę w projekcie, który kompiluje serwer SCEP

  6. Wykonaj następujące zadania na serwerze SCEP:

    • Zezwalaj administratorowi na skonfigurowanie identyfikatora aplikacja systemu Azure, klucza aplikacja systemu Azure i identyfikatora dzierżawy (w tym artykule), których biblioteka używa do uwierzytelniania. Administratorzy powinni mieć możliwość aktualizowania klucza aplikacja systemu Azure.
    • Identyfikowanie żądań SCEP zawierających hasło SCEP wygenerowane przez usługę Intune
    • Weryfikowanie haseł SCEP generowanych przez usługę Intune za pomocą biblioteki interfejsu API weryfikacji żądań
    • Interfejsy API powiadomień biblioteki umożliwiają powiadamianie usługi Intune o certyfikatach wystawionych dla żądań protokołu SCEP, które mają hasła SCEP wygenerowane przez usługę Intune. Powiadamiaj również usługę Intune o błędach, które mogą wystąpić podczas przetwarzania tych żądań protokołu SCEP.
    • Upewnij się, że serwer rejestruje wystarczającą ilość informacji, aby ułatwić administratorom rozwiązywanie problemów
  7. Zakończ testowanie integracji (w tym artykule) i rozwiązuj wszelkie problemy

  8. Przekaż klientowi pisemne wskazówki, które objaśniają:

    • Jak należy dołączyć serwer SCEP w centrum administracyjnym Microsoft Intune
    • Jak uzyskać identyfikator aplikacja systemu Azure i klucz aplikacja systemu Azure potrzebny do skonfigurowania biblioteki

Dołączanie serwera SCEP na platformie Azure

Aby uwierzytelnić się w usłudze Intune, serwer SCEP wymaga identyfikatora aplikacja systemu Azure, klucza aplikacja systemu Azure i identyfikatora dzierżawy. Serwer SCEP musi również mieć uprawnienia dostępu do interfejsu API usługi Intune.

Aby uzyskać te dane, administrator serwera SCEP loguje się do Azure Portal, rejestruje aplikację, nadaje aplikacji zarówno uprawnienie weryfikacji Microsoft Intune API\SCEP challenge, jak i uprawnienie Application.Read.All, tworzy klucz dla aplikacji, a następnie pobiera identyfikator aplikacji, jej klucz i identyfikator dzierżawy.

Aby uzyskać wskazówki dotyczące rejestrowania aplikacji i uzyskiwania identyfikatorów i kluczy, zobacz Używanie portalu do tworzenia aplikacji Microsoft Entra i jednostki usługi w celu uzyskania dostępu do zasobów.

Interfejs API biblioteki Języka Java

Biblioteka Java jest implementowana jako projekt Maven, który pobiera zależności po jego utworzeniu. Interfejs API jest implementowany w com.microsoft.intune.scepvalidation przestrzeni nazw przez klasę IntuneScepServiceClient .

IntuneScepServiceClient, klasa

Klasa IntuneScepServiceClient zawiera metody używane przez usługę SCEP do weryfikowania haseł protokołu SCEP, powiadamiania usługi Intune o utworzonych certyfikatach i wyświetlania listy błędów.

Konstruktor IntuneScepServiceClient

Podpis:

IntuneScepServiceClient(
    Properties configProperties)

Opis:

Tworzy wystąpienia i konfiguruje IntuneScepServiceClient obiekt.

Parametry:

  • configProperties — obiekt właściwości zawierający informacje o konfiguracji klienta

Konfiguracja musi zawierać następujące właściwości:

  • AAD_APP_ID="Identyfikator aplikacja systemu Azure uzyskany podczas procesu dołączania"
  • AAD_APP_KEY="Klucz aplikacja systemu Azure uzyskany podczas procesu dołączania"
  • TENANT="Identyfikator dzierżawy uzyskany podczas procesu dołączania"
  • PROVIDER_NAME_AND_VERSION="Informacje używane do identyfikacji produktu i jego wersji"

Jeśli rozwiązanie wymaga serwera proxy z uwierzytelnianiem lub bez uwierzytelniania, możesz dodać następujące właściwości:

  • PROXY_HOST="Host jest hostowany na serwerze proxy".
  • PROXY_PORT="Port, na który nasłuchuje serwer proxy".
  • PROXY_USER="Nazwa użytkownika używana, jeśli serwer proxy używa uwierzytelniania podstawowego".
  • PROXY_PASS="Hasło do użycia, jeśli serwer proxy używa uwierzytelniania podstawowego".

Rzuty:

  • IllegalArgumentException — zgłaszany, jeśli konstruktor jest wykonywany bez odpowiedniego obiektu właściwości.

Ważna

Najlepiej utworzyć wystąpienie tej klasy i użyć go do przetwarzania wielu żądań SCEP. Zmniejsza to obciążenie, ponieważ buforuje tokeny uwierzytelniania i informacje o lokalizacji usługi.

Informacje o zabezpieczeniach
Implementator serwera SCEP musi chronić dane wprowadzone we właściwościach konfiguracji utrwalonych w magazynie przed naruszeniami i ujawnieniem. Zaleca się użycie odpowiednich list ACL i szyfrowania w celu zabezpieczenia informacji.

ValidateRequest, metoda

Podpis:

void ValidateRequest(
    String transactionId,
    String certificateRequest)

Opis:

Weryfikuje żądanie certyfikatu SCEP.

Parametry:

  • transactionId — identyfikator transakcji SCEP
  • certificateRequest — kodowany przez der PKCS #10 żądanie certyfikatu Base64 zakodowane jako ciąg

Rzuty:

  • IllegalArgumentException — zgłaszany w przypadku wywołania z nieprawidłowym parametrem
  • IntuneScepServiceException — zgłaszany, jeśli okaże się, że żądanie certyfikatu jest nieprawidłowe
  • Wyjątek — zgłaszany w przypadku napotkania niezau oczekiwanego błędu

Ważna

Wyjątki zgłaszane przez tę metodę powinny być rejestrowane przez serwer. Należy pamiętać IntuneScepServiceException , że właściwości zawierają szczegółowe informacje o tym, dlaczego weryfikacja żądania certyfikatu nie powiodła się.

Uwagi dotyczące zabezpieczeń:

  • Jeśli ta metoda zgłasza wyjątek, serwer SCEP nie może wystawiać certyfikatu klientowi.
  • Błędy sprawdzania poprawności żądania certyfikatu protokołu SCEP mogą wskazywać na problem w infrastrukturze usługi Intune. Mogą też wskazywać, że osoba atakująca próbuje uzyskać certyfikat.
SendSuccessNotification, metoda

Podpis:

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

Opis:

Powiadamia usługę Intune o utworzeniu certyfikatu w ramach przetwarzania żądania SCEP.

Parametry:

  • transactionId — identyfikator transakcji SCEP
  • certificateRequest — kodowany przez der PKCS #10 żądanie certyfikatu Base64 zakodowane jako ciąg
  • certThumprint — skrót SHA1 odcisku palca aprowizowanego certyfikatu
  • certSerialNumber — numer seryjny aprowizowanego certyfikatu
  • certExpirationDate — data wygaśnięcia aprowizowanego certyfikatu. Ciąg daty i godziny powinien być sformatowany jako internetowy czas UTC (RRRR-MM-DDThh:mm:ss.sssTZD) ISO 8601.
  • certIssuingAuthority — nazwa urzędu, który wystawił certyfikat

Rzuty:

  • IllegalArgumentException — zgłaszany w przypadku wywołania z nieprawidłowym parametrem
  • IntuneScepServiceException — zgłaszany, jeśli okaże się, że żądanie certyfikatu jest nieprawidłowe
  • Wyjątek — zgłaszany w przypadku napotkania niezau oczekiwanego błędu

Ważna

Wyjątki zgłaszane przez tę metodę powinny być rejestrowane przez serwer. Należy pamiętać IntuneScepServiceException , że właściwości zawierają szczegółowe informacje o tym, dlaczego weryfikacja żądania certyfikatu nie powiodła się.

Uwagi dotyczące zabezpieczeń:

  • Jeśli ta metoda zgłasza wyjątek, serwer SCEP nie może wystawiać certyfikatu klientowi.
  • Błędy sprawdzania poprawności żądania certyfikatu protokołu SCEP mogą wskazywać na problem w infrastrukturze usługi Intune. Mogą też wskazywać, że osoba atakująca próbuje uzyskać certyfikat.
SendFailureNotification, metoda

Podpis:

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

Opis:

Powiadamia usługę Intune, że wystąpił błąd podczas przetwarzania żądania protokołu SCEP. Ta metoda nie powinna być wywoływana w przypadku wyjątków zgłaszanych przez metody tej klasy.

Parametry:

  • transactionId — identyfikator transakcji SCEP
  • certificateRequest — kodowany przez der PKCS #10 żądanie certyfikatu Base64 zakodowane jako ciąg
  • hResult — kod błędu Win32, który najlepiej opisuje napotkany błąd. Zobacz Kody błędów Win32
  • errorDescription — opis napotkanego błędu

Rzuty:

  • IllegalArgumentException — zgłaszany w przypadku wywołania z nieprawidłowym parametrem
  • IntuneScepServiceException — zgłaszany, jeśli okaże się, że żądanie certyfikatu jest nieprawidłowe
  • Wyjątek — zgłaszany w przypadku napotkania niezau oczekiwanego błędu

Ważna

Wyjątki zgłaszane przez tę metodę powinny być rejestrowane przez serwer. Należy pamiętać IntuneScepServiceException , że właściwości zawierają szczegółowe informacje o tym, dlaczego weryfikacja żądania certyfikatu nie powiodła się.

Uwagi dotyczące zabezpieczeń:

  • Jeśli ta metoda zgłasza wyjątek, serwer SCEP nie może wystawiać certyfikatu klientowi.
  • Błędy sprawdzania poprawności żądania certyfikatu protokołu SCEP mogą wskazywać na problem w infrastrukturze usługi Intune. Mogą też wskazywać, że osoba atakująca próbuje uzyskać certyfikat.
SetSslSocketFactory, metoda

Podpis:

void SetSslSocketFactory(
    SSLSocketFactory factory)

Opis:

Ta metoda służy do informowania klienta, że podczas komunikacji z usługą Intune musi używać określonej fabryki gniazd SSL (zamiast domyślnej).

Parametry:

  • factory — fabryka gniazd SSL, która powinna być używana przez klienta na potrzeby żądań HTTPS

Rzuty:

  • IllegalArgumentException — zgłaszany w przypadku wywołania z nieprawidłowym parametrem

Uwaga

Fabrykę gniazd SSL należy ustawić, jeśli jest to wymagane przed wykonaniem innych metod tej klasy.

Testowanie integracji

Weryfikowanie i testowanie, czy rozwiązanie jest prawidłowo zintegrowane z usługą Intune, jest koniecznością. Poniżej przedstawiono omówienie kroków:

  1. Konfigurowanie konta wersji próbnej usługi Intune.
  2. Dołącz serwer SCEP do Azure Portal (w tym artykule).
  3. Skonfiguruj serwer SCEP przy użyciu identyfikatorów i klucza utworzonych podczas dołączania serwera SCEP.
  4. Rejestrowanie urządzeń w celu przetestowania scenariuszy w macierzy testowania scenariuszy.
  5. Utwórz profil zaufanego certyfikatu głównego dla testowego urzędu certyfikacji.
  6. Utwórz profile protokołu SCEP, aby przetestować scenariusze wymienione w macierzy testowania scenariuszy.
  7. Przypisz profile do użytkowników , którzy zarejestrowali swoje urządzenia.
  8. Poczekaj na synchronizację urządzeń z usługą Intune. Możesz też ręcznie zsynchronizować urządzenia.
  9. Upewnij się, że profile zaufanego certyfikatu głównego i protokołu SCEP są wdrażane na urządzeniach.
  10. Upewnij się, że zaufany certyfikat główny jest zainstalowany na wszystkich urządzeniach.
  11. Upewnij się, że certyfikaty SCEP dla przypisanych profilów są zainstalowane na wszystkich urządzeniach.
  12. Upewnij się, że właściwości zainstalowanych certyfikatów są zgodne z właściwościami ustawionymi w profilu protokołu SCEP.
  13. Upewnij się, że wystawione certyfikaty są prawidłowo wymienione w centrum administracyjnym usługi Intune

Zobacz też