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