Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)

  • État Nouveau
  • Pourcentage achevé
    0%
  • Type Anomalie
  • Catégorie Freebox OS
  • Assignée à Personne
  • Système d'exploitation Freebox V9 (Ultra)
  • Sévérité Basse
  • Priorité Très Basse
  • Basée sur la version 4.9.15
  • Due pour la version Non décidée
  • Échéance Non décidée
  • Votes
  • Privée
Concerne le projet: Freebox Server (Ultra V9/ Pop V8/ Delta V7 / Revolution V6 / Mini 4K)
Ouverte par idjul - 08/01/2026
Dernière modification par idjul - 08/01/2026

FS#40758 - Freebox derrière reverse proxy - Application iOS

Hello,

J’ai ma freebox qui est derrière un reverse proxy nginx, et l’accès à distance fonctionne parfaitement depuis un navigateur standard en utilisant mon domaine personnalisé.

Cependant, en voulant utiliser l’application Freebox sur iOS, c’est impossible car l’appli me mentionne qu’il est impossible de vérifier le certificat de la freebox.

Est-ce un bug ?

Admin

bonjour,

quelle est la MAC de votre box ?

Cependant, en voulant utiliser l’application Freebox sur iOS, c’est impossible car l’appli me mentionne qu’il est impossible de vérifier le certificat de la freebox.

de quelle application parlez-vous ?

pouvez-vous décrire votre setup plus en détail ? il n'est, à priori, pas possible de configurer l'URL FreeboxOS dans l'application donc je ne comprends pas comment votre reverse proxy impacte la connexion.

idjul a commenté le 08.01.2026 12:00

@mmakassikis → 38:07:16:C1:46:B9

Je parle de l'application Freebox (anciennement Freebox companion je pense)

Pour le setup :

- J'ai correctement renseigné mon nom de domaine dans la partie correspondante.
- J’ai un serveur Nginx qui fait la terminaison SSL avec un certificat Let’s Encrypt wildcard (*.domain.tld). Il reverse-proxy le domaine public freebox.domain.tld vers la freebox : https://192.168.1.66:443.
- On peut modifier le nom de domaine dans l'application en éditant l'accès distant existant.

idjul a commenté le 08.01.2026 12:08

192.168.1.1 et non 192.168.1.66

Admin

d'accord, je pensais que vous parliez de Freebox Connect.

normalement les applications utilisent le domaine en fbxos.fr qui doit être signé par la CA freebox (le certificat est disponible dans FreeboxOS, dans le menu en bas à gauche > Développer > HTTPS Access).

en l'occurrence, le certificat présenté par le reverse proxy est signé par une CA qui n'est pas dans le cert store de l'application, d'où l'erreur.

nbanba a commenté le 16.01.2026 07:56

Bonjour

@idjul
Vous avez l'air de vous y connaitre suffisamment (gestion de l'automatisation du challenge DNS LetsEncrypt et reverse proxy nginx terminant le TLS par exemple) donc j'ai une solution pour vous.

Au lieu de reverse-proxy le domain xxx.fbxos.fr, vous pouvez configurer un nom de domain personnalisé dans votre freebox, par exemple un sous domaine couvert par votre wildcard letsencrypt.

Pour l'exemple ici on va dire le sous domaine 'fbx.domain.tld'.

Puis vous importez votre certificat wildcard letsencrypt pour ce sous domaine dans la freebox.

Maintenant il faut automatiser tout ça et pour ça on va utiliser une API freeboxOS qui n'est pas documentée (donc normalement d'après la doc à ne pas utiliser) mais ça fonctionne très bien.



Pour utiliser l'API plus simplement depuis un Linux, j'utilise cette library BASH que j'ai développée à 98% (donc j'assure également le support) :
https://github.com/nbanb/fbx-delta-nba_bash_api.sh/

Plour installer la library, le WIKI (il y a un 'quick-start' en français):
https://github.com/nbanb/fbx-delta-nba_bash_api.sh/wiki



