Question

J'ai une autre question à propos de SSL.

J'ai un client intelligent et je le déploie à l'aide de ClickOnce. Dans cette application Smart Client, j'appelle un service Web HTTPS. Il me faut donc installer une autorité de certification racine de confiance pour pouvoir accéder à ce service Web HTTPS.

Supposons que je souhaite conserver l'intégralité du symbole "ClickOnce", ce qui signifie que je ne souhaite rien avoir à faire sur l'ordinateur client, à l'exception de l'exécution de ClickOnce = Je ne souhaite pas avoir à installer le certificat sur le client. machine manuellement (ou pas) mais je veux l'avoir installer avant le Smart Client. Je l'inclurais dans le paquet et ce serait la première chose à installer.

Mon problème est le suivant:

Comme je l'ai lu sur Internet, il est impossible d'installer une "Autorités de certification racines de confiance". sans disposer de droits d'administrateur sur la machine cliente

est-ce vrai?

si c'est correct, voyez-vous une autre solution pour atteindre cet objectif ou ce n'est tout simplement pas possible?

Merci d'avance.

Était-ce utile?

La solution

  

est-ce vrai?

Oui, en supposant que vous vouliez dire "est-ce exact?" Vous ne pouvez pas installer de certificats sur un ordinateur client sans droits d'administrateur, car cela compromettrait tout le but du concept de certificat. Les certificats non fiables ne peuvent pas devenir magiquement fiables sans une action explicite de l'utilisateur.

  

Je suppose que si je reçois un certificat d’achat de l’un des   Autorités de certification racines qui   sont déjà dans la racine de confiance   Autorités de certification (Thawte, ...)   , ça devrait marcher?

Je suppose par "CA". vous voulez dire "certificat". CA signifie autorité de certification. Thawte, Verisign, etc. sont des autorités de certification. Vous obtenez des certificats auprès des autorités de certification. Et la réponse est oui, cela fonctionnera car (vous l'avez dit), pratiquement tout le monde leur fait confiance.

Autres conseils

Je ne suis pas sûr à 100% que cela fonctionnera pour vous, mais pour nos tests unitaires dans lesquels nous communiquons via notre service Web avec https (qui sur les machines de développement ne comporte pas de certificat délivré par une autorité de certification), faites ceci:

Dans le client, nous appelons cette méthode statique: (Nous utilisons des services Web avec WSE3, nous ne savons pas si cela dépend de cela.)

    private static void DisableCertificateChainCheckingForTestCertificateCompatibility()
    {
        ServicePointManager.ServerCertificateValidationCallback = 
           new RemoteCertificateValidationCallback(
              ValidateServerCertificate);
    }

    internal static bool ValidateServerCertificate(
        object sender,
        X509Certificate certificate,
        X509Chain chain,
        SslPolicyErrors sslPolicyErrors)
    {
        if (sslPolicyErrors == SslPolicyErrors.None)
        {
            return true;
        }

        //Allow untrusted machines
        if (sslPolicyErrors == SslPolicyErrors.RemoteCertificateChainErrors)
        {
            return true;
        }

        // Do not allow this client to communicate with unauthenticated servers.
        return false;
    }

Vérifier deux fois avec MSDN, je me suis dit que jadis, j’avais pris ce code directement à partir d’ici: http://msdn.microsoft.com/en- us / library / system.net.security.remotecertificatevalidationcallback.aspx

Bon Dieu!

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