Acceder a los certificados cargados en sitios web azules

Cuando estaba usando el rol web, solo estaba cargando el certificado en el portal azure y pude verlo. Ahora cambié al sitio web en azure y cargué el certificado en el portal de administración de azure pero mi código no lo ve. en absoluto.

¿Hay alguna configuración que necesitemos o alguna otra forma de acceder a los certificados cargados en los sitios web azules?

Así es como estoy tratando de acceder al certificado cargado.

private List GetAvailableCertificatesFromStore() { var list = new List(); var store = new X509Store(StoreName.My,StoreLocation.LocalMachine); store.Open(OpenFlags.ReadOnly); try { foreach (var cert in store.Certificates) { // todo: add friendly name list.Add(string.Format("{0}", cert.Subject)); } } finally { store.Close(); } return list; } 

ACTUALIZACIÓN – 23 de julio de 2015: esta respuesta ahora está obsoleta (sin embargo, fue correcta en el momento en que se proporcionó). Por favor, vea la respuesta de S Armstrong a continuación.

Las cosas funcionan de manera diferente en Azure Cloud Services (Web/Worker Roles) y Azure Websites . En Azure Cloud Services cuando carga un certificado a través del portal de administración y especifica la huella digital y la ubicación de instalación de ese certificado en las propiedades de su función, cuando su rol se implementa en una VM, Fabric Controller responsable también instala estos certificados automáticamente. Esta es la razón por la que el código anterior funciona en una función web.

En el sitio web, necesitarías hacer esto por tu cuenta. Desafortunadamente debido a restricciones de seguridad en un sitio web de Azure, simplemente no puede instalar un certificado en el almacén de certificados. Para trabajar con certificados, debe incluir el archivo PFX del certificado junto con su código y trabajar con ese archivo de certificado. No puede instalar el certificado en el almacén de certificados.

En cualquier trabajo que haya hecho con el sitio web y los certificados de Azure, he encontrado que el certificado solo funciona si el archivo PFX está incluido en la carpeta AppData . También puede encontrarse con errores como CryptographicException: The system cannot find the file specified . Si se encuentra con este error, puede encontrar esta publicación de blog útil: http://blog.tylerdoerksen.com/2013/08/23/pfx-certificate-files-and-windows-azure-websites/

El uso de certificados en Azure WebSite funciona de manera diferente a como lo hace en una copia local de IIS o incluso cuando se ejecuta un sitio web en modo de depuración desde Visual Studio. En resumen, el sitio web no tiene acceso a una tienda de certificados en el sentido tradicional del término … todo se hace en la memoria.

En primer lugar, una vez que haya cargado su certificado a través del Portal Azure, debe agregar una aplicación (también a través del portal) llamada WEBSITE_LOAD_CERTIFICATES y establecer el valor para esto en la huella digital de su certificado cargado. Esta puede ser una lista separada por comas de múltiples huellas dactilares si lo desea, o incluso * para cargar todos sus certificados cargados. Supongo que esto obliga a cargar los certificados en la memoria.

Para cargar su certificado, puede hacer lo siguiente:

 var store = new X509Store(StoreName.My, StoreLocation.CurrentUser); store.Open(OpenFlags.ReadOnly); var certs = store.Certificates.Find(X509FindType.FindByThumbprint, YOUR_THUMBPRINT, false); 

Cambie ‘falso’ a ‘verdadero’ si desea asegurarse de que el certificado sea válido.

Encontré esta información aquí, que la explica mucho mejor que la que tengo: http://azure.microsoft.com/blog/2014/10/27/using-certificates-in-azure-websites-applications/