web-dev-qa-db-fra.com

Comment puis-je faire en sorte que SmartScreen Filter fasse confiance à un certificat auto-signé

Le filtre SmartScreen de Microsoft sous Windows 8 est le pire cauchemar d'un petit développeur.

Bien que je me rende compte des avantages pour les utilisateurs finaux et de l'efficacité à empêcher les programmes malveillants de s'installer sur les ordinateurs des utilisateurs finaux, moi et de nombreux autres développeurs préférerions ne pas payer les frais de renouvellement annuel d'un certificat de signature de code ou, pire encore, d'un EV Certificat de signature de code. En outre, lorsque les produits développés pour une utilisation en interne sont signés avec un certificat approuvé d'une autorité de certification interne, stocké dans le magasin des éditeurs approuvés, ils sont toujours la proie du comportement trop zélé du filtre.

Les développeurs et les administrateurs pouvaient auparavant désactiver les avertissements et les invites en installant un certificat de signature de code d'un éditeur dans le magasin des éditeurs approuvés. Les développeurs créatifs peuvent y installer leur certificat de signature de code auto-signé lorsqu'ils installent un pré-signé signé et horodaté avec un certificat de signature de code Authenticode payant. Après cela, les programmes signés par l'éditeur seraient fiables et ne déclencheraient pas les alarmes du filtre SmartScreen. Essentiellement, une fois de confiance, un éditeur était exempt de frais récurrents.

Les récentes modifications apportées au filtre SmartScreen (et son inclusion en tant que "fonctionnalité" du système d'exploitation dans Windows 8) indiquent clairement que Microsoft souhaite que vous achetiez un certificat de signature de code au lieu de travailler de manière créative autour du problème qu'ils ont créé pour vous. Quelqu'un a-t-il découvert une nouvelle méthode pour faire confiance aux éditeurs qui utilisent leurs certificats de signature de code auto-signés par défaut (c'est-à-dire ne pas afficher les invites)? À moins de désactiver complètement le filtre, que peuvent faire les utilisateurs finaux pour informer le filtre SmartScreen de toujours faire confiance à un certificat auto-signé?

Veuillez noter que l'achat d'un certificat de signature de code n'est pas une réponse à cette question. Je cherche un moyen de dire à SmartScreen Filter de faire confiance à un éditeur qui n'achète pas de certificats d'une source externe, mais émet plutôt les leurs pour une utilisation au sein de leur organisation.

MISE À JOUR: Je pense que j'ai peut-être trouvé une solution de contournement! De MSDN , SmartScreen Le filtre peut être désactivé sur Windows 8 et Internet Explorer 10 pour les sites répertoriés comme sites de confiance. Si quelqu'un pouvait vérifier que cette méthode fonctionne pour les programmes d'installation téléchargés et exécutés à partir d'un site de confiance dans Windows 8, cela serait grandement apprécié et aiderait beaucoup de fournisseurs de logiciels indépendants et d'équipes de développement internes. Ce serait également la solution de contournement nécessaire pour répondre à cette question. Les sites de confiance peuvent être configurés par la stratégie de groupe, ce serait donc simple à partir de là.

Par programme, la désactivation du filtre SmartScreen pour la zone des sites de confiance peut être obtenue en définissant HKLM\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2! 2301 pour la machine ou HKCU\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2! 2301 pour l'utilisateur à 0, et l'ajout du site à faire confiance à la zone des sites de confiance peut être fait comme indiqué dans cette question .

Quelqu'un pourrait-il s'il vous plaît vérifier que ma solution de contournement proposée fonctionne sur Windows 8 pour un exécutable non signé ou auto-signé téléchargé à partir d'un site de confiance? Je n'utilise pas Windows 8 moi-même, ayant dépensé mon budget de mise à niveau du système d'exploitation pour les frais de certificat.

41
Shannon Cook

À l'aide d'un essai de 90 jours de Windows 8 de Microsoft, j'ai pu vérifier que ma solution de contournement fonctionne bien. Si vous souhaitez payer une seule et unique fois un certificat de signature de code au lieu de payer des frais annuels, cette méthode devrait également fonctionner pour vous, mais je ne peux donner aucune garantie. Ma solution est par machine, mais devrait être facile à convertir pour fonctionner par utilisateur.

