Domanda

Ho un'altra domanda su SSL.

Ho uno Smart Client e lo distribuisco usando ClickOnce. In questa applicazione Smart Client, chiamo un servizio Web HTTPS. Ho bisogno di installare un'autorità di certificazione radice affidabile per dare accesso a questo servizio Web HTTPS.

Diciamo che voglio mantenerlo completamente " ClickOnce " ;, nel senso che non voglio avere nulla da fare sul computer client tranne eseguire il ClickOnce = non voglio installare il certificato sul client macchina manualmente (o no) ma voglio averlo installato prima dello Smart Client. Lo includerei nel pacchetto e sarà la prima cosa da installare.

Il mio problema è:

Mentre leggo su Internet, non è possibile installare un'Autorità di certificazione radice attendibile " senza avere i diritti di amministratore sul computer client

è giusto?

se è giusto, vedi un'altra soluzione per raggiungere questo obiettivo o semplicemente non è possibile?

Grazie in anticipo.

È stato utile?

Soluzione

  

è giusto?

Sì, supponendo che intendi "è corretto?" Non è possibile installare certificati su un computer client senza diritti di amministratore poiché ciò minerebbe l'intero scopo del concetto di certificato. I certificati non attendibili non possono essere magicamente considerati affidabili senza un'azione esplicita da parte dell'utente.

  

Suppongo che se ottengo una CA da uno dei   Autorità di certificazione radice che   sono già nella radice attendibile   Autorità di certificazione (Thawte, ...)   , dovrebbe funzionare?

Presumo da " CA " in realtà intendi " certificato. " CA sta per Autorità di certificazione. Thawte, Verisign, ecc. SONO le autorità di certificazione. Ottieni certificati dalle autorità di certificazione. E la risposta è sì, funzionerà perché (l'hai detto tu) sono già considerati affidabili da praticamente tutti nel mondo.

Altri suggerimenti

Non sono al 100% che questo funzionerà per te, ma per i nostri test unitari in cui comunichiamo attraverso il nostro servizio web con https (che sulle macchine di sviluppo non ha un certificato emesso da una CA), noi fai questo:

Nel client, chiamiamo questo metodo statico: (stiamo usando i servizi web con WSE3, non sono sicuro che ciò dipenda da questo)

    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;
    }

Doppio controllo con MSDN Ho scoperto che una volta ho preso questo codice direttamente da qui: http://msdn.microsoft.com/en- us / library / system.net.security.remotecertificatevalidationcallback.aspx

Godspeed!

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top