Add Trusted Publisher Certificates in Intune with PowerShell

Trusted-Publisher-Zertifikate in Intune mit PowerShell hinzufügen

Microsoft hat in einem Blogbeitrag (Adding a Certificate to Trusted Publishers using Intune) beschrieben, wie man ein benutzerdefiniertes Konfigurationsprofil erstellt, um ein Zertifikat in den Trusted-Publisher-Store zu bekommen. Da mehrere manuelle Schritte nötig sind, um den Thumbprint aus dem Zertifikat auszulesen und ihn in einen Base64-String zu kodieren, habe ich ein Skript geschrieben, das all dies für dich erledigt und automatisch eine neue Konfigurationsrichtlinie anlegt.

Warum ein Trusted-Publisher-Zertifikat mit Intune verteilen

Wenn du eigene Anwendungen, Skripte oder Treiber signierst, vertraut Windows ihnen nur dann ohne Rückfrage, wenn das Signaturzertifikat im Trusted-Publisher-Store des lokalen Computers liegt. Verteilst du das Zertifikat über Intune, erhält jedes verwaltete Gerät es automatisch. Die Benutzer sehen keine Sicherheitswarnungen mehr und deine signierte Software läuft einfach durch. Genau diese Verteilung im großen Stil von Hand vorzunehmen ist nicht realistisch, weshalb die Automatisierung so wertvoll ist.

Wie funktioniert es

Der Zertifikats-Thumbprint wird ausgelesen und aus dem Zertifikat ein Base64-String erzeugt:

$certThumbprint = ([System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certificatePath)).thumbprint
$encodeCertificate = [System.Convert]::ToBase64String(([System.Security.Cryptography.X509Certificates.X509Certificate2]::new($certificatePath)).Export('Cert'), 'InsertLineBreaks')

Danach wird der omaUri erstellt, der den Thumbprint enthält:

$omaUri = "./Device/Vendor/MSFT/RootCATrustedCertificates/TrustedPublisher/$certThumbprint/EncodedCertificate"

Mit diesen Informationen wird das JSON erstellt und anschließend in Intune importiert. Für einen weiteren Intune-fokussierten Workflow wirf einen Blick auf Easy and Effective App Management in Intune.

$customConfigProfile = @"
{
    "@odata.type": "#microsoft.graph.windows10CustomConfiguration",
    "description": "",
    "displayName": "$confProfileName",
    "omaSettings": [
        {
            "@odata.type": "#microsoft.graph.omaSettingString",
            "displayName": "$fileName",
            "description": "",
            "omaUri": "$omaUri",
            "value":  "$encodeCertificate"
        }
    ]
}
"@

Import-ConfigurationProfile  -ConfigProfile $customConfigProfile

Was du tun musst

  • Lade das Skript aus meinem GitHub-Repository herunter
  • Führe das PowerShell-Skript Add-CertificateToTrustedStore.ps1 aus
  • Gib den UPN ein, um ein Auth-Token für die Graph-API zu erhalten
Microsoft Intune Konfigurationsprofil für vertrauenswürdiges Zertifikat
  • Führe die Authentifizierung durch
Microsoft Intune Konfigurationsprofil für vertrauenswürdige Herausgeber von Zertifikaten
  • Wenn die Authentifizierung abgeschlossen ist, öffnet sich ein Dateibrowser. Hier kannst du das Zertifikat (.cer-Datei Base-64-codiert X.509) auswählen, das du als vertrauenswürdiges Zertifikat verteilen möchtest
Microsoft Intune Skript für Zertifikats-Konfigurationsprofil
  • Anschließend musst du einen Namen für das Konfigurationsprofil in Intune eingeben
Microsoft Intune Konfigurationsprofil für Trusted-Publisher-Zertifikat
  • Das ist alles, was du tun musst. Das Konfigurationsprofil ist nun erfolgreich in Intune erstellt.
Microsoft Intune Konfigurationsprofil für Trusted-Publisher-Zertifikat
  • Jetzt kannst du das Konfigurationsprofil einer Gruppe zuweisen
Trusted-Publisher-Zertifikate in Intune mit PowerShell hinzufügen

Ich hoffe, ich konnte dir mit diesem Skript die Arbeit erleichtern, ein Konfigurationsprofil zu erstellen, das ein Zertifikat in den Trusted-Publisher-Store importiert.

Bleib gesund, viele Grüße
Jannik

Häufige Stolperfallen

Der häufigste Fehler ist, das Zertifikat im falschen Format zu exportieren. Das Skript erwartet eine Base-64-codierte X.509-Datei (eine .cer-Datei mit dem Header -----BEGIN CERTIFICATE-----) und kein DER-codiertes Binärformat oder eine .pfx-Datei, die noch den privaten Schlüssel enthält. Ein Trusted-Publisher-Eintrag benötigt immer nur das öffentliche Zertifikat, verteile also niemals den privaten Schlüssel an deine Geräte. Falls Geräte nach dem Anwenden des Profils weiterhin Rückfragen anzeigen, prüfe, ob das Zertifikat wirklich im TrustedPublisher-Store landet und nicht im Root- oder CA-Store, denn der OMA-URI-Pfad entscheidet über das Ziel.

Beachte außerdem, dass der OMA-URI-Schlüssel den Thumbprint enthält. Wenn du das Signaturzertifikat irgendwann erneuerst oder austauschst, ändert sich der Thumbprint und du brauchst ein neues Konfigurationsprofil statt einer Bearbeitung des alten. Halte das Skript dafür griffbereit, dann dauert ein erneuter Lauf für ein neues Zertifikat nur eine Minute.

So überprüfst du die Verteilung

Sobald das Profil im Intune-Portal als Erfolgreich angezeigt wird, kontrolliere das Ergebnis auf einem Zielgerät. Öffne certlm.msc, klappe Vertrauenswürdige Herausgeber > Zertifikate auf und prüfe, ob dein Zertifikat mit dem erwarteten Thumbprint erscheint. Alternativ kannst du in einer PowerShell-Sitzung mit erhöhten Rechten Get-ChildItem Cert:\LocalMachine\TrustedPublisher ausführen, um den Store über die Befehlszeile aufzulisten. Wenn du danach eine deiner signierten Anwendungen oder Skripte startest, sollte keine Sicherheitswarnung mehr erscheinen, was der eigentliche Beweis dafür ist, dass alles durchgängig funktioniert hat.

Update 02.08.2022:

Du kannst mein Skript auch aus der PowerShell Gallery herunterladen:

Wenn du an weiteren Intune-Tipps interessiert bist, gefällt dir vielleicht auch mein Beitrag darüber, wie man Geräte ohne Wipe erneut registriert.

Wenn du gerade erst mit Intune anfängst, gefällt dir vielleicht auch mein Intune Quick Start Guide.

Wenn du Konfigurationen schrittweise ausrollen möchtest, sieh dir meinen Beitrag über das Erstellen von Smart Groups für das wellenweise Deployment von Konfigurationen in Intune an.

Install-Script -Name Add-CertificateToTrustedStore

2 thoughts on “Trusted-Publisher-Zertifikate in Intune mit PowerShell hinzufügen

  1. The link to the blog post has an extra ‘v’ on the URL. Correct URL is:
    the corrected Microsoft reference

Comments are closed.