Voici ma solution:

  1. Configurez votre propre infrastructure de certificats.
  2. Publiez des copies de votre certificat d'autorité de certification racine, de tout certificat d'autorité de certification intermédiaire émis par votre racine et de tout certificat de signature de code émis par votre autorité de certification intermédiaire sur votre site Web sous forme de fichiers .cer.
  3. Installez sur votre site Web un certificat SSL émis par votre autorité de certification racine.
  4. Créez une application d'installation/de téléchargement qui exécute les tâches suivantes:
    • Installe le certificat d'autorité de certification racine (à partir de votre site Web, étape 2) dans le magasin des autorités de certification racines de confiance pour la machine de l'utilisateur final.
    • Désactive le filtre SmartScreen pour la zone Internet des sites de confiance en définissant HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\Zones\2! 2301 sur 0.
    • Ajoute votre site Web à la carte de zone en ajoutant la ou les clés de registre HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\ZoneMap\Domains\yourdomain.com\yoursubdomain.
    • Mappe votre domaine à la zone Sites de confiance en créant un DWORD nommé https avec une valeur de 2 dans la clé créée à l'étape précédente.
  5. Achetez un certificat de signature de code auprès d'un membre du programme Racine de confiance de Microsoft, de préférence un certificat EV.
    • Avant votre achat, assurez-vous que le certificat et le schéma d'horodatage utilisés par l'autorité de certification pour votre certificat de signature de code ne résulteront pas en 1.3.6.1.4.1.311.10.3.13 ou 1.3.6.1.4.1.311.10.3.14 de l'OID, car cela rendrait le la signature expire à l'expiration du certificat, qu'il soit horodaté ou non.
  6. Signez et horodatez votre téléchargeur/installateur avec le certificat acheté à l'étape 5. Vérifiez l'absence de limitations à vie sur la signature. Si tout va bien, vous pouvez mettre votre certificat de signature de code acheté dans un endroit sûr et le verrouiller.
  7. Publiez votre programme de téléchargement/d'installation sur votre site Web. Faites-en un téléchargement préalable pour tous vos produits.
  8. À partir de ce moment, vous pouvez utiliser des certificats de signature de code (et d'autres certificats, d'ailleurs) émis par vos propres autorités de certification internes sans que le filtre SmartScreen ne soit une nuisance.

Le pire avertissement que j'ai reçu jusqu'à présent en utilisant cette méthode a été "Ce type de fichier pourrait endommager votre ordinateur". C'est le type de "Vous téléchargez un fichier exécutable!" avertissement. Il ne masque pas l'option Exécuter et n'apparaît pas pour les déploiements ClickOnce utilisant la page Web bootstrap générée en cliquant sur "Publier" dans VS2010.

Merci pour tous les commentaires et liens.

3
Shannon Cook

Pour citer site Web de MSDN :

Les détracteurs peuvent prétendre que SmartScreen "force" les développeurs à dépenser de l'argent pour des certificats. Il convient de souligner que les certificats de signature de code EV ne sont pas nécessaires pour construire ou maintenir une réputation avec SmartScreen. Les fichiers signés avec des certificats de signature de code standard et même des fichiers non signés continuent de bâtir une réputation comme ils l'ont fait depuis l'introduction de la réputation des applications dans IE9 l'année dernière. Cependant, la présence d'un certificat de signature de code EV est un indicateur fort que le fichier a été signé par une entité qui a passé un processus de validation rigoureux et a été signé avec du matériel qui permet à nos systèmes d'établir la réputation de cette entité plus rapidement que non signé ou non. -Programmes signés par code EV.

En d'autres termes, la validation EV (payante) n'est qu'un facteur dans un grand algorithme qui détermine si l'avertissement SmartScreen est affiché ou non. Si vous avez beaucoup de gens qui téléchargent votre programme, ou si le lien de téléchargement de votre programme n'a pas changé depuis un certain temps, avec du travail, vous pouvez obtenir votre programme pas pour afficher l'avertissement. De plus, en signant numériquement votre code, vous pouvez augmenter votre réputation d'application. C'est directement de la page Web de Microsoft sur le sujet .

23
William

J'ai trouvé un moyen très simple de contourner le filtre même sans privilèges d'administrateur. Ce que vous devez faire, c'est:

  1. Bloc-notes ouvert
  2. Tapez la ligne suivante: @%*
  3. Enregistrez le fichier sous "SkipSmartScreen.bat" (oui, avec les guillemets) dans le même dossier que votre application. Vous pouvez renommer le fichier de commandes ultérieurement
  4. Pour lancer votre application, faites glisser votre exe sur le fichier batch

Cela contournera ensuite le filtre smartscreen.

Testé sur Windows 10 Home, Pro et Enterprise et Windows 8 Pro.

Comment ça fonctionne:

  • @ - Ceci est juste pour l'apparence, il cache le nom de la commande en cours d'exécution
  • %* - Ceci s'étend à tous les arguments de ligne de commande passés (par exemple le fichier que vous avez déposé sur le fichier de commandes)
  • Le tout: il exécute le fichier via le fichier batch comme s'il s'agissait d'une ligne dans le fichier batch. Pour une raison quelconque, Windows ne vérifie pas les fichiers qui sont exécutés à partir d'un fichier de commandes.
3
geek1011

Voici une bonne explication pour désactiver le SmartScreen:
- Windows SmartScreen - Activer ou désactiver dans Windows 8
- Décochez l'option dans les options des dossiers

Qu'est-ce que j'ai utilisé et qu'est-ce qui a fonctionné pour moi? C'était "l'option un" du premier lien:

  1. Ouvrez le Panneau de configuration (affichage des icônes), et cliquez/appuyez sur le Action Center icône.
  2. Dans le volet gauche d'Action Center, cliquez/appuyez sur le lien Modifier les paramètres de Windows SmartScreen .
  3. Si vous y êtes invité par [~ # ~] uac [~ # ~] , cliquez/appuyez sur Oui .
  4. Sélectionnez (point) l'option selon laquelle vous souhaitez que Windows SmartScreen gère les programmes non reconnus, puis cliquez/appuyez sur [~ # ~] ok [~ # ~] .
    REMARQUE: L'option par défaut est de Obtenir l'approbation de l'administrateur avant d'exécuter une application non reconnue sur Internet .
  5. Une fois terminé, vous pouvez fermer le Centre de maintenance si vous le souhaitez.

J'espère que c'est ce que vous cherchiez. :)

1
Monic