Le problème pour joindre Home Assistant depuis l’extérieur

Ici, c’est Home Assistant qui fait tourner la maison : les lumières, le chauffage, la climatisation, la borne de recharge de la voiture, les alarmes. L’application sur le téléphone est le moyen de se servir de tout ça hors de chez soi, et c’est aussi ainsi que la maison sait où sont les téléphones, parce que l’application remonte la position et les capteurs en arrière-plan.

Il faut donc que ça marche quand personne n’est à la maison. La question est de savoir comment.

La réponse habituelle consiste à mettre Home Assistant sur internet avec un nom d’hôte et une page de connexion. Ça marche. Ça veut aussi dire que n’importe qui sur la planète peut atteindre la page de connexion, essayer des mots de passe dessus et sonder tout ce qui se trouve derrière. Une page de connexion, c’est un mot de passe posé entre internet et les serrures de votre porte d’entrée.

Je ne voulais pas de ça. Les exigences étaient courtes :

  • Aucune page de connexion accessible au public. Rien ne répond à moins que l’appareil soit l’un des nôtres.
  • L’application Home Assistant doit continuer à fonctionner en arrière-plan, sans personne pour passer une connexion à coups de doigt.
  • Rien de plus qui tourne sur les téléphones. Pas d’agent VPN.
  • L’offre gratuite de Cloudflare. Le tunnel est déjà là.

Ces quatre-là éliminent la plupart des options habituelles avant même de commencer.

Ce que chaque option vous donne vraiment

La documentation de Home Assistant liste elle-même les voies d’entrée : Home Assistant Cloud, un VPN, un reverse proxy ou la redirection de port1. Cloudflare ajoute ses propres versions des deux dernières. Voici comment elles se notent face à ces quatre exigences, ce qui peut mal tourner avec chacune, et ce que chacune coûte en batterie.

OptionQui peut atteindre la page de connexionL’application marche en arrière-planEn plus sur le téléphoneCe que ça coûte vraimentRisquesCoût en batterieIPv4 et IPv6
Redirection de port vers Home AssistantTout le mondeOuiRienGratuit sur la facture. Chaque scan et chaque mot de passe tenté tourne sur Home Assistant, et un DDoS atterrit sur votre ligne domestiquePage de connexion ouverte à tous les scanners. Un trou dans le routeur droit sur le LAN. Une ligne domestique derrière un CGNAT n’a aucun port à rediriger2. Application : marche sur Android et iPhone, ce n’est qu’une URLNormalIPv4 exige une adresse publique à vous, pas de CGNAT. IPv6 exige une ouverture dans le pare-feu, et un téléphone sur un Wi-Fi uniquement IPv4 ne peut pas l’atteindre
Cloudflare Tunnel, rien d’autreTout le mondeOuiRienGratuit. Cloudflare encaisse un DDoS, mais chaque mot de passe tenté tourne encore sur Home AssistantPage de connexion ouverte à tous les scanners et listes de mots de passe. Un mot de passe deviné et un attaquant a une machine sur votre LAN. Application : marche sur Android et iPhone, ce n’est qu’une URLNormalLes deux. Cloudflare répond sur l’un ou l’autre3, et la maison ne fait qu’appeler vers l’extérieur4
Tunnel plus une connexion Cloudflare AccessSeulement après connexionNon, les appels en arrière-plan tombent sur la connexionRienGratuit. Les inconnus s’arrêtent chez Cloudflare, aucune charge sur Home AssistantLa position et les capteurs cessent de remonter sans que personne ne le remarque. Seul Home Assistant est publié, derrière la connexion. Application : ne sait pas envoyer l’en-tête de service token dont Access a besoin5NormalLes deux, comme le tunnel
Tunnel plus réseau privé WARPPersonne à l’extérieurOuiAgent WARPGratuit. Rien de public à scannerTourne sur des ports UDP qu’un réseau d’hôtel ou de bureau peut bloquer6. Android n’autorise qu’un VPN à la fois7. Une route peut mettre tout le LAN sur chaque téléphone inscrit8. Application : n’a besoin de rien, mais WARP a des clients Android et iPhone et aucun pour une montre Wear OS9Plus élevé, un VPN toujours actifLes deux. L’agent atteint Cloudflare sur l’un ou l’autre6
Home Assistant CloudTous ceux qui ont l’URLOuiRien6,50 £ par mois ou 65 £ par an10. Les mots de passe tentés tournent encore sur Home AssistantPage de connexion publique. L’entreprise de quelqu’un d’autre tient la voie d’entrée : aucun accès quand leur service est en panne. Un mot de passe deviné et un attaquant a une machine sur votre LAN. Application : marche sur Android et iPhoneNormalÀ la maison, l’un ou l’autre, il appelle un relais Nabu Casa11. L’IPv6 côté téléphone n’est pas documenté
Redirection de port vers nginx ou Caddy avec un certificat clientSeulement les appareils qui détiennent un certificatOuiUn certificat et la racine de votre propre ACGratuit sur la facture. Un inconnu coûte une poignée de main TLS sur le proxy, jamais une connexion à Home Assistant, et un DDoS atterrit sur votre ligne domestiqueUn trou dans le routeur vers le proxy, pas vers Home Assistant. Vous faites tourner l’AC, et une CRL périmée bloque tous les téléphones. Application : comme la ligne certificat ci-dessousNormalComme la redirection de port. nginx doit être configuré pour écouter en IPv6, Caddy le fait par défaut
Tunnel plus certificat clientSeulement les appareils qui détiennent un certificatOuiUn certificatGratuit. Les inconnus sont refoulés à la périphérie, aucune charge sur Home AssistantUn téléphone perdu entre tant qu’il n’est pas révoqué. Du HTTPS simple sur le 443, bloqué seulement là où le web l’est. Seul Home Assistant est publié, et seulement aux détenteurs de certificat. Application : prise en charge sur Android ; l’application iPhone n’est pas documentée ; Wear OS a besoin du fichier PKCS12 à la configuration12NormalLes deux, comme le tunnel

