Installer le certificat client pour le compte de pool d'applications IIS
-
06-07-2019 - |
Question
Scénario:
- Un client appelle WebService A sur le réseau local. Le service Web A est exécuté sous un pool d'applications avec l'identité "Service réseau".
- WebService A effectue certains travaux et se prépare à appeler WebService B.
- WebService B nécessite un certificat client (* .cer) et SSL.
- WebService A est sur un serveur Windows 2003 dédié.
- Tout fonctionne normalement dans l'environnement de développement (mais le développeur disposant des privilèges d'administrateur est toujours connecté localement (sans surprise!).
- Les certificats sont stockés sur le disque sous
C: \ MyCertificates \
- Le certificat est correctement appliqué au moment de l'exécution dans Dev avec le fragment suivant:
myWebService.ClientCertificates.Add (nouveau X509Certificate.CreateFromCertFile (certPath));
Problème: Le service Web A appelle le service Web B et l'exception renvoyée est:
La requête a échoué avec le statut HTTP 403: Interdit
Cela signifie vraiment que le certificat n'a pas été envoyé dans la requête au WebService B.
Je suppose que l'installation de ce certificat dans le navigateur n'est pas une solution. Les paramètres du navigateur sont généralement définis par utilisateur et je dois donner le certificat à l'utilisateur pour lequel les informations d'identification sont exécutées par le service Web. (par exemple, Service réseau, Système ou tout ce qui se trouve dans les paramètres IIS AppPool).
Question: Comment puis-je accorder au service réseau ou à un autre compte non utilisateur un accès ou une association à mon certificat résidant à l'emplacement de répertoire spécifié?
La solution
Cet article de la base de connaissances Microsoft peut être utile:
Votre service Web 'A' serait effectivement l'application ASP.NET appelant le service Web, comme décrit dans l'article.