IIS7 中的证书信任列表

Bre*_*obi 5 ssl iis-7 ssl-certificate

我正在尝试为 IIS7 中托管的 WebService 启用相互身份验证。我有服务器端证书设置和工作,但无法弄清楚如何在 IIS7 中创建和设置证书信任列表,以便我可以要求和验证客户端证书。

我的所有客户端证书都由我自己的根证书签名,因此我需要创建一个仅包含我的根证书的 CTL,然后让 IIS 验证客户端针对 CTL 提供的证书。

谁能解释一下如何做到这一点?IIS6 有一个用于分配 CTL 的 UI,但我在 IIS7 中找不到类似的东西。

更新: 我现在已经成功地在向导模式下使用 MakeCTL 来创建一个带有友好名称的 CTL。但是,我的 IIS7 盒子上没有 adsutil 支持,因此通过其他地方的其他帖子,我尝试使用“netsh http add sslcert”命令将 CTL 分配给我的站点。

在使用此命令之前,我必须删除分配给我的站点以进行服务器身份验证的现有 SSL 证书。然后在我的 netsh 命令中,我指定了我删除的同一个 SSL 证书的指纹,加上一个虚构的 appid,加上“sslctlidentifier=MyCTL sslctlstorename=CA”。结果命令是:

netsh http 添加 sslcert ipport=10.10.10.10:443 certhash=adfdffa988bb50736b8e58a54c1eac26ed005050 appid={ffc3e181-e14b-4a21-b026988bb50736b8e58a54c1eac26ed005050

(IP 地址被修改),但我收到此错误:

SSL 证书添加失败,错误:1312 指定的登录会话不存在。它可能已经被终止。

我确信该错误与 CTL 选项有关,因为如果我删除它们,它就可以工作(尽管当然没有分配 CTL)。

任何人都可以帮助我完成最后一步并完成这项工作吗?

2010 年 1 月 7 日更新: 我从未使用 IIS 7.0 解决此问题,此后将我们的应用程序迁移到 IIS 7.5,并再次尝试。根据 Taras Chuhay 的响应,我在我的测试服务器上安装了 IIS6 兼容性,并尝试了他使用 adsutil.vbs(也可以在此处找到)记录的步骤。我立即遇到了这个错误:

ErrNumber:-2147023584 尝试设置属性时出错:SslCtlIdentifier

运行此命令时:

adsutil.vbs 设置 w3svc/1/SslCtlIdentifier MyFriendlyName

然后我继续尝试记录的下一个 adsutil.vbs 命令,它失败并出现相同的错误。

我已验证我创建的 CTL 具有 MyFriendlyName 的友好名称,并且它存在于 LocalComputer 的“中间证书颁发机构\证书信任列表”存储中。

所以我又一次陷入了僵局。我不知道还能尝试什么。有没有人让 CTL 与 IIS7 或 7.5 一起工作?曾经?我是在打败一匹死马吗?除了我自己的帖子和其他类似的故事之外,谷歌什么也没有出现。

2010 年 2 月 23 日更新- 我已与 Microsoft 确认这是 IIS 7.5 的错误,但它确实适用于 IIS 7。查看此链接了解详细信息:http : //rethinker.net/Geek/Configuration/IIS7 -CTLs.htm

更新 6/08/10 - 我现在可以确认 KB981506 解决了这个问题。有一个与此 KB 相关联的修补程序,必须将其应用到 Server 2008 R2 计算机才能启用此功能。一旦安装完成,对我来说一切都完美无缺。

Tar*_*hay 1

这听起来很奇怪,但您不能使用 IIS 7.0 用户界面来创建证书信任列表 (CTL)。请按照以下步骤使用 IIS 7.0 创建 CTL。

  1. 使用 MakeCTL.exe 创建 CTL。有关 MakeCTL.exe 的详细信息,请参阅MSDN 站点上的MakeCTL页面。

    MakeCTL.exe 工具是.NET Framework SDK 版本 1.1 的一部分。安装 SDK 后,MakeCTL.exe 将出现在以下位置:

\Program Files\Microsoft.NET\SDK\v1.1\Bin

  1. 创建 CTL 后,必须运行 AdsUtil.vbs 将 CTL 标识符分配给 MakeCTL.exe 中使用的名称。

    adsutil.vbs 设置 w3svc/1/SslCtlIdentifier

    其中 是 MakeCTL.exe 中使用的 CTL 的友好名称。

  2. 运行 adsUtil.vbs 以设置 SslCtlStoreName。

adsutil.vbs 设置 w3svc/1/SslCtlStoreName CA

  1. 运行 AdsUtil.vbs 后,使用以下命令停止 Web 服务:

网络停止 HTTP /y

  1. 使用以下命令重新启动 WS3SVC 服务:

网络启动W3SVC