在Windows Server 2008的IIS7中,没有直接提供像IIS6中客户端证书的CTL证书信任列表配置,需要安装CTL热修复补丁程序,然后再使用netsh命令配置网站SSL证书和CTL证书信任列表。(参见http://social.technet.microsoft.com/wiki/contents/articles/1896.how-to-create-a-certificate-trust-list-in-w2k8-r2-for-use-with-unified-access-gateway.aspx)
1)使用MakeCTL.exe创建个CTL证书信任列表
MakeCTL.exe在VS2005安装目录Microsoft Visual Studio 8\Common7\Tools\Bin下有,可以拷出来直接运行,在Windows 2008中必须要以管理员身份来运行,进入证书信任列表向导界面,输入CTL名称,并添加条1.3.6.1.4.1.311.10.1的用户定义证书目的,如下图所示。
2)保存证书信任列表CTL
在证书信任列表向导中添加需要信任的根证书后,选择证书存储浏览,显示物理存储区,选择中级证书颁发机构\本地计算机,保存。成功后在mmc的证书控制台的中级证书颁发机构\证书信任列表就可以看到刚开始添加的CTL,如下图所示。
3)配置网站的SSL证书和CTL证书信任列表
这里需要使用命令行下进行配置,先删除原有网站SSL证书,然后再一起配置SSL证书和CTL证书信任列表,命令如下:
--查看指定IP端口号的网站SSL证书配置
netsh http show sslcert ipport=192.168.1.253:443
--删除指定IP端口号的网站SSL证书配置
netsh http delete sslcert ipport=192.168.1.253:443
--设置指定IP端口号的网站SSL证书、CTL证书信任列表
netsh http add sslcert ipport=192.168.1.253:443 certhash=5a13b67ca8a9c1cd04ebb4b34f46af183c8abe9c appid={4dc3e181-e14b-4a21-b022-59fc669b0914} sslctlidentifier=ECECA sslctlstorename=CA
执行命令完成后,再查看网站SSL证书配置可以看到SSL证书绑定的CTL,如下:
上述证书信任列表CTL配置完成后,服务器端就会自动验证客户端证书是否在CTL证书信任列表内,启用证书信任列表验证,不在CTL内的证书会返回403客户证书不受信任错误。