Exception sur SslStream.AuthenticateAsClient (Le message a été mal formaté)
J'ai bizarre problème en allant sur. Je suis en train d'essayer de se connecter au serveur Apple via TCP/SSL. Je suis à l'aide d'un certificat du Client fourni par Apple pour les notifications push. J'ai installé le certificat sur mon serveur (Win2k3) dans les Locaux des certificats Racine de Confiance et de Locaux dossier Certificats Personnels.
Maintenant, j'ai une bibliothèque de classes qui traite de la connexion, lorsque j'appelle cette bibliothèque de classe à partir d'une console application en cours d'exécution à partir du serveur, il fonctionne tout à fait bien, mais quand je l'appelle, que la bibliothèque de la classe à partir d'une asp.net la page ou le service web asmx-je obtenir de l'exception suivante.
Un appel à SSPI échoue, consultez la section intérieure d'exception. Le message reçu était inattendu ou mal formaté.
C'est mon code:
X509Certificate cert = new X509Certificate(certificateLocation, certificatePassword);
X509CertificateCollection certCollection = new X509CertificateCollection(new X509Certificate[1] { cert });
//OPEN the new SSL Stream
SslStream ssl = new SslStream(client.GetStream(), false, new RemoteCertificateValidationCallback(ValidateServerCertificate), null);
ssl.AuthenticateAsClient(ipAddress, certCollection, SslProtocols.Default, false);
ssl.AuthenticateAsClient
est où l'erreur est lancée.
C'est me rend fou. Si l'application de console peut se connecter très bien, il doit y avoir un problème avec asp.net sécurité de la couche réseau qui est l'échec de l'authentification... ne sais pas, peut-être besoin d'ajouter quelque chose ou une sorte de politique de sécurité dans le web.config. Aussi juste pour souligner que je peux me connecter très bien sur mon local de développement de la machine de la console et de site web.
Quelqu'un a des idées?
OriginalL'auteur Noms | 2009-12-10
Vous devez vous connecter pour publier un commentaire.
Avez-vous installé le certificat sur votre système? Si vous exécutez windows, il devrait être dans l'Ordinateur Local/Personnels ou des Dossiers de Confiance en vertu de la Console de Gestion (Exécuter -> mmc).
OriginalL'auteur Noms
L'ASP.NET s'exécute sous un compte différent, donc vous devez utiliser
WinHttpCertCfg.exe
outil pour permettre le compte suivant pour accéder au certificat qui vous devez l'installer dans le Local de l'Ordinateur Personnel/des dossiers de Confiance.par exemple
où le nom de certificat est le nom convivial de votre certificat. Vous pouvez obtenir de l'outil et de l'information de ici.
OriginalL'auteur Noms
J'ai eu ce même problème - l'ajout de l'ASP.NET DefaultAppPool/l'utilisateur du Service Réseau n'aide pas, moi si.
J'ai finalement compris que l'ASP.NET webservice ne pouvait pas accéder au certificat lorsqu'il était dans les Certificats Racine de Confiance de dossier (même si l'application de console). J'ai traîné en arrière pour le dossier Certificats Personnels et peut désormais appeler la méthode de la console et des applications web.
OriginalL'auteur cometfish
changement X509Certificate à X509Certificate2 et aussi X509CertificateCollection à X509Certificate2Collection
OriginalL'auteur Rahul Parate