¿Cómo puedo hacer que SmartScreen Filter Trust sea un certificado autofirmado?

El filtro SmartScreen de Microsoft en Windows 8 es la peor pesadilla de un desarrollador pequeño.

Aunque me doy cuenta de los beneficios para los usuarios finales y la eficacia para evitar que los progtwigs maliciosos se instalen en los equipos de los usuarios finales, yo y muchos otros desarrolladores preferirían no pagar las tarifas de renovación anual de un Certificado de firma de código o, peor aún, un EV Certificado de firma de código Además, cuando los productos desarrollados para uso interno se firman con un certificado de confianza de una CA interna, almacenados en la tienda de Editores de confianza, siguen siendo víctimas del comportamiento excesivamente entusiasta del filtro.

Los desarrolladores y los administradores solían poder desactivar las advertencias y las solicitudes instalando el Certificado de firma de código de un editor en la tienda de Editores de confianza. Los desarrolladores creativos pueden instalar allí su Certificado de firma de código autofirmado cuando instalan un requisito previo firmado y marcado con un certificado de firma de código Authenticode pagado. Después de eso, los progtwigs firmados por el editor serían de confianza y no dispararían las alarmas del Filtro SmartScreen. Esencialmente, una vez que se confiaba, un editor estaba libre de las tarifas recurrentes.

Los cambios recientes en el filtro SmartScreen (y su inclusión como una “característica” del sistema operativo en Windows 8) dejan en claro que Microsoft quiere que compre un certificado de firma de código en lugar de trabajar creativamente en torno al problema que han creado para usted. ¿Alguien ha descubierto un nuevo método para confiar en los editores que usan sus certificados de firma de código autofirmados de forma predeterminada (es decir, que no muestran las solicitudes)? Además de apagar por completo el filtro, ¿qué pueden hacer los usuarios finales para que el filtro SmartScreen sepa que siempre confían en un certificado autofirmado?

Tenga en cuenta que comprar un Certificado de firma de código no es una respuesta a esta pregunta. Estoy buscando una manera de decirle a SmartScreen Filter que confíe en un editor que no compra certificados de una fuente externa, sino que emite los propios para su uso dentro de su organización.

ACTUALIZACIÓN: ¡Creo que podría haber encontrado una solución alternativa! Desde MSDN , el filtro SmartScreen puede deshabilitarse en Windows 8 e Internet Explorer 10 para los sitios que figuran como Sitios de confianza. Si alguien pudiera verificar que este método funciona para los progtwigs de instalación descargados y ejecutados desde un sitio de confianza en Windows 8, sería muy apreciado y ayudaría a muchos ISV y equipos de desarrollo internos. También sería la solución alternativa necesaria para responder esta pregunta. Los sitios de confianza se pueden configurar por política de grupo, por lo que sería simple a partir de ahí.

Mediante progtwigción, se puede desactivar el filtro SmartScreen para la zona de sitios de confianza configurando HKLM \ Software \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 para la máquina o HKCU \ Software \ Policies \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 para el usuario a 0, y agregar el sitio al que se confiará a la Zona de sitios de confianza se puede hacer como se muestra en esta pregunta .

¿Podría alguien verificar que las soluciones propuestas para Windows 8 para un ejecutable sin firma o autofirmado se descarguen de un sitio de confianza? No estoy usando Windows 8, ya que gasté mi presupuesto de actualización del SO en las tarifas de los certificados.

Para citar desde el sitio web de MSDN :

Los detractores pueden afirmar que SmartScreen está “forzando” a los desarrolladores a gastar dinero en certificados. Cabe destacar que los certificados de firma de código EV no son necesarios para construir o mantener la reputación con SmartScreen. Los archivos firmados con certificados de firma de código estándar e incluso archivos sin firmar continúan generando reputación como lo han hecho desde que se introdujo la Reputación de la aplicación en IE9 el año pasado. Sin embargo, la presencia de un certificado de firma de código EV es un fuerte indicador de que el archivo fue firmado por una entidad que pasó un riguroso proceso de validación y se firmó con hardware que permite que nuestros sistemas establezcan reputación para esa entidad más rápidamente que sin firmar o no. -Ev código de progtwigs firmados.

En otras palabras, la validación EV (paga) es solo un factor en un algoritmo grande que determina si se muestra o no la advertencia SmartScreen. Si tiene mucha gente que descarga su progtwig, o si el enlace de descarga de su progtwig no ha cambiado en un tiempo, con algo de trabajo puede hacer que su progtwig no muestre la advertencia. Además, al firmar digitalmente su código, puede boost su Reputación de aplicación. Esto es directamente desde la página web de Microsoft sobre el tema .

