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
Hello, merci pour ce super Tuto , Cependant la commande wmic semble etre differente…
wmic product where name= »Citrix Broker Service » get caption, identifyingnumber
(sous windows 2012 en tout cas…)
Merci pour ces précisions, j’épingle le commentaire !