Utiliser ses propres certificats dans VitalPBX

Divulgâchage : À l’installation, VitalPBX utilise ses propres certificats auto-signés pour sécuriser l’accès à son interface d’administration. Parce que c’est quand même mieux de déployer une vraie PKI, voici comment utiliser vos propres certificats. Depuis la version 2.3.6, il est possible de le faire via l’interface web. Pour les versions antérieures il va falloir tricher.

Comme nous en parlons souvent ces derniers temps, nous utilisons VitalPBX comme IPBX à la maison. Cela nous permet beaucoup de choses, comme recevoir les messages du répondeur par mail, ou éviter les robots d’appels et donc le démarchage téléphonique.

La configuration utilise une interface web via HTTPS et des certificats auto-signés. Nos navigateurs émettent donc une alerte de sécurité lors de la première connexion avec les navigateurs. On a vu mieux.

Comme nous avons créé notre propre PKI, on préfèrerait signer nous-même le certificat utilisé par VitalPBX, comme ça, les navigateurs (dans lesquels on a mis notre CA) n’émettront plus d’alertes.

skylarvision @ pixabay

Préliminaires

Avant de commencer, quelques vérifications histoire de partir sur de bonnes bases…

Les fichiers cryptograhpiques

Nous partons du postulat que vous avez déjà créé votre certificat. Sinon, vous pouvez le faire avec XCA. Appelons ces fichiers :

Le nom d’hôte

Si le nom d’hôte de vitalpbx ne correspond pas à celui renseigné dans le certificat, apache ne voudra pas l’utiliser. Il n’écoutera pas sur le port 443 ce qui est dommage. Assurez-vous donc que le nom DNS (dans le cn ou le SAN) soit le même que celui de vitalpbx. Au besoin, changez-le.

Pour changer le nom d’hôte de vitalpbx, c’est via le menu Admin/Network/Network Settings :

Changer le nom d’hôte.

Si vous avez oublié cette étape et forcez la connexion HTTP vers HTTPS, vous avez un problème… Votre interface d’administration forçe le HTTPS mais ce dernier n’est pas disponible, vous n’avez donc plus d’accès à l’interface…

Heureusement, vous pouvez corriger le problème en ligne de commande. Connectez-vous (en SSH ou en console) en tant qu’administrateur (utilisateur root) et entrez la commande suivante:

hostnamectl set-hostname ipbx.example.com

Il ne vous reste plus qu’à redémarrer le serveur pour que ça soit bien pris en compte partout 🎉.

Version 2.3.6 et supérieure

L’ajout d’un certificat se fait via l’interface web, menu Admin/System Settings/Certificates.

Renseignez les paramètres suivants :

Interface pour ajouter un certificat

Pour valider l’ajout de votre certificat, appuyez sur Save.

Bouton save

Maintenant que notre certificat est ajouté à VitalPBX, nous devons configurer le serveur pour qu’il l’utilise. Cela se passe dans le menu Admin/System Settings/HTTP Server.

configuration su serveur HTTP

Et voilà, votre serveur va utiliser votre certificat et vos navigateurs seront contents.

Version inférieure à 2.3.6

Avant la version 2.3.6, l’interface d’administration n’avait pas prévu de configurer ses propres certificats. Il fallait donc gruger pour insérer les nôtres…

Téléverser son certificat

L’interface web de VitalPBX ne permettant pas des accès systèmes, le transfert de ces fichiers devra utiliser une connexion SSH. Cette connexion est déjà disponible et vous n’aurez besoin que du mot de passe administrateur système – root – que vous avez entré lors de l’installation du boîtier.

Une fois dans la bête, on retrouve les repères habituels (pour centos), les fichiers sont donc rangés comme suit :

Techniquement, vous pourriez mettre ces fichiers ailleurs mais l’avantage de ces répertoires, c’est que a) ils ont déjà les droits d’accès pour les protéger comme il faut et b) comme c’est la tradition, les autres admins les retrouveront plus facilement.

Modification de la configuration

On va maintenant modifier la configuration du serveur web pour utiliser notre certificat et sa clé. Comme VitalPBX est créé à base de Centos avec un apache2 comme serveur web, la configuration se trouve donc dans le fichier /etc/httpd/conf.d/vitalpbx.conf.

Il faut donc repérer les directives SSL et remplacer les anciens fichiers par les nôtres. SSLCertificateFile correspond au certificat, SSLCertificateKeyFile correspond à la clé.

SSLCertificateFile    /etc/pki/tls/certs/ipbx.crt
SSLCertificateKeyFile /etc/pki/tls/private/ipbx.pem

Enfin, rechargez le fichier de configuration de apache2 par la commande suivante :

service httpd reload

Et après ?

Maintenant, votre IPBX ne vous posera plus de problème de connexion et vous pourrez vous connecter depuis n’importe quel réseau.