1 votes

IIS ARR ReverseProxy avec authentification par certificat client pour le backend IIS

Nous avons des services Web SOAP hérités (https://dev-ms01/Services/default.asmx) qui sont écrits en asp.net 1.1 hébergés sur IIS7 (serveur win 2008 standard), les services Web sont consommés par les clients en fournissant un certificat client. Pour les paramètres des certificats SSL, nous avons Accept sur cet IIS

`Client (Demande avec certificat client SSL)--> IIS7 (sur l'hôte dev-ms01)--> Services Web SOAP Asp.Net`

Maintenant, j'essaie de mettre en place un proxy IIS (IIS10 sur win serveur 2016 64 bits hôte secure-dev-ms01) avec un proxy inverse pour l'IIS7. J'ai suivi l'article msdn https://blogs.msdn.microsoft.com/friis/2016/08/25/setup-iis-with-url-rewrite-as-a-reverse-proxy-for-real-world-apps/ pour configurer une réécriture d'URL avec ReverseProxy comme ci-dessous

`Client(Demande avec certificat client SSL)--> Serveur proxy IIS10 avec ReverseProxy (sur l'hôte secure-dev-ms01)--> IIS7 (sur l'hôte dev-ms01) --> Services Web SOAP Asp.Net`

Sur IIS10 (hôte secure-dev-ms01) pour les paramètres des certificats SSL, j'ai choisi Accept et j'ai essayé la configuration ReverseProxy ci-dessous entrez une description d'image ici. Lorsque j'essaie de parcourir l'URL des services Web proxy comme https://secure-dev-ms01/Services/default.asmx, il demande le certificat client mais après avoir fourni le certificat client, je vois l'erreur suivante

403 - Interdit : l'accès est refusé.
Vous n'avez pas l'autorisation de consulter ce répertoire ou cette page à l'aide des informations d'identification que vous avez fournies.

J'ai également essayé d'utiliser le ReverseProxy ci-dessousentrez une description d'image ici et j'ai essayé de parcourir l'URL des services Web proxy https://secure-dev-ms01/Services/default.asmx et fourni le certificat client mais je vois toujours l'erreur suivante. J'ai également essayé de décocher l'option Activer le transfert SSL pour les deux configurations ReverseProxy ci-dessus, mais cela n'a pas fonctionné non plus

403 - Interdit : l'accès est refusé.
Vous n'avez pas l'autorisation de consulter ce répertoire ou cette page à l'aide des informations d'identification que vous avez fournies.

J'ai trouvé cet article msdn https://blogs.msdn.microsoft.com/asiatech/2014/01/27/configuring-arr-with-client-certificate/ qui suggère de changer les paramètres des certificats SSL en Ignore sur le serveur backend (mais nous ne pouvons pas adopter cela pour notre organisation) et d'essayer d'utiliser le certificat à partir des en-têtes X-ARR-ClientCert mais nous essayons d'éviter de faire des modifications de code aux services hérités asp.net 1.1

Je n'ai trouvé aucun article pertinent qui pourrait faire fonctionner la configuration IIS ARR ReverseProxy avec l'authentification par certificat client pour le backend IIS avec simplement des ajustements de configuration sur l'IIS10 avec ReverseProxy au lieu d'un changement de code/config sur l'IIS7 en aval, est-ce que quelqu'un peut m'aider à faire fonctionner cela ?

0voto

sedovav Points 131

Je suppose que vous disposez d'une machine IIS7 (sur l'hôte dev-ms01) dans un réseau sécurisé sans accès direct à Internet.

Dans ce cas, vous devez activer le déchargement SSL et l'authentification par certificat client sur Serveur IIS10 Proxy avec ReverseProxy (sur l'hôte secure-dev-ms01) seulement et désactiver le déchargement SSL et l'authentification par certificat sur IIS7.

Dans ce schéma, c'est IIS10 qui est responsable de l'initialisation SSL et de la validation du certificat. Il place le certificat (POM) dans l'en-tête X-ARR-ClientCert et transfère les requêtes à IIS7 via HTTP sans inclure cet en-tête. Vous devez probablement configurer la désactivation des en-têtes X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema et X-Forwarded-Host sur IIS10, dans la règle de réécriture d'URL, si vos services ASP en ont besoin.

Donc, pour votre serveur IIS10 :

  • activer ARR
  • ajouter une règle de réécriture d'URL pour transférer en proxy vers IIS7
  • configurer la désactivation des en-têtes mentionnés dans la règle de réécriture
  • ajouter un certificat serveur
  • exiger SSL dans les paramètres SSL du site Web par défaut
  • définir les paramètres des certificats clients sur Accepter
  • activer l'authentification anonyme pour votre site
  • configurer les liaisons HTTPS avec le certificat serveur

Pour le serveur IIS7 :

  • désactiver les liaisons HTTPS
  • ne pas exiger SSL
  • ne pas exiger de certificats clients

En espérant que vous ferez fonctionner le schéma suivant

Navigateur ---[HTTPS]---> IIS10 --[HTTP + en-têtes]--> IIS7

où les en-têtes sont X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema et X-Forwarded-Host.

0 votes

IIS7 (sur l'hôte dev-ms01) machine dans un réseau sécurisé et n'a pas un accès direct depuis Internet, mais il prend en charge TLS 1, TLS 1.1 et TLS 1.2, nous avons besoin d'une instance avec seulement TLS 1.2 donc nous configurons un proxy IIS10 qui ne supporte que TLS 1.2 et redirige toutes les requêtes vers IIS7. Donc en production, nous maintiendrons à la fois IIS7 et IIS10, c'est pourquoi nous essayons d'éviter de faire des changements de code/configuration à l'IIS7.

0 votes

Un échange de certificat client est effectué lors de l'handshake SSL entre un client et un serveur. Lorsqu'un navigateur se connecte à IIS10 ou IIS7 (probablement via des proxys qui ne font pas de déchargement SSL), le navigateur est le client et IIS est le serveur. C'est une chose habituelle. Une autre chose est le cas où un navigateur se connecte à IIS10 via HTTPS (le navigateur est le client, IIS10 est le serveur) et ensuite IIS10 se connecte à IIS7 également via HTTPS. Ici, IIS10 est le client dans l'handshake SSL et il devrait fournir un certificat client si IIS7 le demande. C'est le problème. Je ne sais pas comment le configurer, désolé.

0 votes

Tel que je le sais, l'authentification du certificat client est généralement effectuée entre le client et le serveur sans aucun proxy SSL intermédiaire. Par "serveur" ici, je ne veux pas parler de l'arrière-plan ASP mais de tout serveur prenant en charge le déchargement SSL (IIS, nginx, apache, etc.).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X