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.
Inhaltsverzeichnis
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

- Führe die Authentifizierung durch

- 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

- Anschließend musst du einen Namen für das Konfigurationsprofil in Intune eingeben

- Das ist alles, was du tun musst. Das Konfigurationsprofil ist nun erfolgreich in Intune erstellt.

- Jetzt kannst du das Konfigurationsprofil einer Gruppe zuweisen

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
The link to the blog post has an extra ‘v’ on the URL. Correct URL is:
the corrected Microsoft reference
Thanks for the hint. Is corrected.