1 votes

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

Nous disposons d'anciens services Web SOAP ( https://dev-ms01/Services/default.asmx ) qui sont écrits en asp.net 1.1 et hébergés sur IIS7 (win server 2008 standard), services web consommés par les clients en fournissant un certificat client. Pour le SSL Certificates les paramètres que nous avons Accept sur cet IIS

`Client(Request with SSL Client Certificate)--> IIS7 (on host dev-ms01)--> Asp.Net SOAP WebServices`

J'essaie maintenant de configurer un proxy IIS (IIS10 sur un hôte win server 2016 64bit). secure-dev-ms01 ) avec revere proxy pour IIS7. J'ai suivi l'article de 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 la réécriture d'URL avec ReverseProxy comme ci-dessous

`Client(Request with SSL Client Certificate)--> Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01)--> IIS7 (on host dev-ms01) --> Asp.Net SOAP WebServices`

Sur le IIS10 (hôte secure-dev-ms01 ) pour le SSL Certificates paramètres que j'ai choisis Accept et j'ai essayé la configuration ReverseProxy ci-dessous enter image description here . Lorsque j'essaie de parcourir l'URL des services Web du proxy en tant que https://secure-dev-ms01/Services/default.asmx Il demande le certificat du client mais après avoir fourni le certificat du client, je vois l'erreur suivante

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

J'ai essayé d'utiliser les éléments suivants RevereProxy également enter image description here et j'ai essayé de naviguer sur l'URL des services web du proxy https://secure-dev-ms01/Services/default.asmx et fourni le certificat du client mais je vois toujours l'erreur ci-dessous. J'ai également essayé de décocher l'option Enable SSL Offloading pour les deux configurations RevereseProxy ci-dessus, mais cela n'a pas fonctionné non plus.

403 - Forbidden: Access is denied.
You do not have permission to view this directory or page using the credentials that you supplied.

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

Je n'ai pas trouvé d'articles pertinents permettant de faire fonctionner IIS ARR ReverseProxy avec l'authentification par certificat client pour le backend IIS avec seulement des modifications de configuration sur IIS10 avec ReverseProxy au lieu d'un changement de code/configuration sur le backend IIS7, quelqu'un peut-il m'aider à faire fonctionner cela ?

0voto

sedovav Points 131

Je suppose que vous avez IIS7 (on host dev-ms01) dans un réseau sécurisé sans accès direct depuis Internet.

Dans ce cas, vous devez activer le délestage SSL et l'authentification par certificat client sur Proxy IIS10 Server with ReverseProxy (on host secure-dev-ms01) seulement et désactiver le déchargement SSL et l'authentification par certificat dans IIS7.

Dans ce schéma, IIS10 est responsable de la poignée de main SSL et de la validation du certificat. Il place le certificat (POM) dans X-ARR-ClientCert et transmet par proxy les demandes adressées à IIS7 via le protocole HTTP ordinaire, y compris cet en-tête. Vous devez probablement configurer le contournement de l'en-tête X-Forwarded-For , X-Forwarded-Proto , X-Forwarded-Schema y 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 le proxy-pass à IIS7
  • configuration du by-pass des en-têtes ci-dessus dans la règle de réécriture
  • ajouter un certificat de serveur
  • exigez SSL dans les paramètres SSL du site Web par défaut.
  • définir le paramètre des certificats du client égal à Accepter
  • activer l'authentification anonyme pour votre site
  • configurer les liaisons https avec le certificat du serveur

Pour le serveur IIS7 :

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

Avec un peu de chance, le prochain schéma fonctionnera.

Browser ---[HTTPS]---> IIS10 --[HTTP + headers]--> IIS7

donde headers sont X-ARR-ClientCert, X-Forwarded-For, X-Forwarded-Proto, X-Forwarded-Schema et X-Forwarded-Host.

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