Question

Mon entreprise a développé un service Web .NET et une dll client qui utilise ce service web. Le webservice est hébergé sur notre serveur sur ssl et que le certificat est fourni et signé par GoDaddy. Nous avons des clients dans un environnement hébergé qui obtiennent le message d'erreur suivant de la dll client lorsqu'il tente d'accéder à notre service Web.

System.Net.WebException La connexion sous-jacente a été fermée:. N'a pas pu établir une relation de confiance pour le SSL / TLS canal sécurisé

Notre solution a été de les ouvrir IE sur le serveur, ce qui est un défi en soi pour un grand nombre de services hébergés, et allez à l'URL WSDL. IE les invite ensuite avec une boîte de dialogue d'alerte de sécurité. Il dit que la date de cert est valide et un nom valide correspondant au nom de la page, mais il a été émis par une entreprise que vous avez choisi de ne pas confiance. Quand ils cliquent sur Oui pour continuer, le dll client peut alors se connecter avec succès au service Web et fonctionner normalement.

Est-ce que quelqu'un a une idée pourquoi GoDaddy n'aurait pas été là-bas la liste des éditeurs valides? Tous les serveurs que nous avons en cours d'exécution a GoDaddy comme une autorité valide. Je devine que, pour des raisons de sécurité, ils ont désinstallés l'autorité de GoDaddy, mais pas tout à fait convaincu qu'il n'y a pas un autre problème sous-jacent.

Malheureusement, je ne l'ai pas eu beaucoup de chance d'essayer de recréer ce local. Si je vais dans les options Internet et supprimer les autorités GoDaddy et a frappé notre service, ssl fonctionne très bien. Je rentre dans la liste des éditeurs et GoDaddy obtient remettrai droite. Ma deuxième question est, comment diable voulez-vous vous débarrasser de GoDaddy pour que je puisse obtenir un avertissement cert invalide?

D'accord, la dernière question. Est-il possible dans le code que je peux dire au service Web d'ignorer certs invalides. Je l'ai vu quelques messages sur le faire avec WCF, mais programatically pas vieux services Web.

Était-ce utile?

La solution

Vous devrez peut-être installer sur vos serveurs les certificats intermédiaires utilisés pour signer vos certificats SSL.

Browsers tentera de valider le certificat SSL en cochant la validation de la chaîne de certs qui ont signé le certificat SSL. Si le serveur ne fournit pas la chaîne de certificat avec le certificat SSL, le navigateur peut rejeter le certificat SSL. (Plus d'un problème pour Firefox que IE). Le certificat racine doit encore être installé sur la machine cliente pour tout cela au travail.

Autres conseils

Je fixe cette erreur en ajoutant cette ligne avant d'appeler la méthode Web:

System.Net.ServicePointManager.ServerCertificateValidationCallback = (senderX, certificate, chain, sslPolicyErrors) => { return true; };

VB.NET équivalent est

   System.Net.ServicePointManager.ServerCertificateValidationCallback = Function(senderX, certificate, chain, sslPolicyErrors)
                                                                             Return True
                                                                         End Function

Ceci est vraiment plus d'une question serverfault, mais je vais ajouter ce que je peux ici.

La liste de l'autorité de cert racine que des machines Windows normalement confiance est mis à jour assez régulièrement. Cela revient en tant que mise à jour de Windows IE. Vous pouvez voir MSDN pour plus d'informations .

Si vos clients ne disposent pas de fenêtres mise à jour activée ou ne tiennent pas compte des mises à jour activement les fenêtres, ce qui est malheureusement très fréquent pour beaucoup de services informatiques, alors il n'y a pas grand-chose que vous pouvez faire autre que changer de fournisseur SSL.

En gros, ils ont besoin pour obtenir les mises à jour de certificat ou si vous devez passer à un fournisseur de cert qui a une forte probabilité d'être déjà fait confiance par les machines en question. En général ce moyen Verisign ou Thawte. La troisième alternative est l'itinéraire que vous avez descendiez. Ont confiance en eux manuellement l'autorité de certification racine

A la fin de la journée je déteste l'idée de changer une application de cette façon simplement parce que les services informatiques en question sont des crétins, mais la vraie question se résume à la façon dont votre entreprise veut gérer cela.

Quand vous regardez le chemin de certification Go Daddy de ce certificat sur le serveur Web, voyez-vous Go Daddy classe xxx xxx ou Starfield classe?

Et de votre client non-legacy i.e. Windows Vista vers le haut, ce qui fait l'affichage du chemin de certification Go Daddy? Go Daddy classe xxx xxx ou Starfield classe?

Et ces clients qui obtiennent l'avertissement, sont-ils des clients existants? i.e. et plus Windows XP?

Racine mises à jour de certificats fonctionne différemment de Windows Vista.

http://support.microsoft.com/kb/931125

certificats racine sous Windows Vista et versions ultérieures sont distribués via le mécanisme de mise à jour automatique des racines - qui est, par certificat racine. Lorsqu'un utilisateur visite un site Web sécurisé (en utilisant le protocole HTTPS SSL), indique un e-mail sécurisé (S / MIME), ou télécharge un contrôle ActiveX qui est signé (la signature de code) et rencontre un nouveau certificat racine, le logiciel de vérification de la chaîne de certificats Windows vérifie Microsoft Update pour le certificat racine. Si elle le trouve, il télécharge le certificat Trust List en cours (ctl) contenant la liste de tous les certificats racine de confiance dans le programme, et vérifie que le certificat racine est énuméré là; il télécharge alors le certificat racine spécifié au système et l'installe dans les autorités de certification racine de confiance Windows Store.

Vous constaterez probablement que votre chemin de certification Go Daddy sur le serveur Web pense qu'il est Starfield classe 2 au lieu de Go Daddy classe 2 si vous avez installé le certificat racine mauvais. Il m'a pris comme lorsque vous affichez dans sur le serveur web, il ne présente pas un avertissement certificat racine, télécharger et installer la classe Do Papa 2 cert racine et retirez le Starfield un et votre problème devrait disparaitra.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top