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

  • État Close
  • Type de tâche Anomalie
  • Catégorie Non trié
  • Assignée à Maxime Bizon (mbizon)
  • Système d'exploitation Tous
  • Sévérité Basse
  • Priorité Normale
  • Basée sur la version 3.1.3
  • Due pour la version Non décidé
  • Date d'échéance Non décidé
Concerne le projet: Freebox Server (Pop V8/ Delta V7 / Revolution V6 / Server Mini 4K)
Ouverte par Frederic Gloannec (TheGreenBowVPN) - 24/07/2015
Dernière édition par Romain FLIEDEL (rfliedel) - 20/10/2015

FS#18050 - OpenVPN: Le fichier .ovpn ne contient pas le CA du certificat client.

Bonjour,

Nous avons développé un client VPN compatible OpenVPN et compatible avec la Freebox en mode routé.
Notre client VPN accepte le fichier .ovpn fourni par la Freebox. Le tunnel monte correctement, et le poste distant a accès au réseau local de la Freebox.

Cependant, nous rencontrons un petit soucis qui génère un warning lors de la configuration du tunnel.
En effet, il semble que les certificats de la Freebox Server et de l’utilisateur sont issus de 2 autorités de certification (CA) différents, mais seul le CA de la freebox server est fourni dans le fichier .ovpn.
Notre client cherche à valider la chaine de certification du certificat utilisateur et échoue car ce CA n’est pas connu, et cela génère un warning de sécurité.

Le sujet du certificat CA inclus dans le fichier .ovpn est par exemple:
“C=FR, O=Freebox SA, CN=Freebox OpenVPN server CA for xxxxxxxxxxxxxxx”
alors que l’émetteur (issuer) du certificat client a pour sujet:
“C=FR, O=Freebox SA, CN=Freebox OpenVPN client CA for xxxxxxxxxxxxxxx”
(Note: les champs keyid et serial sont également différents).

D’après la documentation OpenVPN, en général un seul CA devrait être utilisé (”THE master root certificate”):
To use TLS mode, each peer that runs OpenVPN should have its own local certificate/key pair ( –cert and –key ), signed by the root certificate which is specified in –ca.
When two OpenVPN peers connect, each presents its local certificate to the other. Each peer will then check that its partner peer presented a certificate which was signed by the master root certificate as specified in –ca.

Ma question est alors la suivante: est-il possible de prévoir une évolution pour que le CA du certificat utilisateur puisse être connu du coté client VPN ?

Il y a plusieurs solutions envisageables:
- soit revenir à un seul CA pour générer le certificat de la Freebox server, et les certificats utiliseur
- soit inclure le CA du certificat utilisateur dans le .ovpn (il est effectivement possible de le faire d’après la documentation OpenVPN: “–ca file: Certificate authority (CA) file in .pem format, also referred to as the root certificate. This file can have multiple certificates in .pem format, concatenated together.“).
- soit donner un accès à ce CA via l’interface de configuration de la Freebox server, charge à l’utilisateur de prendre ce CA pour le mettre par exemple dans le magasin Windows (et dans ce cas notre client VPN arrivera à vérifier la chaine de certification).

Merci,

Frederic Gloannec
TheGreenBox VPN.

Close par  Romain FLIEDEL (rfliedel)
mardi 20 octobre, 2015 08:43:08
Raison de clôture :  Résolu
Commentaires supplémentaires de clôture :  En 3.1.5

Cette tache ne dépend pas d'autre tache

Maxime Bizon (mbizon)
vendredi 24 juillet, 2015 10:39:55

Bonjour Frederic,

D’après la documentation OpenVPN, en général un seul CA devrait être utilisé (”THE master root certificate”):

je pense que cette partie de la doc n'a pas été mise à jour, car utiliser 2 CA différentes est désigné ailleurs dans le man comme mode "split-CA"

ça ne me parait pas être un mode ésotérique, on peut imaginer vouloir faire signer la clé de son serveur par un CA "connu/réputé" (Verisign, ...), et pourtant gérer ses certificats clients avec une CA perso. C'est exactement ce qu'on fait quand on fait du HTTP TLS avec certificat client.

"Notre client cherche à valider la chaine de certification du certificat utilisateur et échoue car ce CA n’est pas connu, et cela génère un warning de sécurité.

là par contre je ne comprends pas l'intérêt de cette vérification ?

votre client c'est une ré-implémentation de openvpn ou un frontend ?

Frederic Gloannec (TheGreenBowVPN)
vendredi 24 juillet, 2015 11:59:22

Bonjour Maxime,

Merci pour le retour rapide.

Ok, je n'avais pas vu jusqu'à présent cette notion de "Split-CA" dans le man. On trouve effectivement l'info suivante (sur la même page https://community.openvpn.net/openvpn/wiki/Openvpn23ManPage à laquelle je faisais référence):

–extra-certs file Specify a file containing one or more PEM certs (concatenated together) that complete the local certificate chain.
This option is useful for "split" CAs, where the CA for server certs is different than the CA for client certs. Putting certs in this file allows them to be used to complete the local certificate chain without trusting them to verify the peer-submitted certificate, as would be the case if the certs were placed in the ca file.

Du coup, c'est en fait l'option que j'aimerais avoir dans le .ovpn fourni par le serveur (et plus exactement son équivalent Inline comme pour les autres certificats).
L'intérêt est de faire une vérif complémentaire que le certificat utilisé référence bien un CA connu, pour plus de sécurité, comme proposé par cette commande OpenVPN.
Ce mécanisme est générique dans notre client il s'applique aussi aux tunnels IPsec.

Notre client VPN contient notre propre (ré-)implémentation du protocole OpenVPN.

Cordialement,

Frédéric.
TheGreenBow.

Chargement...