Tuesday, December 4, 2007

Using wildcard certificates with Mono

Using Mono with wildcard certificates requires that you override default policy. This is a sample in C# 1.1 to override host name policy by implement interface ICetificatePolicy.

public class Policy : ICertificatePolicy
{
  public bool CheckValidationResult(ServicePoint sp,     X509Certificate c, WebRequest r, int e)
  {
    if(e == 0 || e == -2146762481) // CertCN_NO_MATCH
      return true;
    else 
      return false;
  }
}

class TestApplication
{
  public static void Main(string[] args)
  {
   System.Net.ServicePointManager.CertificatePolicy = new Policy();
   TestWS service = new TestWS();
   service.Url = "https://services.host.se/Test.asmx";
   service.DoSomething();
  }
}