Déboguer une Apple TV
Des quatre plateformes, l'Apple TV est la plus difficile à déboguer, pour des raisons qui n'ont rien à voir avec Chute : tvOS n'a pas de navigateur, pas de feuille de partage, pas d'explorateur de fichiers, aucun moyen d'installer un certificat depuis l'appareil, et vous avez une télécommande au lieu d'un clavier. Chute tvOS répond à chacun de ces points en déplaçant l'interface ailleurs — dans un navigateur sur votre téléphone ou votre Mac, dans un QR code, dans une fenêtre Dashboard.
Ce guide a donc une forme différente des deux autres : presque tout se passe hors du téléviseur.
1. Amener une configuration sur le téléviseur
Personne ne veut modifier une configuration à la télécommande deux fois : écrivez-la ailleurs et envoyez-la. Sur l'Apple TV, Ajouter une configuration depuis… propose trois voies :
- Envoyer un fichier via Wi-Fi ou Chute iOS — le téléviseur ouvre un écouteur HTTP local et affiche une URL et un QR code. Ouvrez cette URL dans n'importe quel navigateur pour téléverser le fichier, ou scannez le code avec Chute iOS. Le schéma d'URL
chute://tvouvre directement le même écran d'import dans l'application du téléphone. - Télécharger depuis une URL — le téléviseur va chercher la configuration lui-même. La voie qui demande le moins de frappe, si le fichier est là où il peut l'atteindre.
- Configuration vierge — une configuration vide à modifier sur l'appareil.
Pour le téléversement, le téléviseur et l'autre appareil doivent être sur le même Wi-Fi, et l'écouteur n'existe que tant que cet écran est ouvert : le quitter ou verrouiller l'appareil annule le transfert.
2. Activer les deux écouteurs dont vous vous servirez vraiment
Les deux sont désactivés par défaut, et sans au moins l'un d'eux une Apple TV est indébogable. Les deux sont gratuits : sur le panneau de configuration de cette plateforme, la licence couvre les lignes du serveur proxy local et l'enregistreur de trafic, pas ceux-ci.
API de contrôle HTTP + Console web — c'est-à-dire la Console web, où vivent les corps, les exports HAR et les diagnostics :
[General]
external-http-controller = 0.0.0.0:9090
external-http-secret = your-own-token
external-http-ui = true
Liez-la à 0.0.0.0, pas à 127.0.0.1 : une console liée à la boucle locale ne peut pas être ouverte depuis un autre appareil, et il n'y a pas de navigateur sur le téléviseur pour l'ouvrir localement. Une liaison hors boucle locale exige un external-http-secret explicite, faute de quoi le contrôleur refuse de démarrer.
Accès au contrôleur externe — le canal binaire que parle Chute Dashboard. Dans l'éditeur de configuration, ouvrez Contrôleur externe :
- Activez Accès au contrôleur externe.
- Choisissez un Port (
6171est la valeur par défaut ici) et un Mot de passe à vous ; il ne peut pas être vide. - Activez Autoriser l'accès depuis le Wi-Fi. Sur une Apple TV, ce n'est pas facultatif comme sur un téléphone : il n'y a pas de voie câblée de repli, donc désactivé, rien venant de l'extérieur du téléviseur ne peut se connecter.
Vous devriez voir, dans le panneau de configuration : Port de l'API HTTP et Console web sur Activé, et Port d'accès externe affichant votre port. Si ce n'est pas le cas, le tunnel tourne avec une ancienne copie de la configuration — redémarrez-le.
3. Ouvrir la console depuis un autre appareil
Le panneau de configuration comporte une ligne Adresse de la console web, quelques lignes sous l'interrupteur de la console web. Sélectionnez-la :
- Si l'écouteur est joignable depuis d'autres appareils, le téléviseur affiche un QR code. Scannez-le avec un téléphone sur le même réseau, ou tapez l'adresse dans un navigateur. Le jeton de connexion voyage dans le code plutôt que de s'afficher, si bien que personne n'a à recopier 32 caractères hexadécimaux depuis un téléviseur.
- Si le contrôleur est lié à la boucle locale, le téléviseur affiche une explication au lieu d'un code — voir l'étape 2.
À partir de là, la console est identique sur toutes les plateformes : Connexions avec inspection ligne à ligne et corps, Règles avec la liste des réécritures qui ont agi, Diagnostic avec les sondes ping / DNS / sortie / test d'URL, et Journal.
4. Connecter Chute Dashboard
Sur un Mac, ouvrez Chute Dashboard et choisissez Se connecter à une machine distante : Hôte est l'adresse de l'Apple TV — le panneau de configuration l'affiche sous IP LOCALE — avec le port et le mot de passe de l'étape 2. Se connecter via USB est destiné aux iPhone et aux appareils Android ; une Apple TV s'atteint par le réseau.
Tout ce que Dashboard fait pour un téléphone, il le fait ici — les listes Actif et Récent, les vues DNS et UDP, les panneaux d'outils MitM, les exports HAR et curl d'un clic droit.
5. Déchiffrer le HTTPS
Deux choses diffèrent sur cette plateforme, et les deux surprennent.
Le CA ne peut pas être installé depuis l'application. tvOS n'a ni Safari ni installateur de profils : le certificat doit donc arriver par la seule voie que tvOS accepte pour les certificats, MDM ou Apple Configurator. L'application le dit là où se modifie la liste des hôtes, et elle ne sait pas non plus générer, importer ni exporter un CA : créez le CA dans Chute Mac, placez les mêmes ca-p12 et ca-passphrase dans la configuration du téléviseur, et acheminez le certificat — Exporter le certificat dans Chute Mac l'écrit en .pem — vers l'appareil par l'une de ces deux voies.
Il n'y a pas d'interrupteur MitM dans le panneau de configuration. iOS et macOS en ont un, tvOS non. Le déchiffrement s'active par l'un de ces moyens :
- la configuration —
enable = truedans[MITM], la réponse qui dure ; - la console, ou l'interrupteur de la barre d'outils de Chute Dashboard ;
PUT /api/features/mitmavec{"enabled": true}.
Les trois derniers n'agissent que sur le moteur en cours et sont oubliés au redémarrage suivant. La liste hostname est lue depuis la configuration, mais elle se modifie à chaud depuis la console comme depuis Dashboard. Quelle que soit la manière de l'activer, le déchiffrement exige une licence sur Apple TV, comme sur iPhone : sans elle, le moteur ne déchiffre rien.
[MITM]
enable = true
hostname = api.example.com, *.example.net
6. Enregistrer, et sortir le résultat de l'appareil
Capture du trafic, dans le panneau de configuration, est l'enregistreur de trafic — le réglage replica — et l'une des trois lignes sous licence du panneau de configuration de tvOS, les deux autres étant les serveurs proxy locaux. Sans lui, les connexions apparaissent quand même avec leur règle, leur politique et leurs temps ; seules les charges utiles manquent.
Vient ensuite ce qui est propre à cette plateforme : l'Apple TV n'a nulle part où poser un fichier. Pas de feuille de partage, pas d'application Fichiers : tout export sort donc par HTTP.
- HAR — page Connexions de la console, Exporter en HAR. Le téléchargement arrive sur la machine qui fait tourner le navigateur.
- Ensemble de diagnostic d'exécution — page Diagnostic de la console, Télécharger l'ensemble de diagnostic.
- Ensemble de diagnostic hors ligne — Réglages → Ensemble de diagnostic hors ligne, lorsque le tunnel ne tourne pas. Le téléviseur construit l'archive et affiche un QR code ; le lien ne fonctionne que tant que cet écran reste ouvert.
7. Ce que le téléviseur peut encore vous dire lui-même
Certaines questions ne demandent aucun autre appareil. Sous Réglages → DIAGNOSTIC :
- Tableau de bord — la session en cours : ses Tunnels, son DNS et ses Statistiques. Sélectionner une connexion ouvre un panneau de détail avec BASIQUE (date, état, motif de fermeture, durée), POLITIQUE (la règle correspondante et la politique qu'elle a choisie), NŒUDS (local, serveur, distant, hôte), TRAFIC, CHRONOLOGIE (proxy prêt, résolution DNS, règle, distant prêt, temps actif total) et les réécritures qui ont agi. Pas de corps de requête ni de réponse — cela demande la console ou Chute Dashboard.
- Sessions — les exécutions précédentes, chacune avec ses Tunnels, le même panneau de détail et son Journal. L'écran du journal a un filtre de gravité au-dessus (Tout / Notification+ / Avertissement+ / Critique), de sorte qu'une télécommande suffit à réduire une exécution à ses avertissements. La session en cours ne s'ouvre pas ici — c'est le rôle du Tableau de bord — et son journal se lit dans la console.
- Diagnostic réseau, Diagnostic du proxy, Table de routage — l'accessibilité, les écouteurs et le routage tels que l'appareil les voit.
Le panneau de configuration propose aussi Purger le cache DNS, le moyen le plus rapide de retester un mappage [Host] sans redémarrer le tunnel.