如何使用WebRequest连接SSL网站

//NET 1.0 /1.1 version:
//======================

using System.Net;
using System.Security.Cryptography.X509Certificates;

///
/// 使用WebRequest连接之前调用此方法就可以了.
///

private void MethodToAccessSSL()
{
// 
ServicePointManager.CertificatePolicy = new AcceptAllCertificatePolicy();

//  WebRequest myRequest = WebRequest.Create(url); 
}




internal class AcceptAllCertificatePolicy : ICertificatePolicy
{
  
public AcceptAllCertificatePolicy() { }
  
public bool CheckValidationResult(ServicePoint sPoint,
  X509Certificate cert, WebRequest wRequest,
int certProb)
  
{
    
return true;
  }

}



//NET 2.0 Version
//==============


using System.Net;
using System.Security.Cryptography.X509Certificates;
using System.Net.Security;

///
/// 使用WebRequest连接之前调用此方法就可以了.
///

private void MethodToAccessSSL()
{
  
// 
  ServicePointManager.ServerCertificateValidationCallback =
       
new RemoteCertificateValidationCallback(ValidateServerCertificate);
  
//WebRequest myRequest = WebRequest.Create(url); 
}



// The following method is invoked by the RemoteCertificateValidationDelegate.
public static bool ValidateServerCertificate(
    
object sender,
    X509Certificate certificate,
    X509Chain chain,
    SslPolicyErrors sslPolicyErrors)
  
{
    
if (sslPolicyErrors == SslPolicyErrors.None)
      
return true;

    Console.WriteLine(
"Certificate error: {0}", sslPolicyErrors);

    
// Do not allow this client to communicate with unauthenticated servers.
    return false;
}

共有0个回答