Plateforme de nouvelle génération

Configuration du proxy inverse avec NGINX

Avec IBM Sterling® Order Management System (Next-generation), les appareils doivent utiliser mTLS lorsqu'ils communiquent avec les serveurs. Pour utiliser mTLS pendant la communication, les appareils doivent être configurés avec un certificat client qui est généré en utilisant le Sterling™ Order Management System Self Service.
La sécurité de la communication est renforcée par l'utilisation de certificats clients. Toutefois, l'utilisation de certificats client entraîne une augmentation des coûts de gestion. L'impact des coûts de gestion varie et dépend de l'infrastructure de gestion des terminaux utilisée. Pour réduire l'impact, vous pouvez utiliser plusieurs options:
  • Optimisation des certificats client uniques par unité. Cela a un impact sur le coût en grande partie. L'avantage de la sécurité est que des appareils individuels peuvent être bloqués pour accéder au service en révoquant des certificats individuels.
  • Regroupement d'unités similaires et installation d'un certificat unique par groupe. Chaque unité d'un magasin peut utiliser un seul certificat client. Ce regroupement peut être de taille arbitraire et doit être décidé par vos experts en sécurité.
  • Optimisation d'un serveur proxy inverse configuré avec un certificat client pour gérer la communication avec les serveurs Sterling Order Management System . Avec cette configuration, les unités ne sont pas configurées avec un certificat, mais reposent plutôt sur le serveur proxy pour gérer la connexion sécurisée.

L'option que vous choisissez doit être examinée par vos spécialistes de la sécurité pour déterminer si elle respecte les règles de sécurité et s'il s'agit d'un risque acceptable.

Cette page ne couvre qu'une seule méthode possible pour configurer un serveur proxy inverse. La méthode implémente un serveur proxy à l'aide d'un serveur NGINX et ne doit être envisagée qu'à des fins de démonstration ou de test. N'utilisez pas l'exemple suivant dans un environnement de production. Si vous souhaitez utiliser un serveur NGINX comme proxy inverse, consultez vos experts en sécurité pour vous aider à préparer la production du serveur. Des solutions alternatives sont possibles et peuvent déjà être disponibles dans votre réseau. Par exemple, si votre réseau utilise un pare-feu F5 , il est possible de le configurer en tant que proxy inverse. Quel que soit le matériel ou le logiciel utilisé pour implémenter le proxy inverse, il est important de sécuriser la communication entre vos périphériques et le proxy. Il n'est pas possible de fournir davantage d'informations à ce sujet dans le cadre du présent document.

image

Hypothèses

  • Vous utilisez Sterling Order Management System sur la plateforme de nouvelle génération et vous souhaitez créer et gérer un certificat client unique pour tous les clients Sterling Order Management System de votre réseau.
  • Vous avez une bonne compréhension des technologies Docker et NGINX.
  • Vous pouvez utiliser le système de ligne de commande Linux .
  • Vous avez une bonne compréhension des concepts de réseau de base.

Prérequis

  • Un environnement Sterling Order Management System sur la plateforme de nouvelle génération.
  • Un compte dans Libre-service avec accès pour générer des certificats client.
  • Compréhension de Docker.
  • Accès à l'utilisation d' Open SSL.

Procédure

Procédez comme suit à l'aide d'un NGINX basé sur un conteneur.
Remarque: Les mêmes paramètres de fichier default.conf sont applicables à NGINX qui est installé directement sur un hôte.
  1. Copiez les fichiers NGINX sur votre ordinateur local.
    1. Démarrez un conteneur temporaire pour utiliser les fichiers de configuration NGINX.
      docker run --name tmp-nginx-container -d nginx
    2. Extrayez le répertoire nginx par défaut dans un dossier de votre ordinateur local, tel que $HOME/nginx.
      docker cp tmp-nginx-container:/etc/nginx/$HOME/nginx/tmp/
    3. Supprimez le conteneur temporaire.
      docker rm -f tmp-nginx-container
      
  2. Créez un certificat client dans l'environnement Sterling Order Management System .
    1. Dans Self Service, générez un certificat client pour l'environnement et enregistrez le certificat dans votre répertoire local tel que $HOME/nginx.
    2. Exécutez la commande suivante pour extraire la clé et le certificat en tant que fichiers .pem et indiquez le mot de passe lorsque vous y êtes invité.
      cd $HOME/nginx
      openssl pkcs12 -in $FILENAME.p12 -nokeys -out client.pem
      openssl pkcs12 -in $FILENAME.p12 -nocerts -nodes -out client.key
      
  3. Créez un certificat autosigné pour NGINX à l'aide d' OpenSSL.
    cd $HOME/nginx
    openssl req -newkey rsa:2048 -nodes -keyout key.pem -x509 -days 365 -out certificate.pem
    
  4. Configurez NGINX.
    1. Dans un éditeur de texte, ouvrez $HOME/nginx/conf.d/default.conf et supprimez les configurations existantes.
    2. Copiez la configuration suivante dans $HOME/nginx/conf.d/default.conf et remplacez l' URL dans les deux champs de proxy_pass par une URL appropriée à votre environnement.
      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. Démarrez un conteneur NGINX avec des options pour les ports SSL et non SSL et un volume qui pointe vers le répertoire $HOME/nginx sur l'hôte mappé à /etc/nginx/ dans le conteneur.
    docker run --name nginx -p 9080:80 -p 9443:443 --rm -v $HOME/nginx:/etc/nginx/:Z nginx
    
  6. Validez la configuration.
    1. Dans un navigateur, accédez à NGINX à l'aide de l'une des URL suivantes:
      http://localhost:9080/smcfs/console/login.jsp
      https://localhost:9443/smcfs/console/login.jsp
      
    2. Confirmez que le navigateur est route vers l'environnement Sterling Order Management System et ne vous invite pas à fournir un certificat client.
    3. Connectez-vous à la console Sterling Order Management System et confirmez que le navigateur vous redirige vers la page d'accueil de la console Sterling Order Management System .
    4. Répétez cette opération avec des URL pour toutes les autres applications de votre environnement Sterling Order Management System .

Références