2011-11-29 83 views
12

我有一個IIS設置爲只接受帶SSL證書的客戶端連接。我有一個在IIS上運行的WCF服務。我在服務器可信CA中擁有一個證書頒發機構。 現在,當客戶端連接到服務時,IIS是否驗證客戶端證書是由我的一個受信任的CA頒發的?或者我必須在我的WCF服務中進行驗證?IIS執行SSL證書檢查還是必須驗證它?

此外,如果我只想要服務只有接受來自一個特定CA(不是我所有信任的CA,只有一個)的連接,我需要在服務代碼中進行驗證嗎?

回答

15

如果您配置IIS要求相互HTTPS(SSL與客戶端證書)的IIS/HTTP.SYS負責驗證證書和客戶端證書必須是在信任的人商店或必須由受信任的CA頒發在建立SSL連接的安全握手期間驗證證書。當IIS用於託管WCF服務時,此驗證在WCF之外完成(如果是自託管,則可以使用custom certificate validation)。

如果您想限制對服務的訪問僅限於有限的客戶端子集(使用僅由單一CA頒發的證書),您應該將此需求從身份驗證(驗證證書)移至您的WCF服務中的授權= custom AuthorizationPolicy驗證證書是由正確的CA頒發的=客戶端有權調用您的服務。

可信發行人可以在系統級還被配置爲與netsh - 檢查sslctlidentifiersslctlstorename。對於整個端口(網站),此配置將是全局的,因此如果您有多個Web應用程序或具有不同要求的服務託管在同一端口上,則這不會成爲您的選擇。

3

是,IIS驗證的相互驗證客戶端證書,你沒有檢查它在你的web服務代碼。
檢查this article,它會更清楚。