Configuration du proxy inverse avec NGINX
- 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.
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
Procédure
default.conf sont applicables à NGINX qui est installé directement sur un hôte.- Copiez les fichiers NGINX sur votre ordinateur local.
- Démarrez un conteneur temporaire pour utiliser les fichiers de configuration NGINX.
docker run --name tmp-nginx-container -d nginx - Extrayez le répertoire
nginxpar défaut dans un dossier de votre ordinateur local, tel que$HOME/nginx.docker cp tmp-nginx-container:/etc/nginx/$HOME/nginx/tmp/ - Supprimez le conteneur temporaire.
docker rm -f tmp-nginx-container
- Démarrez un conteneur temporaire pour utiliser les fichiers de configuration NGINX.
- Créez un certificat client dans l'environnement Sterling Order Management System .
- 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. - Exécutez la commande suivante pour extraire la clé et le certificat en tant que fichiers
.pemet 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
- Dans Self Service, générez un certificat client pour l'environnement et enregistrez le certificat dans votre répertoire local tel que
- 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 - Configurez NGINX.
- Dans un éditeur de texte, ouvrez
$HOME/nginx/conf.d/default.confet supprimez les configurations existantes. - Copiez la configuration suivante dans
$HOME/nginx/conf.d/default.confet remplacez l' URL dans les deux champs deproxy_passpar 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; } }
- Dans un éditeur de texte, ouvrez
- 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/nginxsur 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 - Validez la configuration.
- 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 - Confirmez que le navigateur est route vers l'environnement Sterling Order Management System et ne vous invite pas à fournir un certificat client.
- 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 .
- Répétez cette opération avec des URL pour toutes les autres applications de votre environnement Sterling Order Management System .
- Dans un navigateur, accédez à NGINX à l'aide de l'une des URL suivantes: