我試圖通過使用服務器證書來保護我們的web服務。爲了測試,我在IIS管理控制檯上創建了一個自簽名證書,並將該站點配置爲使用證書。 在IIS上,我創建了HTTPS綁定,並將其配置爲使用證書。在我的web服務的虛擬路徑上啓用SSL,並將其設置爲要求客戶端證書。在SSL上使用服務器證書時出現HTTP錯誤403.7
右鍵單擊證書,將其與密碼一起導出到測試客戶端的文件系統。
我用下面的代碼來調用使用證書作爲客戶端證書的web服務:
SSLServiceReference.DataAccessService lService = new SSLServiceReference.DataAccessService();
X509Certificate2 lCert = new System.Security.Cryptography.X509Certificates.X509Certificate2(@"C:\Users\Dev06\Documents\TestSamsung2Cert.pfx", "qwerty");
lService.ClientCertificates.Add(lCert);
lService.Credentials = CredentialCache.DefaultNetworkCredentials;
DataSet lSet = lService.GetSites();
但在()我接收403.7 http錯誤GetSites的調用。 我在做什麼錯?我的意圖是要求消費Web服務的客戶呈現此證書,以便只有他們可以調用它。
IIS 7
謝謝你的任何指針。
謝謝,我會盡力回覆你。如果客戶端和服務器都有不同的證書(其中IIRC足以進行SSL通信),那麼如何驗證只有某些證書才能訪問站點/服務?有人告訴我,分享證書是爲了實現這一目標所要做的。 – 2012-01-04 14:24:34
有幾種方法:1)默認情況下拒絕未受信任CA簽名的客戶端證書。你可以在服務器上限制可信任的CA(我不推薦這麼做)2)你可以在你的應用程序中編寫代碼來檢查證書並做出決定是否可以訪問(這是我一直以來的做法)。或3)IIS有辦法將客戶端證書映射到用戶帳戶(我沒有使用過)。 – mikey 2012-01-04 17:56:43
我看到你正在使用IIS7,不知道什麼操作系統,但在新的操作系統,你可以通過證書MMC(用戶界面)訪問證書的私鑰。在過去,您必須使用我發佈的鏈接中提到的命令行工具winhttpcertcfg。 – mikey 2012-01-04 18:00:45