• 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Configuración del proxy https de Qnap con uno o varios contenedores
#1
Joder, si me descuido me falta foro para poder ponerle el título al post, en fin, ese título largo va a ser un reflejo de lo largo que va a ser este post.

Introducción:

A continuación voy a tratar de explicar de manera muy simple y apta para todos los públicos varias formas muy sencillas de utilizar el proxy que nos proporciona Qnap para tener acceso desde el exterior por https a uno o varios contenedores que tengamos instalados en nuestro nas. Lo primero que nos permite un proxy instalado en el nas es que en lugar de abrir varios puertos en el router para acceder desde el exterior a cada contenedor que tengamos sólo tenemos que abrir el puerto del proxy, en el router, en el caso que voy a explicar el 443, ya que al hacerlo así el proxy se encarga el solito de redirigir la petición externa al correspondiente contenedor. Otra función del proxy es que como los contenedores están basados en http lo que hace es redirigir esas peticiones de acceso http a https. Uno de los proxys más conocidos es Nginx y para poderlo instalar en el nas lo podemos hacer mediante contenedor con el tutorial que tiene el amigo @Ganekogorta en este foro:

https://www.qnapclub.es/showthread.php?tid=4781

Ese tutorial es bastante sencillo de implementar pero a muchos de nosotros nos puede echar atrás debido a que para instalarlo tenemos que acceder al nas por ssh e instalarlo por comandos de consola. Cómo este post va a estar basado en la sencillez lo voy a hacer utilizando el proxy que ya tenemos instalado de Qts.

A la hora de utilizar un proxy para las conexiones https tenemos que tener dos cosas, un dominio y un certificado. Qnap en nuestro nas nos ofrece de serie las dos cosas, NO un dominio pero si un subdominio xxxx.myqnapcloud.com y un certificado que "de serie" es autofirmado pero que podemos cambiar fácilmente por uno de Lets Encrypt. El problema radica en que para tener ese subdominio myqnapcloud y un certificado Lets Encrypt tenemos que activarlo en el nas y últimamente no es muy buena idea por seguridad hacerlo:

   

Lo siguiente que voy a explicar lo voy a dividir en varias partes siempre utilizando herramientas GRATUITAS:

 - Proxy de QTS + Cloudflare

 - Proxy de QTS + DDNS

 - Proxy de QTS + myqnapcloud


Primera parte: Proxy de QTS + Cloudflare

Como he comentado antes para utilizar un proxy https sea el que sea nos es necesario un dominio propio + certificado https. El dominio propio lo podemos comprar a dia de hoy a unos 4 euros anuales en las webs destinadas a su venta. En Cloudflare también lo podemos comprar pero no es obligatorio hacerlo para lo que voy a explicar. Tengamos el dominio comprado en el sitio que sea al registrarnos en Cloudflare podemos hacer que actúe como proxy de ese dominio. Eso quiere decir que cualquier acceso a nuestro nas pasa primero por el proxy de Cloudflare y a continuación los servidores de Cloudflare se conectan con nuestro nas y después veremos que se conectarán al proxy de QTS. Por no alargarme con el tema Cloudflare lo explico mejor en el siguiente post:

https://www.qnapclub.es/showthread.php?tid=3881

Cloudflare tiene dos certificados https, el primero se llama Certificado de Perímetro y lo gestionan ellos y sirve para que el visitante reciba la conexión https. El segundo certificado es para el Servidor de Origen que en nuestro caso va a ser nuestro nas y es el encargado de la conexión https entre los servidores de Cloudflare y nuestro nas. Este último certificado es el que vamos a utilizar. Utilizándolo la conexión quedaría así:

   

Lo bueno del certificado https para el Servidor de Origen es que, aparte de gratuito, es válido para 17 años con lo cual no tenemos que molestarnos en renovarlo durante mucho tiempo. Registrados gratuítamente en Cloudflare podemos disponer de ese certificado. Para utilizarlo en nuestro nas Cloudflare NO PERMITE su descarga ya que tiene otro método....sólo permite COPIARLO. 

   

