Administración de HTTPS

En WOCU-Monitoring hemos habilitado HTTPS tanto para el frontend como para la comunicación entre los backends.

A continuación pasamos a detallar las operativas a tener en cuenta.

Certificados

Se han creado por defecto tres certificados autofirmados (por WOCU-monitoring):

  • Certified Authority

    • Llave privada: wocuCA.key

    • Certificado: wocuCA.pem

  • Aggregator

    • Llave privada: wocu.key

    • Certificado: wocu.pem

  • Import-tool

    • Llave privada: wocu-it.key

    • Certificado: wocu-it.pem

Los anteriores certificados se almancenan (para todos los flavours del sistema) en: [/opt/wocu/embedded/ssl/certs].

Dominios de WOCU-monitoring

Por defecto, WOCU-monitoring se envía con dominios distintos para el Aggregator e Import-tool.

  • Para el Aggregator el dominio es wocu (acceso https://wocu)

  • Para el Import-tool el dominio es wocu-it (acceso https://wocu-it)

DNS

Será necesario que los dominios wocu y wocu-it, sean capaces de traducirlo a la IP de la máquina con WOCU-monitoring ya instalado. Dado que son certificados autofirmados, se deberán añadir estos dominios a un DNS, sin embargo, usaremos el fichero de /etc/hosts del sistema.

Se añadirán las siguientes entradas al fichero /etc/hosts:

  • AIO (incorpora Agregador + Import-tool)

WOCU_AIO_IP   wocu

Atención

Poner en un AIO (Agregador + Import-tool) con el mismo DNS se debe a que Nginx expondrá solo un puerto y dominio, por lo que el Import-Tool estará sirviéndose en el mismo puerto que el Agregador y será el PROXY PASS del Nginx quién haga la diferencia de acceso.

  • Agregador

WOCU_AGGREGATOR_IP   wocu
  • Import-tool

WOCU_IMPORT-TOOL_IP   wocu-it

Configuración del Agregador (GUI)

La siguiente configuración es para un flavour AIO de WOCU-Monitoring en el Import-tool.

../../_images/7_061_advanced_configuration-add-aio-ssl_0-53.png

La siguiente configuración es para un flavour monitoring de WOCU-Monitoring. En esta casuística no está el Agregador incluido.

../../_images/7_062_advanced_configuration-add-it-ssl_0-53.png

Pautas y recomendaciones para la configuración de parámetros:

  1. Import tool host: debe coincidir con el nombre del certificado.

2. Import tool port: debe coincidir con el configurado en [nginx/default] (por defecto 443).

3. Import tool api protocol: en el uso de certificados debe cambiarse a https (por defecto HTTPS).

4. Path of CA file to validate SSL: debe registrarse la ruta donde se almacena el CA (Certificate Authority) del Agregador. Este certificado es empleado para verificar los certificados de los Import-tools añadidos (por ejemplo, https://wocu-it). En caso de no añadir la ruta del certificado cuando sí se ha habilitado HTTPS, el sistema devolverá un fallo.

Generación de certificados

Ya que WOCU-Monitoring se despliega con solo un certificado para el dominio wocu (Agregador) y para el dominio de wocu-it (Import-tool), en el caso de que existan más Import-tools, será necesario generar un certificado para cada uno de ellos.

Para ello, se deberán realizar las siguientes tareas:

A continuación, se expone un gráfico explicativo:

../../_images/7_062_advanced_configuration-create-ssl-certs_0-53.png

Generar certificados

Para la generación de certificados podemos emplear el CA ya generado por WOCU-Monitoring, algo que no aconsejamos a menos que se trate de una demo o casuística similar, por lo que procederemos a explicar el flujo completo.

Este paso deberemos repetirlo por cada Import-tool y, en última instancia, para el Agregador.

Importante

La ruta empleada para guardar los certificados, deberá ser accesible por el usuario wocu. Es por eso que utilizaremos por defecto [/opt/wocu/embedded/ssl/certs].

a. Creación de la key

Para un CA, añadir CA al nombre de la llave.

openssl genrsa -out newCA.key 2048

b. Creación del certificado con la key

Para CA usamos la llave con CA. Para una expiración menor a 10 años, será necesario cambiar el valor de -days a lo deseado.

Importante

Al crear los certificados de CA y del server, el CN no debe coincidir entre ambos certificados ya que dará error de self signed certificate.

openssl req -new -x509 -key newCA.key -out newCA.crt -days 3650

Cuando se genere el CA o un nuevo certificado (para Agregador o Import-tool) será necesario rellenar los siguentes atributos.

  • C: Country

  • ST: State

  • L: Locality

  • O: Organization

  • OU: Organization Unit

  • CN: Common Name. Deberá ser el mismo que el $DOMAIN excepto cuando se cree una CA, que se debera añadir CA.

c. Creación del fichero para el CSR (Certificate Signing Request).

cat > csr-$DOMAIN.conf << EOF
[ req ]
default_bits = 2048
prompt = no
default_md = sha256
req_extensions = req_ext
distinguished_name = dn

[ dn ]
C = ES
ST = Madrid
L = Madrid
O = Wocu Monitoring S.L.
OU = Wocu
CN = $DOMAIN

[ req_ext ]
subjectAltName = @alt_names

[ alt_names ]
DNS.1 = $DOMAIN
EOF

Importante

Es necesario cambiar la variable de $DOMAIN por el nombre del dominio y reemplazar las variables asociadas a [ dn ].

d. Creación del CSR (no aplica para CA)

Procedemos a generar el CSR utilizando el fichero de csr-$DOMAIN.conf creado anteriormente.

openssl req -new -key new.key -config csr-$DOMAIN.conf -out new.csr

e. Creación del fichero .ext para firmar el CSR

cat > $DOMAIN.ext << EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
subjectAltName = @alt_names
[alt_names]
DNS.1 = $DOMAIN
EOF

Importante

Recordar nuevamente reemplazar el $DOMAIN por el dominio.

f. Firma del CSR

openssl x509 -req -in new.csr -CA newCA.crt -CAkey newCA.key \
-CAcreateserial -out $CERTIFICATE_Signed.crt -days 1825 -sha256 -extfile \
$DOMAIN.ext

Modificar Nginx

Con los certificados ya generados, a continuación se configura distintos parámentros de Nginx:

#
# Certificates
#

server_name $DOMAIN;
ssl_certificate $PATH/$CERTIFICATE_Signed.crt;
ssl_certificate_key $PATH/$CERTIFICATE.key;

Una vez más, cambiaremos $DOMAIN por el nombre empleado en los certificados.

Modificar Import-tool del Agregador

Será necesario modificar la configuración del Import-tool en el Agregador como se indica en el apartado Configuración del Agregador (GUI).

Certificados de cliente

En este caso, ejecutar las tareas detalladas en el punto 2. y 3. de la Configuración del Agregador (GUI).

Mantener HTTP

En caso de no querer implementar SSL entre el Agregador y el Import-Tool deberemos conservar la siguiente configuración en el Nginx.

En el bloque de server, cambiar las variables de listen y de server_name:

listen 80 default_server;

server_name _;

A continuación, comentar las variables de los certificados:

#
# Certificates
#

#ssl_certificate $PATH/$NEW_CERTIFICATE.crt;
#ssl_certificate_key $PATH/$NEW_CERTIFICATE.key;

Y sobre location /import-tool:

#proxy_set_header   X-Forwarded-Proto https;

Atención

En caso de mantener HTTP, no se deberá realizar ningún cambio en el GUI del Agregador o Import-Tool.