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.
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 :
ipbx.pem
contenant la clé privée,ipbx.crt
contenant votre certificat.
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 :
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 :
- Type : Custom
- Description : description du certificat, par exemple interface web
- Hostname : nom d’hôte, dans notre cas ipbx.arsouyes.org
- Certificate : copier puis coller le contenu du
fichier certificat
ipbx.crt
- Key : copier puis coller le contenu du fichier de
clé privée
ipbx.pem
- Chain : laissez vide, sauf si vous désirez mettre un certificat intermédiaire.
Pour valider l’ajout de votre certificat, appuyez sur 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.
- HTTP Port : laissez 80,
- HTTPS Port : laissez 443,
- Certificate : déroulez le menu et choisissez votre certificat précédemment créé, dans note cas interface web,
- HTTP Enable : laissez à Yes,
- Force HTTPS : modifier cette case permet de forcer l’utilisation de HTTPS, c’est mieux de mettre Yes.
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 :
- Le certificat doit être copié dans
/etc/pki/tls/certs/
, - La clé privée doit être copiée dans
/etc/pki/tls/private/
.
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.