En un ordenador windows - linux creamos un archivo de texto y pegamos el contenido del certificado de Cloudflare. Hecho esto cambiamos la extensión txt de ese archivo a pem

Ya tenemos en nuestro ordenador el certificado de Cloudflare para el Servidor de Origen, o sea, el nas. Ahora nos hace falta generar una clave private.key
Para crearla en un ordenador windows - linux abrimos un Terminal y ponemos el siguiente comando:

openssl req -new -newkey rsa:4096 -nodes -keyout private.key -out private.csr

AVISO: hace mucho tiempo que generé esa clave private.key y ese comando lo tenía guardado. Es posible que al utilizarlo además de crearse la private.key se genere también un archivo private.csr si es así eliminamos el archivo private.csr que no nos hace falta para nada, sólo queremos el archivo private.key

Hecho lo anterior ya tenemos en nuestro ordenador un certificado de Cloudflare válido para 17 años con extensión .pem y una clave private.key
Ese certificado con extensión .pem se puede convertir a uno con extensión .crt pero para eso Google es vuestro amigo.

Cómo dije al principio nuestro nas ya tiene de serie un certificado autofirmado de Qnap que se puede sustituir por uno de Lets Encrypt. El proxy de QTS utiliza para las conexiones https el certificado que tengamos instalado en nuestro nas:

   

Lo que vamos a hacer es CAMBIARLO por el de Cloudflare. Este proceso se puede revertir sin problemas. Aunque no es necesario si queremos ser precavidos podemos descargar a nuestro ordenador el certificado que tenemos instalado en el nas ANTES de cambiarlo dándole al botón de Descargar certificado:

   

Veremos que se nos descarga a nuestro ordenador un certificado y una clave privada en formato zip. A continuación le damos al botón de Reemplazar certificado:

   

Aquí le tenemos que indicar la localización en nuestro ordenador del certificado de Cloudflare y la private.key que generamos antes. Si os fijáis en la imagen veréis que mi certificado de Cloudflare tiene la extensión .crt el motivo de que esté así es que yo lo tuve que convertir hace tiempo de .pem a .crt para poder utilizarlo en otro sitio.
A continuación le damos a Aplicar y al cabo de unos pocos segundos nos aparecerá este mensaje de advertencia:

   

NO PASA NADA, el motivo es porque cómo tenemos iniciada la sesión en el nas con el certificado antiguo al sustituirlo por el de Cloudflare nos obliga a RECARGAR LA PAGINA, al hacerlo podemos ver que el certificado de Cloudflare se ha instalado perféctamente:

   

Antes he comentado que podíamos ANTES de sustituir el certificado original del nas por el de Cloudflare descargarnos una copia. Si nos fijamos en la imagen que acabo de poner nos aparece un nuevo botón en el que se nos permite Restablecer los valores predeterminados, es decir, podemos volver atrás sin problemas.

Cómo he explicado antes el proxy de QTS hace uso del certificado https que tengamos instalado en el nas así que a partir de este momento utilizará el de Cloudflare.
El proxy de QTS hace uso del puerto 443 así que antes de ponerlo en marcha nos tenemos que asegurar que el acceso a nuestro nas o cualquier otro servicio haga uso de ese puerto. Para no alargarme más podéis ver todo esto al principio del siguiente video:

https://www.youtube.com/watch?v=aorqISHpW0o

Vamos a suponer que tenemos comprado un dominio pepito.com Mi nas tiene la ip local 192.168.1.3 y tengo creado en Container Station un contenedor de Calibre-web https://www.qnapclub.es/showthread.php?tid=3048 que tiene la ip de acceso 192.168.1.6 y utiliza el puerto 8083

   

Le damos al botón Añadir y lo tenemos que dejar, en este caso, así:

   

En la misma ventana pero un poco más abajo ( no me cogía en la captura de pantalla ) también lo dejamos así:

   

Esta configuración es válida para mi Calibre-web, por supuesto tenéis que modificar estos valores según la configuración del contenedor que tengáis instalado.

   

Ya lo tenemos todo. Ahora nos vamos a nuestro router y abrimos el puerto 443 apuntando a la ip local del nas.

¿Que tenemos que hacer si tenemos en Container Station más de un contenedor, por ejemplo, uno de Nextcloud. Lo primero que hay que hacer es ir a la web donde hayamos comprado el dominio y crear un subdominio, por ejemplo, nextcloud.pepito.com
Hecho esto repetimos la misma operación en el proxy de QTS añadiendo una segunda regla poniendo en el apartado Nombre del dominio nexcloud.pepito.com y poniendo también, lógicamente, la ip y el puerto que utilice ese contenedor.

Resumiendo: Aunque lo que acabo de explicar es muy largo de leer es muy sencillo de implementar y todo con herramientas gratuitas. A la hora de utilizar un proxy en nuestro nas tenemos la posibilidad de instalar el contenedor de Ganegokorta a través de Nginx o el integrado en QTS y cada uno es libre de utilizar la opción que más le guste. Cómo digo el proxy de QTS ya está instalado en el nas y es ultrasencillo de utilizar. A la hora de los certificados https la opción de Cloudflare que nos da uno gratuitamente válido por un montón de años es digna de valorar no sólo porque nos permite no estar pendiente de las renovaciones sino, como expliqué antes, instalarlo en QTS es extremádamente sencillo. Y de esto va este post.....sencillez y utilidad por encima de todo.

Segunda parte: Proxy de QTS + DDNS

Este largo post está dividido en 3 partes, a mi entender, de mayor a menor importancia y por encima de todo lo que estoy explicando quiero que sea entendible y fácilmente puesto en marcha por cualquier usuario de un nas tenga mayores o menores conocimientos. Antes he comentado que una de las funciones principales de un proxy es que en lugar de tener que abrir un puerto en el router para cada contenedor que tengamos sólo tengamos que abrir el puerto 443 del proxy en el router. En la primera parte de este post he explicado cómo configurarlo con dominio propio y certificado de Cloudflare. En esta segunda parte voy a explicar cómo configurar el proxy de QTS sin dominio propio y sin certificado y la utilidad de todo esto sólamente va a consistir en lo que acabo de explicar.....abrir un sólo puerto en el router para distintos contenedores, eso si, la conexión desde el exterior será a través de http y NO a través de https.

Un DDNS es un sistema que permite tener actualizada la ip wan de nuestra red local. Qnap con su servicio myqnapcloud nos ofrece su propio DDNS. El problema está que para poder usarlo tenemos que activar AL COMPLETO ese servicio myqnapcloud y cómo dije al principio de este post NO es recomendable por seguridad:

   

Aún así la tercera parte de este post estará dedicada a su utilización. A pesar de que si no activamos en nuestro nas myqnapcloud si podemos activar DDNS de otros proveedores:

   

Curiósamente de la lista de proveedores de DDNS no está uno de los más populares....Duckdns sin embargo lo podemos añadir seleccionando la opción Customized poniendo los datos correspondientes a nuestra cuenta gratuita de ese proveedor:

   

Por seguir el ejemplo de duckdns este proveedor de DDNS gratuitos nos permite 5 subdominios xxxx.duckdns.org que podemos utilizar con el proxy de QTS para que este los redirija a los distintos contenedores que tengamos en Container Station. No voy a explicar cómo hacerlo por que ya lo he hecho en la primera parte de este post. A la hora de añadir una regla en el proxy de QTS en lugar de poner pepito.com en el apartado Nombre del dominio pondríamos, por ejemplo, calibre.duckdns.org y si tenemos un contenedor de Nextcloud, por ejemplo, nextcloud.duckdns.org