Le tunnel règle aussi la question IPv4 contre IPv6. Cloudflare répond au téléphone sur celui qu’il a, et la maison ne fait jamais qu’appeler vers l’extérieur, donc une ligne domestique derrière un CGNAT, ou une ligne avec IPv6 et aucune IPv4 publique, marche comme n’importe quelle autre. Une redirection de port exige une adresse IPv4 publique à vous, ou IPv6 aux deux bouts. Pourquoi tant de lignes domestiques n’ont toujours ni l’un ni l’autre est une histoire à part, dans Nous n’avons jamais manqué d’adresses. Nous avons manqué d’effort..

Le tunnel seul corrige le routeur, pas l’exposition. cloudflared n’établit que des connexions sortantes, donc il n’y a aucun port entrant à rediriger13, mais le nom d’hôte qu’il publie sert toujours la page de connexion à quiconque la demande.

Est-ce que Cloudflare Access règle le problème ? Pour un navigateur, oui, et c’est ainsi que s’en servent les postes de travail de VDI Zero Trust sans la facture cloud. Pour l’application, ce n’est pas la bonne forme. Access place une personne devant une page de connexion, et le trafic d’arrière-plan de l’application n’a pas de personne. Le contournement habituel est un service token envoyé comme en-tête, et l’application ne sait pas en envoyer. Sa web view ne donne aucun moyen d’ajouter des en-têtes aux requêtes POST ni aux WebSockets, et c’est ainsi que l’application parle à Home Assistant, et la discussion des développeurs aboutit aux certificats clients comme « a better (more secure) alternative »5.

WARP ferait l’affaire, et il a été écarté parce qu’il veut dire un agent sur chaque téléphone. Un VPN coûte plus de batterie qu’un lien normal, parce que c’est un tunnel tenu ouvert toute la journée, que l’application parle ou non. Il tourne en UDP sur des ports qu’un réseau d’hôtel ou de bureau peut rejeter, ce qui vous laisse dehors précisément quand vous êtes loin6. Et Android ne fait tourner qu’un VPN à la fois7, donc WARP et un VPN de travail ne peuvent pas être actifs ensemble. Home Assistant Cloud est un bon service et finance le développement, mais c’est un abonnement, et l’URL sert toujours une page de connexion à quiconque la trouve. Il confie aussi la voie d’entrée de votre maison à l’entreprise de quelqu’un d’autre. Leur service, leur compte, leur prix, leurs conditions. C’est une perte de souveraineté, et c’est le marché que chaque offre cloud vous demande de conclure : le confort maintenant, quelqu’un d’autre aux commandes pour de bon.

