2010-06-16 7 views
1

J'ai créé une application Silverlight 3.0, qui communique avec un serveur rpc xml via https. L'application entière s'exécutera dans un environnement LAN où le serveur peut être installé sur différentes machines et le client sera sur la même machine. J'utilise le certificat auto-signé qui est généré contre ip du serveur et je dois mettre Autorités de certification racine de confiance sur la machine client. mais si je veux communiquer un deuxième serveur alors un autre certificat doit être installé sur la machine cliente contre l'IP de ce serveur spécifique, En bref je dois installer n certificats sur le client si je veux communiquer n différents serveurs, ce qui est impossible pour moi , comment puis-je le faire avec un seul certificat sur l'environnement LAN. Les certificats sont générés par rapport à l'adresse IP ou au nom d'hôte du serveur. Existe-t-il un moyen de contourner la validation du certificat SSL? commeCertificat SSL pour l'environnement LAN

ServicePointManager.ServerCertificateValidationCallback = MyCertHandler; 

static bool MyCertHandler(object sender, X509Certificate certificate, X509Chain chain, SslPolicyErrors error) 
{ 
// Ignore errors 
return true; 
} 

mais le code ci-dessus ne peut pas être utilisé dans Silverlight? de l'aide?

Répondre

1

N'utilisez pas un certificat auto-signé, et si vous pouvez ignorer l'authentification, il n'y a pas de bonne raison d'utiliser ssl.

Pour éviter les Certs auto-signés: Configurez une CA personnelle (extrêmement facile à utiliser avec le CA de Microsoft). Ensuite, émettez les certificats de serveur à partir de votre propre autorité de certification et attribuez le certificat de l'autorité de certification à chacun des serveurs en tant que racine approuvée. Ensuite, vous vous retrouvez avec une configuration comme:

Chaînes Cert:

  • A signé B
  • A signé C
  • A signé D
  • A signé E

Déploiement :

  • serveur B obtient A et B
  • serveur C obtient A et C
  • serveur D obtient A et D
  • serveur E obtient A et E

Ensuite, un client qui se connecte à l'un de ces serveurs peuvent associez le nom commun à l'adresse à laquelle il s'est connecté, la plage de dates valide par rapport à son heure actuelle et créez une chaîne de validation pour "CA Cert A" pour chaque serveur.

(Voici un lien de départ aléatoire pour la configuration de votre propre serveur CA.) link text

Si vous essayez d'utiliser SELFSIGNED vous endup avec

Chaînes Cert:

  • B signé B
  • C signé C
  • D signé D
  • E signé E

Cert déploiement

  • serveur B devient B, C, D, E
  • serveur C devient B, C, D, E
  • serveur D obtient B, C, D, E
  • Serveur E obtient B, C, D, E