2012-03-21 17 views
8

Estoy desarrollando una aplicación web ASP.NET 4.0, y quiero leer los certificados de usuario actuales de X509Store. Leer los certificados de LocalMachine funciona bien, pero si configuro StoreLocation en CurrentUser, me da una colección vacía.No se pueden leer los certificados de CurrentUser de X509Store

El siguiente código funciona bien:

X509Store store = new X509Store(StoreName.My, StoreLocation.LocalMachine); // StoreLocation.CurrentUser 
store.Open(OpenFlags.ReadOnly | OpenFlags.OpenExistingOnly); 

He comprobado mi almacén personal (a través de certmgr.mmc) y estoy seguro de que tengo los certificados.

¿Qué me estoy perdiendo? (store.Certificates está vacío)

+0

¿La aplicación está ejecutándose como usted? –

+0

La aplicación está alojada en mi IIS local (7.5). El grupo de aplicaciones está configurado en ApplicationPoolIdentity. –

+1

... entonces CurrentUser será el grupo de aplicaciones, no usted. –

Respuesta

2

Parece que no puede acceder al Personal Certificate Store a través de la aplicación web, independientemente de la identidad del grupo de aplicaciones que esté utilizando.

Tiene sentido, una aplicación web no tiene acceso a esa ubicación. :)

Mi solución:

he desarrollado un control ActiveX, que creo que es la única manera de acceder a la tienda. (Además, un applet de Java ofrece la misma funcionalidad). Uso el control ActiveX a través de JavaScript para acceder a la Tienda y envío esa información al servidor.

0

Si su proceso de trabajo no puede acceder a la tienda cert, tal vez solo sea un problema de configuración de la cuenta. Intente ir a Configuración de IIS, abra los pools de aplicaciones, haga clic derecho en los suyos, seleccione Avanzado e intente configurar LoadUserProfile en TRUE. Y reinicia el grupo. Es trabajador para mí, no más excepciones al cargar .PFX con claves privadas.

0

Tuve un problema similar. La solución fue:

Administrador IIS -> [su directorio virtual] -> Autenticación-> Autenticación anónima (seleccione luego haga clic en "Editar ...") y cámbielo para usar "Identidad del grupo de aplicaciones".

De lo contrario, puede estar ejecutándose como el "IUSR" genérico

Cuestiones relacionadas