Cloudflare n’est pas différent par nature, et il serait malhonnête de prétendre le contraire. Chaque option à tunnel de ce tableau le met sur le chemin, et il termine le TLS à sa périphérie, et c’est d’ailleurs ainsi que la règle WAF peut lire la vérification de certificat. La différence, c’est ce qu’il détient. Ici, il tient la porte. Home Assistant, ses données et ses mots de passe restent dans la maison, et si Cloudflare disparaît la maison continue de tourner, c’est la dernière ligne du tableau sous « Là où ça coince ». Si même ça, c’est plus de confiance que vous ne voulez en céder, la version nginx et Caddy fait la même vérification dans votre propre maison, avec votre propre AC, et prend en échange la redirection de port et les corvées de l’AC.

Reste le certificat client. Le téléphone prouve ce qu’il est avant que Home Assistant ne voie un seul octet.

Ce que coûte vraiment d’être ouvert sur internet

Gratuit sur la facture, ce n’est pas gratuit. Tout ce qui répond à internet le paie en charge machine. Chaque mot de passe tenté contre la connexion propre de Home Assistant est une vérification bcrypt à 12 tours, et il en lance une même quand le nom d’utilisateur n’existe pas, donc un inconnu qui devine coûte exactement ce que coûte votre propre connexion14. Cette charge tombe sur la machine qui fait tourner la maison, jour et nuit, aussi longtemps que les scanners continuent de venir. Et ils continuent de venir.

Une redirection de port est pire encore, parce qu’elle met votre adresse domestique en jeu. Un DDoS qui la vise remplit votre connexion, et alors c’est toute la maison qui sort d’internet, pas seulement Home Assistant. Derrière le tunnel, c’est Cloudflare qui prend l’inondation, sur toutes les offres y compris la gratuite15, et il n’a plus jeté un client à cause de la taille d’une attaque depuis 201716. Le certificat fait le dernier pas. Un inconnu est refoulé à la périphérie, et Home Assistant ne dépense rien pour lui.

Puis il y a le réseau sur lequel se trouve Home Assistant. Ce n’est pas une application web sur une île. Il est sur le LAN de la maison à côté des caméras, du NAS et des portables, et il détient les identifiants d’un bon nombre d’entre eux. Passez sa connexion et vous avez une machine à l’intérieur de la maison, pas juste un tableau de bord. Une redirection de port est un trou dans le routeur pointé droit sur cette machine. WARP se trompe dans l’autre sens, en étant trop généreux : une route peut publier tout un réseau privé à chaque téléphone inscrit, et le restreindre est une politique séparée qu’il faut penser à écrire8. Perdez un téléphone configuré ainsi et celui qui le trouve est sur votre LAN. Le certificat publie un seul nom d’hôte, aux appareils qui en détiennent un, et rien d’autre sur le réseau n’est joignable de l’extérieur.

Le mTLS avec l’offre gratuite : quelle moitié est gratuite

Une bonne partie des conseils en ligne disent que le mTLS chez Cloudflare exige Enterprise. Ce n’est pas le cas. Cloudflare vend le mTLS deux fois, et un seul des deux exige Enterprise.

Certificats clients plus règle WAFmTLS de Cloudflare Access
OffreFree, Pro, Business, EnterpriseZero Trust Enterprise seulement
Autorité de certificationGérée par Cloudflare (apporter la vôtre, c’est Enterprise)Uniquement la vôtre
Certificats inclus100 actifs par zoneSans objet
Appliqué parUne règle WAF personnalisée que vous écrivezUne politique Access
RévocationIntégrée, vérifiée par la règleVotre propre CRL et un Worker

C’est la première colonne qui nous intéresse. Apporter votre propre AC, c’est Enterprise chez Cloudflare. Hors de Cloudflare, ça ne coûte rien, et des certificats clients depuis step-ca le couvre. Le comparatif de Cloudflare lui-même le dit clairement : l’offre Application Security inclut 100 certificats clients par zone gratuitement, tandis que le mTLS d’Access est une fonction Zero Trust Enterprise17. Les offres Free, Pro et Business ont 100 certificats actifs par zone, et en révoquer un libère sa place immédiatement18. Deux téléphones en utilisent deux.

L’offre gratuite a aussi cinq règles WAF personnalisées19. Il en faut une.

Comment fonctionne la vérification

