2009-12-17 16 views
7

J'ai écrit une application .Net qui n'a rien à voir avec la communication réseau. Il n'y a pas une seule ligne de code dans l'ensemble de l'application qui utilise la carte réseau, mais mon pare-feu l'a intercepté en essayant de contacter Verisign pour une raison quelconque lorsque l'application démarre. Cela n'arrive pas régulièrement; en fait, cela n'est arrivé que deux fois.Pourquoi mon application .Net contacte-t-elle Verisign?

La dernière fois que cela s'est produit, j'ai pu lancer Wireshark avant de demander à mon pare-feu d'autoriser l'accès au réseau. Il y avait aucun transfert réel de données que je peux dire. Il n'a capturé que 9 paquets TCP: certains paquets SYN, certains paquets SYN/ACK et certains paquets RST (les paquets RST ont été rompus). Je suspecterais l'une de mes DLLs tierces, mais je ne vois pas pourquoi une bibliothèque mathématique ou une bibliothèque de manipulation d'images essaierait d'établir une connexion avec Verisign et ne ferait rien avec cette connexion. Mes clients sont dans des organisations avec une sécurité stricte; la dernière chose que je veux est un appel téléphonique demandant pourquoi mon application se connecte à Internet.

Est-ce que quelqu'un sait pourquoi cela se produit? Y a-t-il un moyen d'empêcher cela?

Le fichier .pcap généré par Wireshark est here.

Répondre

8

Voici un bon lien a blog expliquant ce qui se passe, et les modifications apportées à votre fichier de configuration d'application que vous pouvez ajouter à l'empêcher de se produire, en particulier:

<configuration> 
    <runtime> 
     <generatePublisherEvidence enabled="false"/> 
    </runtime> 
</configuration> 

Il est lié à la signature Authenticode et la PublisherMembershipCondition que vous presque certainement pas besoin. Cela est expliqué ici sur MSDN

Une chose à noter est que .Net 2.0 et .Net 3.0 ont seulement ajouté le support pour ce paramètre de configuration avec SP1. .Net 3.5 le supporte sans aucun service pack.

0

Est-ce que ces DLL tierces payantes effectuent éventuellement une sorte d'authentification d'utilisation?

+0

Ils sont payés, mais leur mécanisme de licence consiste à rechercher une clé de licence incluse dans un fichier sur l'ordinateur. – Phil

+0

Eh bien, c'est un mécanisme de licence. L'autre ne semble pas avoir de mécanisme de vérification de licence. – Phil

1

S'il s'agit d'une application Web avec SSL, IE peut être tenté de vérifier que le certificat n'a pas été révoqué.

+0

AFAIK, la même chose peut être vrai pour tous les assemblés .net signés, pas nécessairement connecté à IE ou applications web. Le système contacte un serveur de liste de révocation de certificats (CRL) pour vérifier si quelque chose ne doit plus être approuvé. Il existe une option à l'échelle du système pour désactiver ce comportement, mais je ne me souviens pas où il est. – atzz

2

Si vous signez votre assembly avec un vrai certificat, le runtime .net doit vérifier la signature numérique.