This problem isknown BUG in VS-2003.
but you can used the workaround.
1. On the website change security configuration to to not require certificate.
2. add webreference to your project and change the security configuration on website again to require certificate.
3. You must download the WSE 2.0 SP1, if you haven’t already (http://www.microsoft.com/downloads/ThankYou.aspx?familyId=dab3ad9f-be8f-42e1-95fe-9aae41a487f3&displayLang=en), and add a reference to Microsoft.Web.Services2 in your project.
and you need change your code by adding mannualy the certificate to Instance of Webservice object, this is a sample code:
using WseX509 = Microsoft.Web.Services2.Security.X509;
[...]
// Create web service proxy
Service1.Service1 myProxy = new WSSTest.Service1.Service1();
// Open the current user's certificate store
WseX509.X509CertificateStore store = WseX509.X509CertificateStore.CurrentUserStore(WseX509.X509CertificateStore.MyStore);
bool open = store.OpenRead();
// Find a certificate for the current user
WseX509.X509CertificateCollection certs = store.FindCertificateBySubjectString("Email@address");
WseX509.X509Certificate cert = ((WseX509.X509Certificate) certs[0]);
// Tell the proxy to send the user's certificate over when calling the web service
myProxy.ClientCertificates.Add(cert);
// Call the web service
string s = myProxy.HelloWorld();
MessageBox.Show(s);