¿Se puede obtener un certificado X509 del almacén de certificados mediante ASP.NET sin permisos del sistema de archivos?

StackOverflow https://stackoverflow.com//questions/20007824

Pregunta

¿Dónde debe entregarse un certificado que aparece en el Trusted Root Certification Authorities nodo en certmgr.msc ¿Se debe conservar para que una aplicación web IIS pueda obtenerlo y firmar una aserción SAML con él?¿Hay alguna manera de extraer el certificado de la "colmena" de certificados directamente, que no requiera permisos del sistema de archivos?¿O es necesario exportar el certificado a una carpeta a la que el usuario integrado de IIS7 tenga permisos de acceso?

El X509Certificate2.Import() El primer parámetro del método es fileName.

Si exporto el certificado y coloco el archivo en la jerarquía de carpetas de mi proyecto de Visual Studio 2012 y proporciono una ruta completa al Importar() método, la importación del certificado se realiza correctamente, pero solo si la aplicación se ejecuta en Visual Studio incorporado servidor, no si se está ejecutando en el servidor web IIS local.

He intentado usar el Nombre amigable con X509KeyStorageFlags.MachineKeySet Pero eso no funcionó.

EDITAR:Esto funciona cuando se utiliza el servidor Visual Studio integrado pero no el servidor LOCAL IIS7 en Windows 7:

            certStore = New X509Store(StoreLocation.CurrentUser)
            certStore.Open(OpenFlags.ReadOnly)
            Dim thumbprint As String
            thumbprint = ConfigurationManager.AppSettings("thumb").ToString
            certCollection = certStore.Certificates.Find(X509FindType.FindByThumbprint, thumbprint, False)
            certStore.Close()
            cert = certCollection(0)

así que necesito saber cómo darle acceso al grupo de aplicaciones predeterminado a este certificado en Windows 7.

¿Fue útil?

Solución

No "importas", solo creas una instancia.Formalmente, abre un almacén de claves y recorre los certificados.Y sí, no necesita ningún permiso del sistema de archivos; sin embargo, para acceder a la clave privada, la identidad de su grupo de aplicaciones debe tener permiso para la clave; usted establece el permiso en el complemento de certificado de la consola mmc.

Editar:el código para acceder al certificado sería algo como:

var store = new X509Store( name, location );
store.Open( OpenFlags.ReadOnly );

foreach ( var cert in store.Certificates )
   ... loop and match, by thumbprint, friendly name or whatever else
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top