IIS 是不是进行 SSL 证书检查,还是我必须对其进行验证?

Posted

技术标签:

【中文标题】IIS 是不是进行 SSL 证书检查,还是我必须对其进行验证?【英文标题】:Does IIS do the SSL certificate check or do I have to verify it?IIS 是否进行 SSL 证书检查,还是我必须对其进行验证? 【发布时间】:2012-01-08 17:38:06 【问题描述】:

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

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

【问题讨论】:

【参考方案1】:

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

如果您想限制对服务的访问仅限于有限的客户端子集(仅由单个 CA 颁发的证书),您应该在您的 WCF 服务中将此要求从身份验证(验证证书)移动到授权 = custom AuthorizationPolicy将验证证书是由正确的 CA 颁发的 = 客户端有权调用您的服务。

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

【讨论】:

【参考方案2】:

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

【讨论】:

以上是关于IIS 是不是进行 SSL 证书检查,还是我必须对其进行验证?的主要内容,如果未能解决你的问题,请参考以下文章

IIS服务器安装SSL证书后提示不可信怎么办

iis安装ssl证书

2008申请SSL证书,IIS7怎么申请SSL安全证书

IIS6:从命令行创建/安装 SSL 自签名证书

Java SSL 证书吊销检查

创建RC4 / DES SSL PFX