Installa il certificato client per l'account del pool di app IIS
-
06-07-2019 - |
Domanda
Scenario:
- Un client chiama WebService A sulla LAN. Il servizio Web A è in esecuzione in un pool di app con identità "Servizio di rete".
- WebService A fa un po 'di lavoro, si prepara a chiamare WebService B.
- WebService B richiede un certificato client (* .cer) e SSL.
- WebService A si trova su un server Windows 2003 dedicato.
- Tutto funziona nell'ambiente Dev come dovrebbe (ma lo sviluppatore con privilegi di amministratore è sempre connesso localmente (nessuna sorpresa!).
- I certificati sono archiviati su disco in
C:\MyCertificates\
- Il certificato viene applicato correttamente in fase di esecuzione in Dev con questo frammento:
myWebService.ClientCertificates.Add (new X509Certificate.CreateFromCertFile (certPath));
Problema: WebService A chiama WebService B e l'eccezione restituita è:
Richiesta non riuscita con stato HTTP 403: proibito
Ciò significa che il certificato non è stato inviato nella richiesta a WebService B.
Suppongo che l'installazione di questo certificato nel browser non sia una soluzione. Le impostazioni del browser sono in genere per utente e devo fornire il certificato all'utente con le cui credenziali è in esecuzione il servizio Web. (ad es. servizio di rete, sistema o qualsiasi altra cosa presente nelle impostazioni di IIS AppPool).
Domanda: come posso concedere l'accesso o l'associazione al mio certificato che risiede nella posizione della directory specificata al servizio di rete o ad altri account non utente?
Soluzione
Questo articolo della Microsoft Knowledge Base può essere utile:
Il tuo servizio web 'A' sarebbe effettivamente l'applicazione ASP.NET che chiama il servizio web come descritto nell'articolo.