最近架了个WebService,为了提高安全性,在IIS上部署了证书。但对方公司的技术人员反映安装了客户端证书之后,浏览器可以访问WebService,不过Winform程序访问失败,报一个403错误。
看来是证书验证的问题。其实解决办法很简单,在安装根证书和客户端证书之后,从IE里面导出不含私钥的X509证书,再在代码里面引用就ok了。
估计是对方公司的弟兄在导出IE证书时,选择了非X509的选项,导致X509Certificate类识别失败。
代码如下:
string certificateFile = @"F:\ClientSms.cer";
//X509证书地址
X509Certificate cert = X509Certificate.CreateFromCertFile(certificateFile);
HeaoPZ. ss = new HeaoPZ();
//WebService
ss.Timeout = 50;
ss.ClientCertificates.Add(cert);
//载入X509证书