Parcours des requêtes via le mTLS de Cloudflare vers Home AssistantTéléphoneappli HAa un certificatN'importe quiun scannerpas de certificatPériphérie Cloudflare, offre gratuitePoignée de mainmTLS activé pourha.example.comveut un certificatRègle WAFvérifié ?non révoqué ?sinon BlockBloquén'atteint jamais HARéseau de la maisoncloudflaredtunnel sortant seulementHome Assistantapprouve ce seul proxybannissement IP activéconnexion, 2e verroupasseéchec
Chaque requête : la périphérie demande un certificat pendant la poignée de main, la règle WAF bloque tout ce qui n’est pas vérifié ou est révoqué, et seulement ensuite la requête descend le tunnel vers Home Assistant.

Cloudflare fait le travail à sa périphérie. Quand le mTLS est activé pour un nom d’hôte, la poignée de main TLS demande un certificat au client20. Ça seul ne bloque rien. Un client qui n’envoie aucun certificat se connecte quand même. Il arrive simplement avec le champ de vérification à faux.

Le blocage, c’est la règle WAF. Cloudflare expose le résultat de la vérification de certificat sous forme de champs dans son langage de règles21 :

(http.host eq "ha.example.com"
  and (not cf.tls_client_auth.cert_verified
       or cf.tls_client_auth.cert_revoked))
Action: Block

La deuxième ligne est là pour une raison. Un certificat révoqué est toujours vérifié, parce que cert_revoked à vrai veut dire que cert_verified est vrai aussi22. Ne testez que le premier champ et un certificat révoqué entre tout droit. Révoquer le certificat d’un téléphone perdu ne veut rien dire si la règle ne le demande pas.

Rendons à César ce qui lui appartient : les gens du fil Android de Home Assistant ont trouvé cette règle et l’ont publiée5. Bon travail, et ça m’a épargné pas mal de recherches.

Le côté Home Assistant

Il faut dire à Home Assistant qu’il est derrière un proxy, et ce n’est pas facultatif. Les requêtes venant d’un reverse proxy sont bloquées par conception tant qu’on n’a pas dit à Home Assistant de lui faire confiance23. Le connecteur cloudflared du tunnel en est un.

Depuis 2026.8, ces réglages vivent dans l’interface, sous Settings → System → Network → HTTP server, et non dans configuration.yaml23. Les enregistrer redémarre Home Assistant, et un administrateur a ensuite cinq minutes pour confirmer les nouveaux réglages avant qu’ils ne reviennent en arrière d’eux-mêmes. C’est un filet de sécurité qu’il vaut mieux connaître avant de s’enfermer dehors.

RéglageValeurPourquoi
Trust X-Forwarded-ForActivéSans lui, les requêtes relayées sont refusées
Trusted proxiesL’adresse de la machine cloudflared seulementSeule cette machine peut prétendre relayer pour quelqu’un
Enable IP banningActivé, une poignée de tentativesLes bannissements tombent sur la vraie adresse du client, pas celle de Cloudflare
Home Assistant URL, Internethttps://ha.example.comL’application la reprend comme URL externe

L’entrée des proxies de confiance est étroite exprès. Faites confiance à tout un sous-réseau et n’importe quel appareil dedans peut falsifier l’adresse du client, ce qui rend la liste de bannissement inutile.

Puis l’application. La documentation de l’application Companion couvre cette installation nommément. Si Home Assistant est derrière un reverse proxy qui fait de l’authentification TLS par client, l’application demande un certificat, et elle le veut installé comme « VPN & app user certificate »12. Sur un téléphone sans certificat, vous obtenez une erreur ou un écran vide, ce qui est le bon résultat pour un téléphone qui ne devrait pas entrer.

Réglez le niveau de sécurité de connexion de l’application sur Most secure. L’adresse locale en http:// simple n’est alors utilisée que sur le Wi-Fi de la maison, et partout ailleurs l’application utilise le nom d’hôte HTTPS ou refuse purement et simplement de se connecter24. Il faut l’autorisation de localisation réglée sur « Allow all the time » sous Android, ce dont l’application a de toute façon besoin pour la position en arrière-plan.

La construction, étape par étape

ÉtapeOùQuoi
1Tunnel CloudflareAjouter un nom d’hôte public, ha.example.com, pointant sur Home Assistant sur le LAN
2SSL/TLS → Client CertificatesCréer un certificat par téléphone. Copier le certificat et la clé, ils ne sont plus affichés ensuite18
3Client Certificates → HostsActiver le mTLS pour ha
4Security → WAF → Custom rulesAjouter la règle de blocage ci-dessus
5SSL/TLS → Edge CertificatesAlways Use HTTPS activé, TLS 1.2 minimum
6Home Assistant → NetworkProxy de confiance, bannissement d’IP, URL externe, puis confirmer dans les cinq minutes
7Une machine LinuxConstruire un fichier PKCS12 par téléphone
8Chaque téléphoneL’installer comme certificat utilisateur VPN et applications, puis régler l’application sur Most secure
9TestDonnées mobiles, Wi-Fi coupé. L’application se connecte. Un navigateur sans le certificat est bloqué