Ici on va utiliser les fonctions de création d'un nom de domaine et d'un certificat associé, voir la doc en ligne (c'est cette partie de l'API qui n'est pas documentée).

https://github.com/nbanb/fbx-delta-nba_bash_api.sh?tab=readme-ov-file#DOMAIN

function : description
Calling function with no parameters will print help
domain_list list Freebox configured domain
domain_add add a new domain name on Freebox
domain_del delete a configured domain name on Freebox
domain_addcert add a TLS certificat to a configured Freebox domain
domain_setdefault set Freebox default domain name (used for remote access)

Vous aurez surtout besoin des 3 fonctions:

domain_add add a new domain name on Freebox
domain_del delete a configured domain name on Freebox
domain_addcert add a TLS certificat to a configured Freebox domain

Leur utilisation est simple:

domain_add

$ domain_add
 
ERROR: <param> must be :
id			# id must be a domain name (use 'check_if_domain' to test)
 
NOTE: you can get a list of all configured domain and status (showing all 'id'), just run: 
domain_list
 
EXAMPLE:
domain_add id=my.domain.com

domain_del

$ domain_del
 
ERROR: <param> must be :
id			# id must be a domain name (use 'check_if_domain' to test)
 
NOTE: you can get a list of all configured domain and status (showing all 'id'), just run: 
domain_list
 
WARNING: Delete a domain name aslo delete it's associates TLS certficate ! 
 
EXAMPLE:
domain_del id=my.domain.com

domain_addcert

$ domain_addcert
 
ERROR: <param> must be :
id			# id must be a domain name
key_type		# key_type is 'ed' or 'rsa'
cert_pem		# path to file containing your certificat in PEM format
key_pem			# path to file containing your certificat PRIVATE KEY in PEM format
intermediates		# path to file containing your root or intermediate CA certificat in PEM format

NOTE: you can get a list of all configured domain and status (showing all 'id'), just run: 
domain_list
 
NOTE: your certificate files (+ intermediate) files must contains: 
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
AND for key PEM files:
-----BEGIN PRIVATE KEY-----
-----END PRIVATE KEY-----
 
EXAMPLE (PEM files are stored in current directory):
domain_addcert id="my.domain.com" key_type="ec" cert_pem="mycert.pem" key_pem="mykey.pem" intermediates="myintermediateCA.pem"  
 
EXAMPLE (PEM files are stored in CERT/ directory):
domain_addcert id="my.domain.com" key_type="ec" cert_pem="CERT/mycert.pem" key_pem="CERT/mykey.pem" intermediates="CERT/myintermediateCA.pem"

Au moment du renew du certificat LetsEncrypt, il faut mettre à jour le certificat dans freeboxOS:

  1. supprimer le domain fbx.domain.tld de la freebox
  2. ajouter de nouveaux le domain fbx.domain.tld dans la freebox
  3. ajouter le certificat mis à jour dans la freebox

Pour ça on peut utiliser un 'renewal_hook' de 'certbot':

$ mkdir -p /etc/automation

Dans le fichier de config de certbot /etc/letsencrypt/renewal/wildcard.domain.tld.conf , ajouter la ligne:

renew_hook = /etc/automation/renew-cert-freebox.sh

Puis il faut écrire le script /etc/automation/renew-cert-freebox.sh pour qu'il

  1. supprime le domain fbx.domain.tld de la freebox
  2. ajoute de nouveaux le domain fbx.domain.tld dans la freebox
  3. ajoute le certificat mis à jour dans la freebox

ça donne quelque chose comme

#!/bin/bash
_LIB_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
source ${_LIB_DIR}/fbx-delta-nba_bash_api.sh
 
MY_APP_ID="mycertrenew"
MY_APP_TOKEN="<put_here_your_app_token>"
 
login_freebox "$MY_APP_ID" "$MY_APP_TOKEN"
 
domain_del id=fbx.domain.tld
sleep 3
domain_add id=fbx.domain.tld
sleep 3
domain_addcert id="fbx.domain.tld" key_type="ec" \
cert_pem="/etc/letsencrypt/live/wildcard.domain.tld/cert.pem" \
key_pem="/etc/letsencrypt/live/wildcard.domain.tld/privkey.pem" \
intermediates="/etc/letsencrypt/live/wildcard.domain.tld/chain.pem"

Et le tour est joué, votre wildcard est dans la freebox, il s'auto réinjecte à chaque renew et vous accédez à votre freebox par le nom de domaine fbx.domain.tld que vous pourrez facilement reverse-proxy sur le nginx sans avoir besoin de la clé privée de la CA FreeboxOS pour emmètre un certificat pour votre reverse proxy nginx

Cette solution est celle qui me semble la meilleur dans votre cas, car sinon la seule solution que je vois est de tenter de dissassembly l'APK / IPA et de tenter de supprimer le TLS pinning, après souvent changer juste le hash sha-256 dans l'hexa ne suffit pas (= changer la signature du certificat), souvent il faut réinjecter vos propres certificats à la place de ceux de l'apk / l'ipa et c'est une opération plus délicate, à la limite du hack et pas sure que ça fonctionne avec les app récentes iOS dont tout le code doit être signé avec la CA d'Apple (bien évidemment l'application perd son statut officiel si on fait ça et donc faut forcer les install sur les devices et ne pas venir ouvrir de tickets ici ni contacter Apple / Google en cas de soucis)

Cordialement
nbanba

nbanba a commenté le 20.01.2026 18:04

Bonjour

Désolé ce que je vous ai proposé n'est peut être plus utilisable:
Sur mon téléphone Android, quand j'édite la Freebox en sélectionnant : "spécifier l'IP et le port", le champ permettant de mettre l'IP de la Freebox est maintenant grisé sans possibilité d'être renseigné…

Vous pouvez éventuellement tester la procédure ci dessus en ajoutant :

domain_setdefault id="my.domain.com"

Ça fonctionnera peut-être…

D'ici là, je regarde pour faire sauter le TLS pinning sur l'APK de mon appli Android et si j'y arrives, j'attaquerai l'appli IOS et vous ferait un retour.

Cordialement
nbanba

Chargement...

Activer les raccourcis clavier

Liste des tâches

Détails de la tâche

Édition de la tâche