最近架了個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證書