Un certificat par téléphone, pas un partagé. Quand un téléphone est perdu, vous révoquez ce téléphone-là et l’autre continue.

Le téléphone veut le certificat et la clé dans un seul fichier PKCS12. Cloudflare vous remet du PEM, alors assemblez-les :

openssl pkcs12 -export -in phone1.pem -inkey phone1.key \
  -name "ha-phone1" -out phone1.p12

C’est là que les gens coincent. Android est pointilleux sur le chiffrement à l’intérieur du fichier, et la documentation de Home Assistant dit d’essayer d’abord le défaut actuel et de ne se rabattre sur un conteneur legacy avec l’option -legacy d’OpenSSL que s’il est refusé25. Le même conseil revient dans les fils de la communauté où un fichier qui s’installait très bien sur du matériel Apple était rejeté par Android5.

Le chemin dans les menus pour l’installer change selon les fabricants de téléphones et les versions d’Android. La page de Google pour le Pixel est un point de départ26. Quoi que disent les menus, c’est le magasin d’identifiants utilisateur que vous voulez, pas le magasin d’AC.

Là où ça coince

Rien ici n’est exempt d’aspérités, alors les voici.

CasCe qui se passeQue faire
Téléphone perdu ou venduSon certificat marche encore tant qu’il n’est pas révoquéLe révoquer dans Client Certificates. La règle vérifie la révocation
Montre Wear OSNe peut pas utiliser le certificat installé sur le téléphoneFournir le fichier PKCS12 pendant la configuration de la montre elle-même12
iPhoneLa documentation Companion marque cette section Android seulementTester avant de s’y fier
Navigateur d’un portable hors de la maisonBloqué, pas de certificatInstaller un certificat dans le navigateur, ou l’accepter
Cloudflare en pannePlus aucun accès à distanceLa maison tourne toujours en local. C’est tout l’intérêt de la faire tourner en local

Celui du navigateur est une fonction, pas un défaut. Tout ce qui n’a pas de certificat est un inconnu, et ça comprend mon propre portable tant que je ne lui en ai pas donné un.

Une clé, pas un mot de passe

Un mot de passe est quelque chose que vous savez, et tout ce que vous savez peut être deviné, hameçonné, réutilisé ou divulgué par la fuite de quelqu’un d’autre. Mettez une page de mot de passe sur internet et vous êtes entré dans une partie de chiffres contre tous ceux qui ont un botnet et une liste de mots. Vous pouvez la gagner pendant des années. Il suffit de la perdre une fois.

Un certificat est quelque chose que l’appareil détient. Personne ne le devine. Personne ne l’essaie un million de fois, parce que la requête est jetée à la périphérie avant qu’il y ait quoi que ce soit contre quoi l’essayer. La page de connexion est toujours là et elle compte toujours, mais c’est maintenant le second verrou, pas le seul.

Ce qui se trouve derrière cette page n’est pas une application web. Ce sont les serrures, le chauffage, la borne de recharge et les caméras. Traitez-la comme la porte d’entrée, parce que c’est ce qu’elle est.

