Citrix Virtual Apps & Desktops – XML Service over HTTPS

Synopsis

La communication entre le Broker/DDC et le StoreFront/SF se fait via un service XML utilisant soit de l’HTTP soit de l’HTTPS respectivement en port 80 ou 443 par défaut.
Le service est utilisé pour faire transiter les logins mais aussi pour énumérer les ressources comme le(s) Desktop(s) et/ou Application(s).

Configuration

Par défaut la communication se passe en HTTP, si l’on veux passer en sécurisé via HTTPS il faut aller dans le StoreFront pour configurer le Transport Type.

Une fois configuré en HTTPS vous aurez un problème d’affichage du Store avec le message « There are no apps or desktops available to you at this time. »

L’Event Viewer devrait avoir enregistré une erreur 12346 du Citrix Store Service.
Ce problème étant normal car pour dialoguer en 443 il faut un certificat valide à présenter, configuré par exemple avec un IIS.

An error occured while attempting to connect to the server … on port 443. Verify that the Citrix XML Service is running and is using the correct port.

Solution

Pour éviter d’installer un serveur IIS qui est globalement inutile sur un Broker, je préfère utiliser netsh qui assez simple d’utilisation.
Nous allons utiliser le Thumbprint, c’est à dire qu’en cas de renouvellement du certificat il faudra refaire la procédure car il aura changé.

  • La première chose est de générer un certificat, généralement un Wildcard depuis la CA interne que vous avez déployé sur les IIS des StoreFront.
  • Une fois généré il est facile de trouver son Thumbprint en allant dans ses propriétés.

  • A ce stade il va falloir retrouver l’Application ID du Citrix Broker Service via wmic.
wmic product where “name like 'Citrix Broker Service'” get caption, identifyingnumber

  • On va maintenant utiliser netsh pour ajouter le certificat sur les Brokers, utiliser 0.0.0.0:443 pour utiliser IPv4 & v6.
netsh
http add sslcert ipport=<Broker_IP>:443 certhash=<Thumbprint_Certificate> appid=<App_ID>

  • Pour être sur il est possible de vérifier la prise en compte via l’affichage des bindings.
netsh http show sslcert

  • En cas d’erreur il est possible de supprimer un binding via l’IP.
http delete sslcert <Broker_IP>:443
  • A ce stade la communication en HTTPS est fonctionnelle, le Desktop est maintenant disponible.

  • En cas de problème, il se peut que le Broker n’utilise pas le bon port.
cd "C:\Program Files\Citrix\Broker\Service"
BrokerService.exe /show

BrokerService.exe -wiport 443

Bonus

Si l’on souhaite pousser le vice, il est possible de n’autoriser la communication qu’en HTTPS via une clé de registre.
Ci dessous les valeurs à utiliser dans une GPO, à attacher aux machines servant de Broker Citrix.

Action : Update
Hive : HKEY_LOCAL_MACHINE
Key Path : Software\Citrix\DesktopServer
Value name : XmlServicesEnableNonSsl
Value type : REG_DWORD
Value data : 0


...BofBienTrès BienTop ! (Soit le premier à voter)
Loading...

Mathieu

Je suis actuellement ingénieur spécialisé dans le design d'environnements cloud virtualisés. Adepte des technologies de VMware, Nutanix, Citrix et Microsoft je propose à travers ce blog diverses astuces de troubleshooting.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *