visual qrcodenet qrcode net leer lector gma generar example codigo barras asp c# .net windows installation digital-certificate

qrcodenet - leer codigo qr c#



La aplicación con código de seguridad.NET con huecos de aire no se instalará/ejecutará (1)

Recientemente actualizamos nuestras aplicaciones para hacer uso de la firma de código SHA-256 con un nuevo certificado. Los ensamblados tienen un nombre signtool.exe firmado mediante la opción Sign the assembly en Visual Studio 2015. El evento de creación posterior en Visual Studio ejecuta dos procesos de signtool.exe para firmar en SHA-256 y para el certificado de SHA-1 heredado:

call "C:/Program Files (x86)/Windows Kits/10/bin/x86/signtool.exe" sign /f "<mystrongName.pfx>" /p "<password>" /t <timestampURL> "$(TargetPath)" call "C:/Program Files (x86)/Windows Kits/10/bin/x86/signtool.exe" sign /f "<mystrongName.pfx>" /p "<password>" /fd sha256 /tr <timestampURL> /td sha256 /as /v "$(TargetPath)"

Finalmente utilizamos Advanced Installer como el empaquetador de instalación y también está firmado por código en la página de Digital Signature usando el certificado y la marca de tiempo según la firma .exe.

El archivo de instalación final se instala y se ejecuta en máquinas Windows con conexión a Internet como era de esperar. Puede ver que el certificado está asignado y es válido, así como la cadena de certificados a través de las propiedades de setup.exe y el tiempo de ejecución cuando está instalado. Además, Windows reconoce la aplicación como una fuente confiable y muestra los detalles del editor verificado apropiado.

Nuestra base de clientes es en su mayoría 100 empresas globales y la mayoría de las implementaciones se realizarán en redes aisladas. En una de nuestras primeras implementaciones actualizadas en este entorno, no se pudo verificar el certificado para evitar que el instalador se complete.

Esto tenía sentido, porque las máquinas de Windows (2012 servidor R2) estaban aisladas de Internet y, debido a las políticas de la compañía, tenían Turn off Automatic Root Certificates establecidos en Enabled . Esta configuración se puede encontrar en la Computer Configuration -> Administrative Templates -> System -> Internet Communication Management -> Internet Communication Settings del Computer Configuration -> Administrative Templates -> System -> Internet Communication Management -> Internet Communication Settings de la aplicación MMC (necesita el complemento de certificados instalado).

Al realizar pruebas en nuestro banco de pruebas local, incluso las máquinas que no están conectadas a Internet instalarían los certificados de la utilidad de configuración si la configuración de registro anterior era la predeterminada ( Disabled ). Podríamos replicar el problema cambiando la configuración de la política para que coincida con la de los clientes ( Enabled ).

Como solución temporal, hemos descargado manualmente el certificado raíz Autoridades de certificación y lo hemos instalado como un Certificado de raíz de confianza y la instalación se llevaría a cabo normalmente.

Cuando presentamos esta solución al cliente, la instalación aún fallaba a pesar de que el certificado raíz de Autoridades de certificación estaba presente en los Certificados raíz de confianza de la máquina.

El equipo de servicio al cliente de la autoridad de certificación recomendó que retiremos la marca de tiempo del proceso de firma para permitir que la instalación continúe, y esa es la única ayuda que ofrecieron (esa es otra historia). Sin embargo, esto significa que una vez que caduque el certificado de firma de código, la aplicación dejará de ejecutarse o presentará errores de editor no verificados.

No estoy totalmente convencido de que esto solucione el problema, ya que cuando probamos localmente, el instalador todavía encontró el certificado y permitió que la instalación prosiguiera cuando el certificado raíz de Autoridades de certificación se instaló manualmente.

Lo que no puedo hacer es replicar el entorno de los clientes para reproducir exactamente el problema (lo cual no ayuda). Es casi como si Windows estuviera pasando por alto la tienda de Certificados de raíz de confianza de la máquina local. Supongo que, si esto es posible, Windows podrá verificar contra un almacén de certificados raíz central.

¿Es esto posible configurarlo en Windows? De ser así, ¿dónde encontraría documentación sobre esto o cómo se hace?

¿Me estoy perdiendo algo en los pasos de firma de código o en mi comprensión de lo que debería estar sucediendo en la máquina de instalación mientras se está verificando el certificado?

No sé qué hacer para que funcione este instalador. Lo que no puedo permitirme es volver al cliente para que sigan probando nuestras instalaciones. En primer lugar, no es el proceso correcto para depurar, ya que el proveedor no es el problema del cliente el que debe resolverlo, pero lo más importante es que necesitamos que nuestro equipo entienda qué es lo que está causando esto y cómo remediarlo correctamente.

Lo ideal es que no sepa qué incluir en la marca de tiempo si no es necesario, ya que en el futuro esto causará nuevos problemas si el software no se actualiza antes de que expire el certificado.

Cualquier y toda ayuda muy apreciada.


Creo que uno de los motivos por los que un certificado no se puede validar en un entorno con aire comprimido puede ser que la revocación no se puede verificar. Como sabrá, un certificado puede revocarse y hay dos protocolos diferentes para verificar si es CRL y OCSP. Ambos requieren acceso a la red a la CA que emitió el certificado.

Si las revocaciones se controlan realmente se rige por las políticas que se describen aquí , y esto puede causarle problemas.