2010-07-19 2 views
11

J'utilise cette commande sur mon mono VMproblèmes Mono avec cert et mozroots

sudo mozroots --import --sync 

Il semble obtenir le cert de this site. Puis j'essaye de me connecter à mon site SSL et j'obtiens l'exception que le CERT est invalide. J'utilise firefox et voir le certificat a été publié en 2010. J'ai regardé ce fichier et voir la dernière fois qu'il a été mis à jour était 2009-05-21 12:50

Lorsque vous utilisez Firefox sur la même machine, je peux naviguer vers le même URL que j'essaie de me connecter et je n'ai pas de problèmes de SSL. (pas d'alerte ni me demander de l'ajouter à une exception).

Je suis confus ici. Comment puis-je mettre à jour mono pour utiliser les derniers certificats?

-edit- J'ai vérifié qui a signé le CERT du site que je veux visiter et dont le nom est en certdata. Je me demande pourquoi mono dit que le cert n'est pas valide.


J'ai essayé d'écrire et je frappé oui à la 3 cert il m'a demandé d'importer

certmgr -ssl https://www.site.com/users/login --machine 

J'ai couru à nouveau ma demande et a cette erreur. Googling le code d'erreur 0xffffffff80092012 i found this.

Apparemment, un bogue fixe n'a pas été appliqué à 2.6.4. Ou je pourrais le faire mal. Je place le ServerCertificateValidationCallback à mon propre truc et renvoie true pour cette application en tant que correctif pour mono.

System.Net.WebException: Erreur d'obtention flux de réponse (écrire: L'authentification ou le déchiffrement a échoué .): SendFailure ---> System.IO.IOException: L'authentification ou le déchiffrement a échoué. ---> Mono.Security.Protocol.Tls.TlsException: Certificat non valide reçu du serveur . Code d'erreur: 0xffffffff80092012

Répondre

2
  1. Une installation par défaut de Mono ne fait pas confiance à personne!
  2. mozroots va télécharger et importer des certificats racine de confiance de Mozilla's LXR.
  3. Lire la Mono Security FAQ

EDIT:

  • Essayez la dernière version de paquets Mono de here
  • Si cela ne fonctionne pas non plus essayer la version tronc SVN here
  • De la Bug 606002, Gonzalo Paniagua Javier 'a suggéré: "Le chemin à parcourir est d'ajouter votre ServerCertificateValidationCallback à ServicePointManager et d'ignorer les erreurs est le code. "
  • J'ai peu d'expérience dans ce domaine, donc je suggère de le contacter pour plus d'aide, peut-être qu'il peut aider. Son email est gonzalo @ gonzalo.nom (his blog)
+0

Je édite ma question après avoir essayé votre solution. –

3

Suivi sur le bogue 606002 - voici le code pour ignorer le code d'erreur. Appelez-le une fois dans votre initialisation

  ServicePointManager.ServerCertificateValidationCallback += delegate(object sender, X509Certificate cert, X509Chain chain, SslPolicyErrors sslPolicyErrors) { 
      if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors) { 
       foreach (X509ChainStatus status in chain.ChainStatus) { 
        if (status.Status != X509ChainStatusFlags.RevocationStatusUnknown) { 
         return false; 
        } 
       } 
       return true; 
      } 

      return false; 
     };