IIS是否进行SSL证书检查或是否必须进行验证?

时间:2011-11-29 11:13:13

标签: wcf iis ssl client-certificates

我将IIS设置为仅接受具有SSL证书的客户端连接。我在IIS上运行WCF服务。我在服务器可信CA中有一个证书颁发机构。 现在,当客户端连接到服务时,IIS是否验证客户端证书是否由我的一个受信任的CA颁发?或者我是否必须在我的WCF服务中进行验证?

此外,如果我希望服务接受来自一个特定CA(不是我所有可信任的CA,只有一个)的连接,我是否必须在服务代码中进行验证?

2 个答案:

答案 0 :(得分:15)

如果您将IIS配置为要求相互HTTPS(带有客户端证书的SSL),则IIS / http.sys负责验证证书,并且客户端证书必须位于受信任的人员存储中,或者必须由受信任的CA颁发。在安全握手期间验证证书以建立SSL连接。当IIS用于托管WCF服务时,此验证在WCF之外完成(如果是自托管,则可以使用custom certificate validation)。

如果要将服务的访问权限仅限于有限的客户端子集(仅使用单个CA颁发的证书),则应将此要求从身份验证(验证证书)移至WCF服务中的authorization = custom AuthorizationPolicy您将验证证书是否由正确的CA颁发=客户端有权调用您的服务。

还可以在系统级别使用netsh配置受信任的颁发者 - 检查sslctlidentifiersslctlstorename。对于整个端口(网站),此配置将是全局的,因此,如果您在同一端口上托管了多个具有不同要求的Web应用程序或服务,则这将不适合您。

答案 1 :(得分:3)

是的,IIS验证客户端证书以进行相互身份验证,您无需在Web服务代码中进行检查 检查this article,会更清楚。