Plataforma de próxima generación

Configuración del proxy inverso con NGINX

Con IBM Sterling® Order Management System (Next-generation), los dispositivos deben utilizar mTLS al comunicarse con los servidores. Para utilizar mTLS durante la comunicación, los dispositivos deben configurarse con un certificado de cliente que se genera utilizando el Sterling™ Order Management System Self Service.
La seguridad de la comunicación se incrementa mediante el uso de certificados de cliente. Sin embargo, el uso de certificados de cliente introduce un mayor coste de gestión. El impacto de los costes de gestión varía y depende de la infraestructura de gestión de dispositivos que se está utilizando. Para reducir el impacto, a continuación se muestran varias opciones que puede utilizar:
  • Aprovechar certificados de cliente exclusivos por dispositivo. Esto repercute en gran medida en el coste. La ventaja para la seguridad es que se puede bloquear el acceso de dispositivos individuales al servicio revocando certificados individuales.
  • Agrupación de dispositivos similares e instalación de un certificado exclusivo por grupo. Cada dispositivo de un almacén puede utilizar un único certificado de cliente. Esta agrupación puede ser de tamaño arbitrario y debe ser decidida por sus expertos en seguridad.
  • Aprovechando un servidor proxy inverso que se ha configurado con un certificado de cliente para gestionar la comunicación con los servidores de Sterling Order Management System . Con esta configuración, los dispositivos no se configuran con un certificado, sino que se basan en el servidor proxy para gestionar la conexión segura.

La opción que elija debe ser revisada por los expertos en seguridad para determinar si cumple las políticas de seguridad y si es un riesgo aceptable.

Esta página sólo cubre un método posible para configurar un servidor proxy inverso. El método implementa un servidor proxy utilizando un servidor NGINX y se debe tener en cuenta sólo para fines de demostración o prueba. No utilice el ejemplo siguiente en un entorno de producción. Si desea utilizar un servidor NGINX como proxy inverso, consulte a sus expertos en seguridad para ayudarle a preparar la producción del servidor. Las soluciones alternativas son posibles y es posible que ya estén disponibles en la red. Por ejemplo, si la red utiliza un cortafuegos F5 , es posible configurarlo como un proxy inverso. Independientemente del hardware o software que se utilice para implementar el proxy inverso, es importante proteger la comunicación entre los dispositivos y el proxy. Proporcionar más información sobre este tema está fuera del alcance de este documento.

imagen

Supuestos

  • Utilice el SistemaSterling Order Management en la plataforma de próxima generación y desea crear y gestionar un único certificado de cliente para todos los clientes de Sterling Order Management System de la red.
  • Tiene una buena comprensión de las tecnologías Docker y NGINX.
  • Puede utilizar el sistema de línea de mandatos Linux .
  • Usted tiene una comprensión justa sobre los conceptos básicos de red.

Requisitos previos

  • Un entorno de Sterling Order Management System en la plataforma de próxima generación.
  • Una cuenta en Autoservicio con acceso para generar certificados de cliente.
  • Comprensión de Docker.
  • Acceso para utilizar Open SSL.

Procedimiento

Utilice los pasos siguientes utilizando un NGINX basado en contenedor.
Nota: Los mismos valores de archivo default.conf son aplicables a NGINX que se instala directamente en un host.
  1. Copie los archivos NGINX en el sistema local.
    1. Inicie un contenedor temporal para trabajar con los archivos de configuración de NGINX.
      docker run --name tmp-nginx-container -d nginx
    2. Extraiga el directorio nginx predeterminado en una carpeta del sistema local, como por ejemplo $HOME/nginx.
      docker cp tmp-nginx-container:/etc/nginx/$HOME/nginx/tmp/
    3. Suprima el contenedor temporal.
      docker rm -f tmp-nginx-container
      
  2. Cree un certificado de cliente en el entorno de Sterling Order Management System .
    1. En Self Service, genere un certificado de cliente para el entorno y guarde el certificado en su directorio local, como $HOME/nginx.
    2. Ejecute el mandato siguiente para extraer la clave y el certificado como archivos .pem y proporcione la contraseña cuando se le solicite.
      cd $HOME/nginx
      openssl pkcs12 -in $FILENAME.p12 -nokeys -out client.pem
      openssl pkcs12 -in $FILENAME.p12 -nocerts -nodes -out client.key
      
  3. Cree un certificado autofirmado para NGINX utilizando OpenSSL.
    cd $HOME/nginx
    openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
    
  4. Configure NGINX.
    1. En un editor de texto, abra $HOME/nginx/conf.d/default.conf y suprima las configuraciones existentes.
    2. Copie la siguiente configuración en $HOME/nginx/conf.d/default.conf y sustituya la URL en los dos campos proxy_pass por una URL apropiada para su entorno.
      server {
              listen 80;
              listen [::]:80;
              server_name localhost;
      
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
      
          server {
              listen 443 ssl;
              listen [::]:443 ssl;
              server_name localhost;
              ssl_certificate     /etc/nginx/certificate.pem;
              ssl_certificate_key /etc/nginx/key.pem;
              ssl_protocols       TLSv1.2;
              ssl_ciphers         HIGH:!aNULL:!MD5;
              location / {
                  proxy_pass https://EXAMPLE-prod-4.oms.supply-chain.ibm.com/;
                  proxy_ssl_server_name on;
                  proxy_http_version 1.1;
                  proxy_ssl_certificate /etc/nginx/client.pem;
                  proxy_ssl_certificate_key /etc/nginx/client.key;
                  proxy_ssl_session_reuse on;
                  ######
                  ## Settings specific to a Docker container mapped to non-80/443 port on host
                  absolute_redirect off;
              }
          }
  5. Inicie un contenedor NGINX con opciones para puertos SSL y no SSL y un volumen que apunta al directorio $HOME/nginx en el host que está correlacionado con /etc/nginx/ dentro del contenedor.
    docker run --name nginx -p 9080:80 -p 9443:443 --rm -v $HOME/nginx:/etc/nginx/:Z nginx
    
  6. Valide la configuración.
    1. En un navegador, acceda a NGINX utilizando uno de los URL siguientes:
      http://localhost:9080/smcfs/console/login.jsp
      https://localhost:9443/smcfs/console/login.jsp
      
    2. Confirme que el navegador direcciona al entorno de Sterling Order Management System y no le solicita que proporcione un certificado de cliente.
    3. Inicie sesión en la consola de Sterling Order Management System y confirme que el navegador le redirige a la página de inicio de la consola de Sterling Order Management System .
    4. Repita los pasos con los URL para todas las demás aplicaciones del entorno de Sterling Order Management System .

Referencias