Resumiendo: Sin tener activado myqnapcloud en el nas podemos utilizar el proxy de QTS abriendo sólamente el puerto 443 en nuestro router para dar acceso a uno o más contenedores que tengamos instalados en el nas. No va a ser un acceso https desde el exterior ya que al no tener certificado sería a través de http pero podría ser una opción "de emergencia" para algunos usuarios.


Tercera parte: Proxy de QTS + myqnapcloud

Esta es la parte más sencilla de todas, tan sólo tenemos que tener activado mynapcloud en el nas. Cómo comenté al principio de este post en el nas tenemos instalado de serie un certificado autofirmado por Qnap que pertenece al subdominio xxxxx.myqnapcloud.com que se nos otorga gratuítamente. Ese certificado lo podemos sustituir fácilmente por uno mejor de Lets Encrypt. Y todo este "sistema" lo podemos utilizar con el proxy de QTS. En vez de explicar cómo hacerlo os dejo un video en el que Qnap, a partir del minuto 4 lo hace:

https://www.youtube.com/watch?v=li4eN1UyAOo

Para terminar: Existe una cuarta opción que sería válida teniendo varios contenedores instalados en Container Station. Para implementarla haríamos una mezcla de lo que acabo de explicar en la Tercera parte de este post y la Segunda parte. Es decir, podríamos usar https a través de myqnapcloud en el proxy de QTS con el contenedor al que más aprecio que le tengamos y para el resto utilizar DDNS.
  Reply
#2
Thumbs Up 
Hola

Si restauramos los certificados mediante el botón, estos van a fábrica y no a los de myqnapcloud.
Estos los tenemos en el zip descargado previamente.

Se me hace raro que el proxy de Qnap no haga el salto de ir a una http y saltar a una https 
Huh
Los certificados de myqnapcloud.com no serían autofirmados
Los autofirmados son los de la propia nas, lo que trae por defecto. ?

Muy buen hilo  Smile
Un saludo

Agur eta ondo ibili

Ganekogorta (TS-469Pro, TVS-673e, QBoat Sunny, TS-453Be, TR-002 y QHora-301w) Ʀɐɯ0η
  Reply
#3
Buenas. Estoy siguiendo el tutorial y a la hora de solicitar el certificado a cloudfare me da la opción de prívate key. Debo usar esa o crearla con tu código?
  Reply
#4
(16-05-2023, 09:51 AM)Oroimenak Wrote: Buenas. Estoy siguiendo el tutorial y a la hora de solicitar el certificado a cloudfare me da la opción de prívate key.  Debo usar esa o crearla con tu código?

Si, tienes que usar esa. Cuando solicitas el certificado en formato PEM verás que te sale la clave del certificado que podrás copiar ( no deja descargarla ). Creas un archivo, por ejemplo, certificado.pem y lo abres con el bloc de notas y le pegas la clave.

Un poco más abajo está la private key que tienes que hacer lo mismo. La copias y creas un archivo private.key y la pegas.

A continuación importas las dos cosas en el nas.
  Reply
#5
(16-05-2023, 06:41 PM)yeraycito Wrote:
(16-05-2023, 09:51 AM)Oroimenak Wrote: Buenas. Estoy siguiendo el tutorial y a la hora de solicitar el certificado a cloudfare me da la opción de prívate key.  Debo usar esa o crearla con tu código?

Si, tienes que usar esa. Cuando solicitas el certificado en formato PEM verás que te sale la clave del certificado que podrás copiar ( no deja descargarla ). Creas un archivo, por ejemplo, certificado.pem y lo abres con el bloc de notas y le pegas la clave.

Un poco más abajo está la private key que tienes que hacer lo mismo. La copias y creas un archivo private.key y la pegas.

A continuación importas las dos cosas en el nas.


ok. Gracias.
Una última consulta. He de cambiar el formato al certificado de .pem a .crs o con el .pem me vale para importarlo al NAS?
  Reply




Users browsing this thread: 1 Guest(s)