Pregunta

Puedo tener otra pregunta sobre SSL.

Tengo un cliente inteligente y lo implemento usando ClickOnce. En esta aplicación de Smart Client, llamo a un servicio web HTTPS. Necesito instalar una autoridad de certificación de raíz de confianza para dar acceso a este servicio web HTTPS.

Digamos que quiero mantenerlo completamente " ClickOnce " ;, lo que significa que no quiero tener nada que hacer en la máquina cliente, excepto ejecutar ClickOnce = No quiero tener que instalar el certificado en el cliente Máquina manualmente (o no), pero quiero que se instale antes del Smart Client. Lo incluiría en el paquete y será lo primero que se instalará.

Mi problema es:

Mientras leo en Internet, no hay manera de que pueda instalar un " Trusted Root Certification Authorities " sin tener derechos de administrador en la máquina cliente

es correcto?

si está bien, ¿ve otra solución para lograr este objetivo o simplemente no es posible?

Gracias por adelantado.

¿Fue útil?

Solución

  

¿está bien?

Sí, suponiendo que te refieres a " ¿es correcto? " No puede instalar certificados en una máquina cliente sin derechos de administrador porque eso socavaría todo el propósito del concepto de certificado. Los certificados que no son de confianza no pueden convertirse mágicamente en confianza sin una acción explícita del usuario.

  

Supongo que, si obtengo un CA de uno de los   Autoridades de certificación de raíz que   ya están en la raíz de confianza   Autoridades de Certificación (Thawte, ...)   , debería funcionar?

Supongo que por " CA " en realidad te refieres a " certificado. " CA significa Autoridad de Certificación. Thawte, Verisign, etc. SON Autoridades de Certificación. Obtienes certificados de las Autoridades de Certificación. Y la respuesta es sí, eso funcionará porque (tú lo dijiste) ya casi todos en el mundo confían en ti.

Otros consejos

No estoy seguro al 100% de que esto funcione para usted, pero para nuestras pruebas unitarias en las que nos comunicamos a través de nuestro servicio web con https (que en las máquinas de desarrollo no tiene un certificado emitido por una CA), haz esto:

En el cliente, llamamos a este método estático: (estamos usando servicios web con WSE3, no estamos seguros si esto depende de eso)

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

La doble verificación con MSDN me di cuenta de que una vez tomé este código directamente desde aquí: http://msdn.microsoft.com/en- us / library / system.net.security.remotecertificatevalidationcallback.aspx

Godspeed!

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top