App-V 5, Integration in Configuration Manager und PowerShell Policy


Ausgangssituation

Die App-V 5.0 SP1 Client GUI ließ sich nicht öffnen, nach einem Doppelklick auf das Icon im System Tray passierte nichts. Stattdessen wurden im Event Log unter Applications and Services\Microsoft\AppV\Client im Operational Log Events 1026 gefolgt von Event 1000 und 1001 erzeugt.

clip_image002

Event 1026 enthält eine System.Windows.Markup.XamlParseException für die AppVClientUX.exe

Event 1000: Faulting application name: AppVClientUX.exe […] Exception code: 0xe0434352

Zusätzlich wurden App-V Pakete über System Center 2012 Configuration Manager nicht erfolgreich verteilt. Hierbei kam es zu einer Zeitüberschreitung. Ein Blick in die AppEnforce.log auf dem Client zeigte, dass der Configuration Manager Client beim Aufruf des Kommandos

"C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe" -ExecutionPolicy Bypass import-module ‘C:\Program Files\Microsoft Application Virtualization\Client\AppvClient\AppvClient.psd1’; Get-AppVClientPublishingServer | Remove-AppVClientPublishing Server

stehen blieb.

Ursache

Die Ausführungsrichtlinie für PowerShell war über Gruppenrichtlinie auf „AllSigned“ konfiguriert.

clip_image004

Dies führt dazu, dass PowerShell bei einem Aufruf eines Moduls den Herausgeber verifizieren möchte. Die PowerShell-Commandlets des App-V Clients sind entsprechend signiert, jedoch ist der Herausgeber nicht im Zertifikatsspeicher „Vertrauenswürdige Herausgeber“ des Systems oder des Benutzers hinterlegt.

In einer interaktiven PowerShell Sitzung wird der Anwender gefragt, ob er dem Herausgeber vertrauen möchte. Wenn dieser mit „Immer“ (Always run) antwortet, wird das Code Signing Zertifikat mit dem das Modul signiert wurde, in den Zertifikatsspeicher „Vertrauenswürde Herausgeber“ des aktuellen Benutzers importiert.

clip_image006

Diese interaktive Rückfrage führt nun dazu, dass die durch den System Center 2012 Configuration Manager Client ausgeführten PowerShell Kommandos auf eine Eingabe warten, dementsprechend keinen Rückgabewert liefern und schließlich durch einen Time-Out fehlschlagen.

Lösungsvarianten

Ändern der PowerShell Ausführungsrichtlinie

Die einfachste Variante, sowohl die Client GUI wieder lauffähig zu machen, als auch die Verteilung über System Center 2012 Configuration Manager zu ermöglichen, ist, die Ausführungsrichtlinie weniger restriktiv zu setzen (beispielsweise „RemoteSigned“). Hat die Einstellung über Gruppenrichtlinien auf „AllSigned“ jedoch einen guten Grund, möchte man dies sicherlich nicht. Dies führt direkt zur zweiten, präferierten Lösung:

Installieren des Code Signing Zertifikats

Um das Code Signing Zertifikat per Gruppenrichtlinie zu verteilen, welches für die App-V Client PowerShell Module verwendet wurde, kann man wie nachfolgend beschrieben vorgehen.

1. Hinzufügen des Code Signing Zertifikats zum Zertifikatsspeicher „Vertrauenswürdige Herausgeber“ des Benutzers

a. Öffnen einer PowerShell auf einem Client, auf dem der App-V Client installiert ist

b. Ausführen des Kommandos Import-Module AppVClient
clip_image008
und bestätigen der Rückfrage mit Always Run

2. Exportieren des Code Signing Zertifikats aus dem Zertifikatsspeichers des Benutzers

a. Ausführen von certmgr.msc und Öffnen des Zertifikatsspeichers „Vertrauenswürdige Herausgeber“

b. Rechtsklick auf das Zertifikat „Microsoft Corporation“ ausgestellt von „Microsoft Code Signing PCA“ und Auswahl des Menüpunkts Alle Aufgaben, Export
clip_image010

c. Export des Zertifikats als DER kodierte Binärdatei X.509 (.cer)
clip_image012

3. Hinzufügen des Code Signing Zertifikats via Gruppenrichtlinie

a. Bearbeiten eines passenden Gruppenrichtlinienobjekts unter Computer Configuration\Windows Settings\Security Settings\Public Key Policies\Trusted Publishers
(siehe http://technet.microsoft.com/en-us/library/cc770315(v=WS.10).aspx)

b. Rechtsklick und Auswahl des Menüpunktes Import

c. Importieren des in Schritt 2 exportierten Zertifikates

Nach einer Aktualisierung der Gruppenrichtlinien auf dem Client beispielsweise durch gpupdate /force oder einen Neustart, sollte das Code Signing Zertifikat im Zertifikatsspeicher „Vertrauenswürdige Herausgeber“ des Computers vorhanden sein. Anschließend lassen sich sowohl die App-V GUI wieder starten, als auch App-V Pakete via System Center 2012 Configuration Manager verteilen.

Vielen Dank an Lars Iwer für die Zusammenfassung und Zusammenarbeit an diesem Fall.

Schönen Gruß

Sebastian Gernert – Escalation Engineer – App-V

Comments (0)

Skip to main content