Configuración de Certificados SSL con Let's Encrypt
Para asegurar tu instancia de OpenMeetings con SSL, utilizaremos Let's Encrypt y Certbot.
1. Instalación de Certbot
Instala Certbot en tu sistema:
sudo apt install certbot
2. Obtención de Certificados SSL
Genera un certificado SSL para tu dominio. Asegúrate de que el dominio apunta a tu IP pública y que los puertos 80 y 443 no estén en uso.
sudo certbot certonly --standalone -d tu-dominio.com
Sigue las indicaciones en pantalla, proporcionando una dirección de correo electrónico válida y aceptando los términos de servicio. El proceso generará los archivos de certificado en /etc/letsencrypt/live/tu-dominio.com/.
3. Verificación de Certificados
Puedes verificar la existencia de los certificados con:
ll /etc/letsencrypt/live/
4. Renovación de Certificados
Los certificados de Let's Encrypt tienen una validez de 90 días. Para renovarlos, ejecuta:
sudo certbot renew
5. Configuración de OpenMeetings para SSL
Convierte tus certificados Let's Encrypt a un formato JKS para que Tomcat los utilice.
Instala OpenSSL si aún no lo tienes:
sudo apt install openssl
Crea un archivo PKCS12 con tu certificado y clave privada:
sudo openssl pkcs12 -export -out /tmp/tu-dominio.com_fullchain_and_key.p12 -in /etc/letsencrypt/live/tu-dominio.com/fullchain.pem -inkey /etc/letsencrypt/live/tu-dominio.com/privkey.pem -name tomcat
Importa el archivo PKCS12 a un archivo JKS:
sudo keytool -importkeystore -deststorepass tu_contraseña -destkeypass tu_contraseña -destkeystore /tmp/tu-dominio.com.jks -srckeystore /tmp/tu-dominio.com_fullchain_and_key.p12 -srcstoretype PKCS12 -srcstorepass tu_contraseña -alias tomcat
Copia el archivo JKS a la configuración de OpenMeetings:
sudo cp /tmp/tu-dominio.com.jks /opt/open630/conf
Edita el archivo server.xml de Tomcat para habilitar SSL en el puerto 5443:
sudo vim /opt/open630/conf/server.xml
Busca el conector <connector ...="" port="5443"></connector> y modifica la sección <sslhostconfig></sslhostconfig> para que apunte a tu nuevo archivo JKS y contraseña:
<Connector port="5443" protocol="org.apache.coyote.http11.Http11NioProtocol"
maxThreads="150" SSLEnabled="true">
<SSLHostConfig>
<Certificate certificateKeystoreFile="conf/tu-dominio.com.jks"
certificateKeystorePassword="tu_contraseña"
certificateKeystoreType="JKS"
certificateVerification="false"
sslProtocol="TLS"
type="RSA" />
</SSLHostConfig>
</Connector>
Configuración del Servidor TURN (Coturn)
Para permitir la funcionalidad de pantalla compartida en entornos detrás de NAT o firewalls, configuraremos un servidor TURN con Coturn.
1. Instalación de Coturn
Añade el repostiorio y instala Coturn:
sudo add-apt-repository ppa:ubuntuhandbook1/coturn
sudo apt update
sudo apt install coturn
Habilita el servicio Coturn en su archivo de configuración:
sudo vim /etc/default/coturn
Descomenta y estalbece:
TURNSERVER_ENABLED=1
2. Configuración del Servidor TURN
Crea un directorio para los logs del servidor TURN:
sudo mkdir -p /var/log/turnserver
Genera una clave secreta aleatoria para la autenticación:
sudo openssl rand -hex 32
Edita el archivo de configuración de Coturn:
sudo vim /etc/turnserver.conf
Añade o modifica las siguiantes líneas, utilizando la clave secreta generada y tu dominio real:
use-auth-secret
static-auth-secret=tu_clave_secreta_generada
realm=tu-dominio.com
stale-nonce=0
log-file=/var/log/turnserver/turnserver.log
3. Configuración de OpenMeetings para Coturn
Edita el archivo de propiedades de OpenMeetings para apuntar al servidor TURN:
sudo vim /opt/open630/webapps/openmeetings/WEB-INF/classes/openmeetings.properties
Modifica las siguientes líneas con la IP pública de tu servidor y la clave secreta:
kurento.turn.url=TU_IP_PUBLICA:3478
kurento.turn.user=
kurento.turn.secret=tu_clave_secreta_generada
4. Reinicio de Servicios
Reinicia los servicios para aplicar los cambios:
sudo /etc/init.d/coturn restart
sudo docker restart kms
sudo /etc/init.d/tomcat34 restart
5. Apertura de Puertos en el Firewall
Asegúrate de que los siguientes puertos estén abiertos en tu firewall:
- 3478 (TCP/UDP)
- 5443 (TCP)
- 8888 (TCP)
- 49152-65535 (UDP, entrada y salida)
La implementación de un servidor TURN es crucial para que funciones como la compartición de pantalla operen correctamente, especialmente en entornos de red restrictivos.