Domanda

Sto usando il seguente codice per assicurarmi che tutti i certificati passino, anche quelli non validi, ma vorrei sapere se esiste un modo migliore, poiché questo evento viene chiamato a livello globale e voglio solo che il certificato passi per un determinate chiamate HTTP e non per altre che avvengono in modo asincrono.

// This delegate makes sure that non-validating SSL certificates are passed
ServicePointManager.ServerCertificateValidationCallback = delegate(object certsender, X509Certificate cert, X509Chain chain, System.Net.Security.SslPolicyErrors error)
{
   return true;
};

Il codice sopra è solo un esempio di ignorare qualsiasi non convalida sul certificato. Il problema che sto riscontrando è che si tratta di un evento globale . Non riesco a vedere per quale sessione si sta verificando l'evento. Potrei ricevere un paio di richieste http e desidero chiedere all'utente un'azione per ogni richiesta .

È stato utile?

Soluzione

Che dire dell'argomento certsender ? Contiene qualcosa di sensato in modo da poter dire per quale connessione sta avvenendo la richiamata? Ho controllato l'API .NET ma non dice cosa dovrebbe contenere l'argomento ...

Altri suggerimenti

Beh, potresti davvero preoccuparti di controllare alcuni di questi parametri. ;) Ad esempio, se si dispone di un certificato autofirmato, lasciare solo error = = SslPolicyErrors.RemoteCertificateChainError through. È inoltre possibile controllare l'emittente, il nome, ecc. Sul certificato stesso per ulteriore sicurezza.

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