2012-08-14 14 views
8

Esistono scenari in cui si desidera che l'applicazione accetti i certificati SSL non validi (ambiente di test/certificati autofirmati, ecc.).Accettare certificati SSL non validi utilizzando WinRT

Nel mondo .NET si usa la classe ServerCertificateValidationCallback per farlo. Sfortunatamente la classe non esiste in un contesto WinRT.

Ho bisogno di consumare un'API Web utilizzando WinRT che è ospitato su un server senza un certificato ssl valido.

Come si accettano certificati ssl non validi in WinRT utilizzando la classe HttpClient o qualsiasi altra classe appropriata.

Qualsiasi aiuto o alternativa sarebbe molto apprezzato.

+1

In alternativa, si potrebbe aggiungere la vostra auto firmato i certificati di prova per il vostro locale di certificati in modo che sarebbe stato visto come valido. – Wug

+0

Stavo pensando anche a quello e teoricamente dovrebbe funzionare, ma: il dispositivo che sto usando è un hardware che puoi acquistare ed è solo complicato spiegare ai normali utenti come ssh in una macchina, ottenere il certificato e così via e così via. O ci sarebbe un modo per automatizzare questo? – Flo

+0

Dipende dal sistema operativo. È possibile fornire il certificato in una varietà di formati insieme alle istruzioni di installazione per diversi sistemi operativi (la maggior parte di essi sarà fondamentalmente "scarica questo e fai doppio clic su di esso"). Se stai lavorando con un'azienda, puoi inviare una richiesta al loro reparto IT e probabilmente possono fare l'installazione sulle macchine dei loro dipendenti. – Wug

risposta

-1

in silverlight, non era consentito. Non ho visto nulla che dica che è permesso in winrt.

+0

indica che non è possibile farlo: http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/4a776e8c-0e10-4f03-908f-7f765d914080 - solo un altro caso in cui MS afferma no e Apple dice "Sì certo- amiamo gli sviluppatori!" – dethSwatch

+0

Penso che per ora non ho altra scelta che accettare la tua risposta. Speriamo che cambino qualcosa su questo in futuro! – Flo

+0

sotto la risposta funziona :-) –

3

Il seguente codice ha lavorato per me per lo scenario di debug:

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

Ti dispiacerebbe spiegare come farlo con Webview? – xMythicx

+0

Nessuna idea per una soluzione con webview. La domanda originale non riguarda la webview. Perché questa domanda non è utile? –

+1

Grazie Dschüsä, che ha aiutato molto per la mia app per Windows 10! –

Problemi correlati