Con una prueba de 90 días de Windows 8 de Microsoft, pude verificar que mi solución funciona. Si desea pagar un certificado de firma de código una vez y solo una vez en lugar de pagar tarifas anuales, este método también debería funcionar para usted, pero no puedo garantizarlo. Mi solución es por máquina, pero debería ser fácil convertirla en trabajo por usuario.

Esta es mi solución:

  1. Configure su propia infraestructura de certificados.
  2. Publique copias de su certificado de CA raíz, cualquier certificado de CA intermedio emitido por su raíz y cualquier certificado de firma de código emitido por sus CA intermedias a su sitio web como archivos .cer.
  3. Instale un certificado SSL en su sitio web emitido por su CA raíz.
  4. Cree una aplicación de instalación / descarga que realice las siguientes tareas:
    • Instala el certificado de CA raíz (de su sitio web, paso 2) en la tienda Autoridades de certificación de raíz de confianza para la máquina del usuario final.
    • Deshabilita el filtro SmartScreen para la zona de Internet de sitios de confianza configurando HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ Zones \ 2! 2301 en 0.
    • Agrega su sitio web al mapa de zona agregando las claves de registro HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Configuración de Internet \ ZoneMap \ Domains \ yourdomain.com \ yoursubdomain.
    • Asigna su dominio a la zona de Sitios de confianza creando un DWORD llamado https con un valor de 2 en la clave creada en el paso anterior.
  5. Compre un certificado de firma de código de un miembro del progtwig Trusted Root de Microsoft, preferiblemente un certificado EV.
    • Antes de su compra, asegúrese de que el certificado y el esquema de sellado de tiempo utilizado por la CA para su certificado de firma de código no dará lugar a OID 1.3.6.1.4.1.311.10.3.13 o 1.3.6.1.4.1.311.10.3.14, ya que estos harían que el la firma expira cuando expira el certificado, ya sea con marca de tiempo o no.
  6. Firme e imprima la fecha en su descargador / instalador con el certificado adquirido en el paso 5. Verifique la ausencia de limitaciones de por vida en la firma. Si todo está bien, puede colocar su certificado de firma de código comprado en un lugar seguro y bloquearlo.
  7. Publique su progtwig de descarga / instalador en su sitio web. Conviértalo en una descarga de requisito previo para todos sus productos.
  8. A partir de este punto, puede usar certificados de firma de código (y otros certificados, para el caso) emitidos por sus propias autoridades de certificación internas sin que el filtro SmartScreen sea una molestia.

La peor advertencia que he recibido al usar este método hasta ahora ha sido “Este tipo de archivo podría dañar tu computadora”. Ese es el típico “¡Estás descargando un archivo ejecutable!” advertencia. No oculta la opción Ejecutar y no aparece para implementaciones ClickOnce utilizando la página web de arranque generada haciendo clic en “Publicar” en VS2010.

Gracias por todos los comentarios y enlaces.

He encontrado una manera muy fácil de eludir el filtro incluso sin privilegios de administrador. Lo que debes hacer es:

  1. Abrir el bloc de notas
  2. Escriba la siguiente línea: @%*
  3. Guarde el archivo como "SkipSmartScreen.bat" (sí, con las comillas) en la misma carpeta que su aplicación. Puede cambiar el nombre del archivo por lotes más tarde
  4. Para iniciar su aplicación, arrastre su exe al archivo de proceso por lotes

Esto evitará el filtro de pantalla inteligente.

Probado en Windows 10 Home, Pro y Enterprise, y Windows 8 Pro.

Cómo funciona:

  • @ – Esto es solo para looks, oculta el nombre del comando que se está ejecutando
  • %* – Esto se expande a todos los argumentos de línea de comando pasados ​​(por ejemplo, el archivo que soltó en el archivo de proceso por lotes)
  • Todo: ejecuta el archivo a través del archivo por lotes como si fuera una línea en el archivo por lotes. Por algún motivo, Windows no verifica los archivos que se ejecutan desde un archivo por lotes.

Aquí hay una buena explicación sobre cómo apagar SmartScreen:
– Windows SmartScreen – Activar o desactivar en Windows 8
– Desmarca la opción en Opciones de carpeta

¿Qué usé y qué funcionó para mí? Fue la “opción uno” del primer enlace:

  1. Abra el Panel de control (vista de icons) y haga clic / toque en el icono del Centro de acción .
  2. En el panel izquierdo del Centro de acción, haga clic / toque en el enlace Cambiar configuración de Windows SmartScreen .
  3. Si UAC lo solicita, haga clic / toque .
  4. Seleccione (punto) la opción de cómo quiere que Windows SmartScreen maneje progtwigs no reconocidos, luego haga clic / toque OK .
    NOTA: la opción predeterminada es Obtener aprobación del administrador antes de ejecutar una aplicación no reconocida desde Internet .
  5. Cuando termine, puede cerrar el Centro de Acción si lo desea.

Espero que esto sea lo que estabas buscando. 🙂