ASIX/M08/UF3/PT21/33
Per defecte, l'arxiu de configuració contempla que usarem certificats de Let's Encrypt i figuren rutes per a usar xifrat SSL a les línies 39 i 40 del ejabberd.yml
- "/etc/letsencrypt/live/localhost/fullchain.pem" - "/etc/letsencrypt/live/localhost/privkey.pem"
L'opció que tenim més fàcil és crear certificats auto-signats i canviar aquestes rutes per les que corresponguin. Ho farem de la següent manera, des del directori /root
per conveniència.
openssl genrsa -des3 -out practica.ejabberd.key 2048 openssl req -new -key practica.ejabberd.key -out practica.ejabberd.csr openssl x509 -req -days 365 -in practica.ejabberd.csr -signkey practica.ejabberd.key -out practica.ejabberd.crt
Si llistem amb la comanda ls
els arxius que hi ha al directori on hem creat el certificat i la clau veurem
practica.ejabberd.crt practica.ejabberd.csr practica.ejabberd.key
Ara és qüestió de posar l'arxiu .crt i .key a un lloc conegut que ejabberd pugui llegir. Normalment, i és un mètode estàndard, aquest tipus d'arxius es desen sota cd /etc/pki/tls/
al subdirectori certs
o bé private
segons sigui un certificat o una clau privada, respectivament. Ho fem:
[root@ejabberd tls]# mv /root/practica.ejabberd.crt /etc/pki/tls/certs/practica.ejabberd.crt [root@ejabberd tls]# mv /root/practica.ejabberd.key /etc/pki/tls/private/practica.ejabberd.key
Aleshores modificarem les línies 39 i 40 de /usr/local/etc/ejabberd/ejabberd.yml
per a concordar les rutes de la clau i el certificat segons correspongui:
- "/etc/pki/tls/certs/practica.ejabberd.crt" - "/etc/pki/tls/private/practica.ejabberd.key"
Farem un restart del servei ejabberd:
[root@ejabberd tls]# /usr/local/sbin/ejabberdctl stop [root@ejabberd tls]# /usr/local/sbin/ejabberdctl start
- Problema: si fem un
netstat
veurem que els ports d'ejjaberd no estan llistats perquè el servidor no ha arrencat. Als logs de/usr/local/var/log/ejabberd/error.log
ens hi apareix el missatge
- Problema: si fem un
2018-12-13 20:12:13.997 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate 2018-12-13 20:12:13.997 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration 2018-12-13 20:12:41.360 [error] <0.350.0>@ejabberd_pkix:add_file:250 Failed to read PEM file /etc/pki/tls/private/practica.ejabberd.key: at line 1: encrypted certificate 2018-12-13 20:12:41.360 [critical] <0.350.0>@ejabberd_pkix:stop_ejabberd:356 ejabberd initialization was aborted due to invalid certificates configuration
- Solució: els certificats que espera ejabber són del tipus PEM, i nosaltres no els hem creat així. Per a simplificar, puc utilitzar l'script
/etc/pki/tls/certs/make-dummy-cert
que em permet crear ràpidament un certificat PEM amb la comanda
- Solució: els certificats que espera ejabber són del tipus PEM, i nosaltres no els hem creat així. Per a simplificar, puc utilitzar l'script
make-dummy-cert practicam08.ejabberd.pem
Una vegada creat, editarem l'arxiu de configuració d'ejabberd en conseqüència: haurem d'esborrar una de les 2 línies ja que el certificat creat ja conté la clau privada i el certificat junt; de manera que només fa falta dir-li un arxiu a ejabberd per a utilitzar.
Després de modificar la configuració, tornarem a engegar el servei de IM i mirarem si ha engegat bé. Ara sí.
root@ejabberd certs]# /usr/local/sbin/ejabberdctl start [root@ejabberd certs]# /usr/local/sbin/ejabberdctl status The node ejabberd@localhost is started with status: started ejabberd 18.12.24 is running in that node