2012-08-14 16 views
8

Existen situaciones en las que desea que su aplicación acepte certificados SSL no válidos (entorno de prueba/certificados autofirmados, etc.).Aceptación de certificados SSL no válidos con WinRT

En el mundo de .NET uno usaría la clase ServerCertificateValidationCallback para hacerlo. Lamentablemente, la clase no existe en un contexto WinRT.

Necesito consumir una API web utilizando WinRT que está alojado en un servidor sin un certificado SSL válido.

Cómo se aceptan certificados ssl no válidos en WinRT utilizando la clase HttpClient o cualquier otra clase apropiada.

Cualquier ayuda o alternativa sería muy apreciada.

+1

Alternativamente, se podría añadir a su auto firmado los certificados de prueba a su almacén de certificados local para que pudieran ser consideradas como válidas. – Wug

+0

Estaba pensando en eso también y teóricamente debería funcionar, pero: el dispositivo que estoy usando es una paz de hardware que puedes comprar y es solo para explicar a los usuarios normales cómo ingresar a una máquina, graficar el certificado y Y así sucesivamente. ¿O habría una forma de automatizar esto? – Flo

+0

Depende del sistema operativo. Puede suministrar el certificado en una variedad de formatos junto con instrucciones de instalación para diferentes sistemas operativos (la mayoría de ellos, básicamente será "descargar esto y hacer doble clic en él"). Si está trabajando con una empresa, puede enviar una solicitud a su departamento de TI y probablemente puedan hacer la instalación en las máquinas de sus empleados – Wug

Respuesta

-1

en Silverlight, no estaba permitido. No he visto nada que diga que está permitido en winrt.

+0

esto indica que no puede hacerlo: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/4a776e8c-0e10-4f03-908f-7f765d914080 - solo otro caso en el que MS dice no, y Apple dice "Sí, claro, ¡amamos a los desarrolladores!" – dethSwatch

+0

Creo que por ahora no tengo más remedio que aceptar tu respuesta. ¡Esperemos que cambien algo sobre esto en el futuro! – Flo

+0

a continuación la respuesta está funcionando :-) –

3

El siguiente código que funcionó para mí para el escenario de depuración:

var filter = new HttpBaseProtocolFilter(); 
#if DEBUG 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Expired); 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.Untrusted); 
    filter.IgnorableServerCertificateErrors.Add(ChainValidationResult.InvalidName); 
#endif 
using (var httpClient = new HttpClient(filter)) { 
    ... 
} 
+0

¿Te importaría explicar cómo hacer esto con Webview? – xMythicx

+0

No hay idea para una solución con vista web. La pregunta original no es sobre webview. ¿Por qué esta pregunta no es útil? –

+1

Gracias Dschüsä, ¡eso ayudó mucho para mi aplicación Windows 10! –

Cuestiones relacionadas