2011-11-29 81 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,它会更清楚。