.. _https: Administración de HTTPS ======================= .. sidebar:: Atención Para conservar la configuración sin **SSL**, efectuar los :ref:`siguientes pasos `. 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) .. code-block:: WOCU_AIO_IP wocu .. Attention:: 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** .. code-block:: WOCU_AGGREGATOR_IP wocu - **Import-tool** .. code-block:: WOCU_IMPORT-TOOL_IP wocu-it .. _GUI: Configuración del Agregador (GUI) --------------------------------- La siguiente configuración es para un *flavour* **AIO** de **WOCU-Monitoring** en el **Import-tool**. .. image:: ../images/administrator_guide/7_061_advanced_configuration-add-aio-ssl_0-53.png :align: center :scale: 40 % La siguiente configuración es para un *flavour* **monitoring** de **WOCU-Monitoring**. En esta casuística no está el **Agregador** incluido. .. image:: ../images/administrator_guide/7_062_advanced_configuration-add-it-ssl_0-53.png :align: center :scale: 40 % 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: - :ref:`certificates` - :ref:`nginx` - :ref:`change_it` A continuación, se expone un gráfico explicativo: .. image:: ../images/administrator_guide/7_062_advanced_configuration-create-ssl-certs_0-53.png :align: center :scale: 60 % .. _certificates: 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**. .. Important:: 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. .. code-block:: 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. .. Important:: 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``. .. code-block:: 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*). .. code-block:: 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 .. Important:: 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. .. code-block:: openssl req -new -key new.key -config csr-$DOMAIN.conf -out new.csr **e. Creación del fichero .ext para firmar el CSR** .. code-block:: cat > $DOMAIN.ext << EOF authorityKeyIdentifier=keyid,issuer basicConstraints=CA:FALSE keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment subjectAltName = @alt_names [alt_names] DNS.1 = $DOMAIN EOF .. Important:: Recordar nuevamente reemplazar el ``$DOMAIN`` por el dominio. **f. Firma del CSR** .. code-block:: openssl x509 -req -in new.csr -CA newCA.crt -CAkey newCA.key \ -CAcreateserial -out $CERTIFICATE_Signed.crt -days 1825 -sha256 -extfile \ $DOMAIN.ext .. _nginx: Modificar *Nginx* ^^^^^^^^^^^^^^^^^ Con los certificados ya generados, a continuación se configura distintos parámentros de *Nginx*: .. code-block:: # # 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. .. _change_it: Modificar Import-tool del Agregador ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Será necesario modificar la configuración del **Import-tool** en el **Agregador** como se indica en el apartado :ref:`GUI`. Certificados de cliente ----------------------- En este caso, ejecutar las tareas detalladas en el punto **2.** y **3.** de la :ref:`GUI`. .. _maintain_http: 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``: .. code-block:: listen 80 default_server; server_name _; A continuación, comentar las variables de los certificados: .. code-block:: # # Certificates # #ssl_certificate $PATH/$NEW_CERTIFICATE.crt; #ssl_certificate_key $PATH/$NEW_CERTIFICATE.key; Y sobre ``location /import-tool``: .. code-block:: #proxy_set_header X-Forwarded-Proto https; .. Attention:: En caso de mantener **HTTP**, no se deberá realizar ningún cambio en el GUI del **Agregador** o **Import-Tool**.