Securizando las conexiones a Nextcloud y ONLYOFFICE

Una de las tareas más básicas que nos veremos obligados a realizar, será el securizar los accesos a Nextcloud y a ONLYOFFICE, sobre todo si pensamos trabajar a través de Internet. Así que, en este documento veremos cómo sustituir el tráfico no cifrado HTTP por uno seguro con HTTPS, veremos inicialmente la configuración para Nextcloud y finalmente sobre ONLYOFFICE.

 

Habilitando accesos seguros a Nextcloud,

Si queremos que los usuarios accedan a Nextcloud de manera segura, tendremos que instalar un certificado en el servidor Apache de nuestro Nextcloud. Supongo que ya tendremos pensado algún FQDN para este servicio, así que el certificado debe ser válido para dicho nombre de dominio, o usar un certificado Wildcard y ya! En mi escenario utilizaré el nombre de datos.openservices.eus para referirme al servidor Nextcloud y obviamente crearé la entrada DNS correspondiente en la zona pública y privada.

 

Antes de empezar, ¿qué necesitamos? Los certificados! Debemos presentarlos en el formato adecuado, tenemos que tener el certificado, su clave privada y la cadena de certificados de las CA. Lo haremos fácil, suponiendo que yo tengo un fichero PFX que en su día generé en otro servidor (IIS en Windows por ejemplo), lo copiaremos con SCP al servidor, y además de eso tenemos que buscar o hacer un fichero con la cadena de los certificados de las entidades emisoras, que normalmente nuestro proveedor de certificados nos lo habrá mandado en su día 😉

 

Para separar de un fichero PFX y obtener el certificado público por un lado y la clave privada por otro, podremos hacerlo con este ejemplo:

openssl pkcs12 -in Wildcard_Open_Services.pfx -clcerts -nokeys -out wildcard_open_services.cer
openssl pkcs12 -in Wildcard_Open_Services.pfx -nocerts -nodes -out wildcard_open_services.key

 

Comenzamos habilitando el módulo de SSL y editamos el fichero de configuración del sitio de Nextcloud.

sudo a2enmod ssl

 

Copiamos los certificados que acabamos de generar al directorio de certificados de Apache además del fichero con toda la cadena de las CA intermedias:

sudo cp wildcard_open_services.* /etc/apache2/ssl
sudo mv openservices_eus.ca-bundle /etc/apache2/ssl/cadena.crt

 

Editamos el fichero /etc/apache2/sites-enabled/default-ssl.conf de configuración del sitio seguro de Apache y modificamos las entradas que hacen referencia al certificado, a la clave privada y a la cadena de certificados:

SSLCertificateFile /etc/apache2/ssl/wildcard_open_services.cer
SSLCertificateKeyFile /etc/apache2/ssl/wildcard_open_services.key
SSLCertificateChainFile /etc/apache2/ssl/cadena.crt

Grabamos y reiniciamos Apache & validamos que ya podremos acceder al sitio de Nextcloud mediante https seguro:

sudo service apache2 restart

 

Poner el sitio predeterminado de Nextcloud en Apache,

Por cierto, si queréis evitar que vuestros usuarios tengan que teclear /nextcloud y hacer por tanto dicho sitio como el predeterminado en Apache, editaremos los ficheros de configuración /etc/apache2/sites-enabled/000-default.conf y /etc/apache2/sites-enabled/default-ssl.conf de los sitios, modificando la ruta:

DocumentRoot /var/www/nextcloud

 

Y reiniciamos Apache!

sudo service apache2 restart

 

Habilitando accesos seguros a ONLYOFFICE,

Si queremos securizar el tráfico y los accesos a Document Server, deberemos instalar un certificado SSL en Nginx, que es el servidor web que estamos usando y así cifrar sus conexiones usando HTTPS, además al final veremos cómo cambiar el puerto por si nos interesase a posteriori abrir este escenario a Internet.

 

Igual que antes, ONLYOFFICE también necesita tener los certificados en el formato específico de Nginx, tenemos que dejar en la carpeta de certificados el certificado público, la clave privada y un certificado con la cadena de todas las CA intermedias o de raíz.

 

Recordamos los pasos seguidos para separar de un fichero PFX y obtener el certificado público por un lado y la clave privada:

openssl pkcs12 -in Wildcard_Open_Services.pfx -clcerts -nokeys -out wildcard_open_services.cer
openssl pkcs12 -in Wildcard_Open_Services.pfx -nocerts -nodes -out wildcard_open_services.key

 

Además, si no queremos tener problemas de confianza del certificado, se recomienda generar el fichero del certificado con la cadena de todas las CA, algo así nos puede ayudar a obtenerlo el siguiente comando, que creará 1 fichero con todos los certificados:

cat /etc/ssl/certs/wildcard_open_services.cer openservices_eus.ca-bundle > wildcard_open_services_y_cadena.cer

 

Copiamos los ficheros generados al directorio de certificados, paramos Nginx, y creamos un fichero de configuración para acceso a ONLYOFFICE seguro:

sudo cp wildcard_open_services.* /etc/ssl/certs/
sudo service nginx stop
sudo cp -f /etc/onlyoffice/documentserver/nginx/onlyoffice-documentserver-ssl.conf.template /etc/nginx/conf.d/onlyoffice-documentserver.conf

 

Editamos el fichero de configuración y le añadimos la ruta al certificado y a su clave privada:

sudo vim /etc/nginx/conf.d/onlyoffice-documentserver.conf
ssl_certificate /etc/ssl/certs/wildcard_open_services_y_cadena.cer;
ssl_certificate_key /etc/ssl/certs/wildcard_open_services.key;

 

Por cierto, es momento si queremos cambiarle el puerto, el el fichero de configuración, modificaremos la sección donde escucha y seleccionamos el puerto que nos interese:

listen 0.0.0.0:4443 ssl;
listen [::]:4443 ssl default_server;

 

Bastará con arrancar de nuevo Nginx y verificar que podemos acceder por la nueva URL, con https:// y al puerto que hayamos especificado:

sudo service nginx start

Héctor Herrero

Autor del blog Bujarra.com
Cualquier necesidad que tengas, no dudes en contactar conmigo, os intentare ayudar siempre que pueda, compartir es vivir 😉 . Disfrutar de los documentos!!!

Últimos Posts de: Héctor Herrero (ver todos)