Ce à quoi je reviens sans cesse, c’est que rien de tout ça ne coûte quoi que ce soit. Cloudflare donne les certificats et la règle avec l’offre gratuite. Home Assistant documente le côté application dans sa propre documentation Companion. La seule chose que ça coûte, c’est une soirée à lire correctement les manuels, et en tant que tel le défaut d’une page de mot de passe face à tout internet est un choix que les gens font en ne les lisant pas.


  1. Home Assistant — Remote access — Home Assistant Cloud, VPN, reverse proxy et redirection de port comme voies d’entrée. ↩︎

  2. RFC 6598 — IANA-Reserved IPv4 Prefix for Shared Address Space — la plage 100.64.0.0/10 du Carrier-Grade NAT, où de nombreux clients partagent une adresse publique et aucun n’obtient de port entrant. ↩︎

  3. Cloudflare — IPv6 compatibility — activé par défaut sur toutes les offres ; Cloudflare « auto generates AAAA DNS records to allow IPv6 clients to connect » aux noms d’hôte relayés. ↩︎

  4. Cloudflare — Tunnel run parameters, edge-ip-version — cloudflared se connecte à Cloudflare en IPv4 par défaut ; 6 ou auto lui fait utiliser IPv6. ↩︎

  5. home-assistant/android PR #3593 — Add custom header support — la web view ne sait pas ajouter d’en-têtes aux requêtes POST ou WebSocket ; certificats clients suggérés à la place des service tokens ; utilisateurs signalant des problèmes de format de certificat sous Android. ↩︎ ↩︎ ↩︎ ↩︎

  6. Cloudflare — Cloudflare One client firewall requirements — WireGuard sur UDP 2408 avec repli sur UDP 500, 1701 et 4500 ; MASQUE sur UDP 443. ↩︎ ↩︎ ↩︎

  7. Android Developers — VpnService — « There can be only one VPN connection running at the same time. » ↩︎ ↩︎

  8. Cloudflare — Connect an IP/CIDR — « You can connect an entire private network, a subnet, or an application defined by a static IP » ; les politiques réseau Gateway pour filtrer ce trafic sont une étape séparée, recommandée. ↩︎ ↩︎

  9. Cloudflare — Download Cloudflare One Client — clients pour Windows, macOS, Linux, iOS 15+, Android 5.0+ et ChromeOS ; aucun client Wear OS listé. ↩︎

  10. Nabu Casa — Pricing — Home Assistant Cloud à 6,50 £ par mois ou 65,00 £ par an, taxes non comprises. ↩︎

  11. NabuCasa/hass-nabucasa — remote.py — Home Assistant s’enregistre auprès de Nabu Casa, reçoit un server relais, et s’y connecte en sortie. ↩︎

  12. Home Assistant Companion — Getting Started, TLS client authentication — installer comme « VPN & app user certificate » ; Wear OS a besoin du certificat fourni en PKCS12 pendant la configuration initiale. ↩︎ ↩︎ ↩︎

  13. Cloudflare — Cloudflare Tunnel — cloudflared crée des connexions uniquement sortantes, donc il n’y a aucun écouteur entrant sur l’origine. ↩︎

  14. Home Assistant core — auth/providers/homeassistant.py — mots de passe hachés avec bcrypt à 12 tours ; un nom d’utilisateur inconnu lance quand même un checkpw factice « to make timing the same as if user was found ». ↩︎

  15. Cloudflare — DDoS Protection — détection et atténuation automatiques des DDoS, « Available on all plans ». ↩︎

  16. Cloudflare blog — Unmetered Mitigation — « Cloudflare will no longer terminate customers, regardless of the size of the DDoS attacks they receive, regardless of the plan level they use. » ↩︎

  17. Cloudflare — Use mTLS with Cloudflare protected resources — « 100 Client Certificates per Zone are included for free » ; le mTLS d’Access est une « Zero Trust Enterprise only feature ». ↩︎

  18. Cloudflare — Create a client certificate — 100 certificats actifs par zone sur Free, Pro et Business ; révoquer libère la place ; certificat et clé ne sont plus affichés après la création. ↩︎ ↩︎

  19. Cloudflare — WAF custom rules — tableau de disponibilité : cinq règles personnalisées sur l’offre Free. ↩︎

  20. Cloudflare — Enable mTLS — activer le mTLS par nom d’hôte, puis l’appliquer avec une règle WAF personnalisée. ↩︎

  21. Cloudflare — Client certificate variables — les champs mTLS disponibles pour les règles WAF personnalisées. ↩︎

  22. Cloudflare — cf.tls_client_auth.cert_revoked — « When true, the cf.tls_client_auth.cert_verified field is also true. » ↩︎

  23. Home Assistant — HTTP integration — reverse proxies, proxies de confiance et bannissement d’IP ; réglages passés dans l’interface en 2026.8, et annulés s’ils ne sont pas confirmés dans les cinq minutes. ↩︎ ↩︎

  24. Home Assistant Companion — Connection security level — Most secure n’utilise une URL non chiffrée que sur le réseau de la maison ; exige la localisation « Allow all the time » sous Android. ↩︎

  25. Home Assistant Companion — Networking, TLS Client Authentication — essayer d’abord le PKCS12 par défaut actuel, le conteneur OpenSSL -legacy seulement si ça échoue. ↩︎

  26. Google — Pixel Phone Help, Add & remove certificates — installer un certificat à la main sur un Pixel. ↩︎