Les informations d'identification SIP sont échangées sous forme de hash MD5 ou de texte brut, si vous souhaitez augmenter la sécurité de vos communications il est donc préférable de sécuriser la communication via TLS.
Limitation(s) :
- Afin de chiffrer les flux SIP ou RTP, un certificat SSL est nécessaire.
Mise en oeuvre
La configuration de TLS entre E-UC Stack et un client SIP implique l'utilisation de clés, la modification de la configuration SIP pour activer TLS, la création d'un peer SIP TLS et la modification du client SIP pour se connecter à E-UC Stack via TLS.
1 - Gestion des certificats
Wazo est livré avec des certificats auto-signés prêts à l'emploi :
tlscertfile=/usr/share/xivo-certs/server.crt tlsprivatekey=/usr/share/xivo-certs/server.key
2 - Configuration SIP
Vous devez activer le transport TLS, accédez à Portal menu Global Settings > Signalisation (PJSIP) > Transport. Créer ensuite un nouveau transport nommé transport-tls
:
Valeurs à saisir :
protocol : tls
bind : 0.0.0.0:5061
cert_file : /usr/share/xivo-certs/server.crt
priv_key_file : /usr/share/xivo-certs/server.key
method : tlsv1_2
La méthode permet de réduire aux seuls chiffrements les plus sûrs.
Nous utilisons également le port 5061 car il doit être différent de celui utilisé pour tout autre transport et 5060 est utilisé par transport-udp.
Afin de valider la configuration merci de redémarrer le service Asterisk : systemctl
restart asterisk
Optionnel :
Si tout s'est bien passé, nous devrions pouvoir voir la liste des transports dans le CLI Asterisk:
*CLI> pjsip show transports Transport: <TransportId........> <Type> <cos> <tos> <BindAddress....................> ========================================================================================== Transport: transport-tls tls 0 0 0.0.0.0:5061 Transport: transport-udp udp 0 0 0.0.0.0:5060 Transport: transport-wss wss 0 0 0.0.0.0:5060 Objects found: 2
3 - Configurer le template SIP compatible
Il est nécessaire d'ajouter un template SIP aux lignes générées afin que la configuration spécifique s'ajoute. Cette configuration est multi-tenant, il faudra donc l'ajouter à chaque tenant souhaités.
Dans le menu Setting > SIP Template, créez un nouveau template.
Valeurs à saisir :
Friendly Name : global-tls
Transport : transport-tls
Optionnel :
Vous pouvez chiffrer les flux RTP. Pour cela, il suffit d'ajouter dans la section "Endpoint" l'option media_encryption=SDES
ou media_encryption=SRTP
selon la méthode souhaitée.
4 - Application du template SIP
Il vous faut appliquer ce template SIP TLS à vos lignes SIP déjà crées, pour ce faire éditez vos lignes depuis le menu User Management > Lines
Dans le sous-menu Templates ajoutez votre template global-tls
. L'orde des template est important, global
doit précéder global-tls
dans la sélection.
Tests & debug
Vérification du bon fonctionnement
Dans les logs du démarrage d'Asterisk, la ligne suivante doit-être présente :
Ainsi, le transport TLS est bien actif.
Vérification RTP
Problèmes courants
Problèmes avec la vérification du serveur
Cas 1 :
Si l'hôte ou l'adresse IP que vous avez utilisé pour le common name
sur votre certificat ne correspond pas à votre serveur, vous pouvez rencontrer des problèmes lorsque votre client SIP appelle la E-UC Stack. Assurez-vous que le client SIP est configuré pour ne pas vérifier le certificat.
Cas 2 :
Lors de l'appel d'une E-UC Stack vers un client SIP, vous pouvez rencontrer une ERREUR sur la CLI semblable à celle-ci:
C'est le scénario opposé, où la E-UC Stack agit en tant que client et tente par défaut de vérifier le certificat. La solution est de désactiver la vérification du serveur avec l'option suivante à yes
:
Debugger les flux avec SNGREP
Activer HEP sur la Stack et dans sngrep: https://support.wazo.io/hc/fr-fr/articles/360028225891-Configurer-HEP-et-SNGREP-pour-WebRTC.
L'option sngrep -k
devrait être évitée car celle-ci ne permet pas de déchiffrer tous les algorithmes de chiffrement.