1.2. 安装证书服务, CA 的公用名称设置为 TestCA
1 、 win2003 系统 _2 申请并配置 IIS 的 SSL 的服务端证书
2 、 win2003 系统 _3 申请安装客户端证书 ClientCert2003
3.4. Web 网站读取客户端映射的 windows 账户
本文给出了如何配置 IIS 通过 SSL 安全通道进行访问的方法,并在此基础上详细讨论了 IIS 如何设置要求对客户端提供客户端证书进行身份验证。 IIS 端 SSL 服务器证书申请和安装,从而配置 SSL 安全访问通道。客户端证书的申请和安装, IIS 端如何映射客户端证书到服务器上的 windows 账户等等。
一、 测试环境配置
准备三台机器,都是 windows 2003 操作系统,每台机器的作用,和其上需要安装的服务和配置如下:
1、 win2003 系统 _1
ip : 192.168.1.11
机器名: win2003base1
服务器作用:这个服务器是用来安装证书服务,作为一个 CA 提供证书服务。
1.1. 安装 IIS 以承载 CA 证书服务
1.2. 安装证书服务, CA 的公用名称设置为 TestCA
在安装证书服务过程中会生成一个证书服务的证书,一个自己颁给自己的证书作为这个 CA 的根证书:
在安装了证书服务后,会把这个 TestCA 证书保存证书存储区的多个位置:
l 本地计算机存储区中的“个人”、“受信任的根证书颁发机构”、“中级证书颁发机构”,其中在“中级证书颁发机构”下的“证书”和“证书吊销列表”中都有(为什么会出现在“证书吊销列表”中?)。
l 当前用户存储区的“个人”。
2、 win2003 系统 _2
ip : 192.168.1.12
机器名: win2003base2
服务器作用:这个服务器是用来作为 web server ,建立一个网站,设置为 SSL 安全通道访问,并需要客户端证书进行访问。
2.1. 安装 IIS
默认网站作为测试客户端证书访问的 web 站点。
3、 win2003 系统 _3
ip : 192.168.1.13
机器名: win2003base3
机器作用:这个机器只是作为一个单纯的 IE 客户端,用来申请客户端证书并使用证书访问 web server 。
二、 配置过程
1、 win2003 系统 _2 申请并配置 IIS 的 SSL 的服务端证书
1.1. 生成证书申请文件
在 IIS 要访问的那个网站的属性中,“目录安全性” -- “服务器证书”,选新建证书:
下一步:
下一步:
向导使用当前 Web 站点名称作为默认名称。它不在证书中使用,但作为友好名称以助于管理员识别。下一步:
单位和部门,这些信息将放在证书申请中,因此应确保它的正确性。 CA 将验证这些信息并将其放在证书中。浏览您的 Web 站点的用户需要查看这些信息,以便决定他们是否接受证书。下一步:
公用名是证书最后的最重要信息之一。它是 Web 站点的 DNS 名称(即用户在浏览您的站点时键入的名称)。如果证书名称与站点名称不匹配,当用户浏览到您的站点时,将报告证书问题。
如果您的站点在 Web 上并且被命名为 www.contoso.com ,这就是您应当指定的公用名。
如果您的站点是内部站点,并且用户是通过计算机名称浏览的,请输入计算机的 NetBIOS 或 DNS 名称。
这里因为 win2003 系统 _2 服务器的机器名是 win2003base2 ,所以共用名称设为 win2003base2 。
下一步:
下一步:
会要求证书申请的文件名,这是您的证书申请的 Base 64 编码表示形式。申请中包含输入到向导中的信息,还包括您的公钥和用您的私钥签名的信息。
将此申请文件发送到 CA 。然后 CA 会使用证书申请中的公钥信息验证用您的私钥签名的信息。 CA 也验证申请中提供的信息。
当您将申请提交到 CA 后, CA 将在一个文件中发回证书。然后您应当重新启动 Web 服务器证书向导。
下一步:
完成生成申请过程。
1.2. 提交证书申请
证书申请现在可以发送到 CA 进行验证和处理。当您从 CA 收到证书响应以后,可以再次使用 IIS 证书向导,在 Web 服务器上继续安装证书。
使用“记事本”打开在前面的过程中生成的证书文件,将它的整个内容复制到剪贴板。
启动 Internet Explorer ,导航到 http://192.168.1.11/certsrv ,指向 win2003 系统 _1 的证书服务。
单击“申请一个证书”,然后单击“下一步”。
在“选择申请类型”页中,单击“高级申请”,然后单击“下一步”。
在“高级证书申请”页中,单击“使用 Base64 编码的 PKCS#10 文件提交证书申请”,然后单击“下一步”。
在“提交一个保存的申请”页中,单击“ Base64 编码的证书申请( PKCS #10 或 #7 )”文本框,按住 CTRL+V ,粘贴先前复制到剪贴板上的证书申请。
单击“提交”。
1.3. 颁发证书
提交申请后,在 win2003 系统 _1 机器上证书颁发机构中批准颁发这个 win2003base2 证书。
确认该证书显示在“颁发的证书”文件夹中,然后双击查看它。
在“详细信息”选项卡中,单击“复制到文件”,将证书保存为 Base-64 编码的 X.509 证书。
关闭证书的属性窗口。
1.4. 上安装证书
在 win2003 系统 _2 在 IIS 的 Web 站点,然后单击“属性”,单击“目录安全性”选项卡。
单击“服务器证书”启动 Web 服务器证书向导。
单击“处理挂起的申请并安装证书”,然后单击“下一步”。
输入包含 CA 响应的文件的路径和文件名,然后单击“下一步”。
检查证书概述,单击“下一步”,然后单击“完成”。
现在,已在 Web 服务器上安装了证书。
win2003base2 证书就会被安装到 win2003 系统 _2 机器上,证书会被安装到证书存储区的本地计算机存储区中的“个人”。
1.5. 将 web 站点配置为要求 SSL 访问
在 IIS 中查看这个 Web 站点的属性。 单击“目录安全性”选项卡。 单击“安全通信”下的“编辑”。 单击“要求安全通道 (SSL) ”。现在客户端必须使用 HTTPS 浏览到此虚拟目录。
1.6. 测试 IE 使用 SSL 浏览
用 IE 通过 SSL 浏览此网站,如下:
2、 win2003 系统 _3 申请安装客户端证书 ClientCert2003
在 win2003 系统 _3 机器上上打开 win2003 系统 _1 机器上证书服务的 URL : http://192.168.1.11/certsrv ,提交一个 “ Web 浏览器证书”,姓名为“ ClientCert2003 ”。
提交申请后,在 win2003 系统 _1 机器上证书颁发机构中批准颁发这个 ClientCert2003 证书。
在 win2003 系统 _3 机器上“查看挂起的证书申请的状态”,会看到整个证书申请已被批准,并能够被安装。
点击安装证书,同样在安装过程中会提示是否安装 ClientCert2003 证书的根证书 TestCA ,选择安装。
安装好证书后, ClientCert2003 证书就会被安装到 win2003 系统 _3 机器上,证书会被安装到证书存储区的当前用户存储区中的“个人”。
同时, ClientCert2003 证书的根证书 TestCA 也被安装,被安装到了当前用户存储区中的 “受信任的根证书颁发机构”。
3、 在 win2003 系统 _2 上设置客户证书映射
3.1. Web 服务器上导入客户端证书
在 IIS 中要映射客户端的证书到 windows 账户,必须在 IIS 所在的服务器上用这个客户端的 cer 证书。
在 win2003 系统 _1 机器上证书颁发机构中导出客户端申请后已经颁发的 ClientCert2003 证书,导出为 ClientCert2003.cer
在 win2003 系统 _2 机器上导入这个证书到当前用户存储区的个人目录下。
3.2. 导入客户端证书的根证书
Web 服务端有了客户证书,还需要这个客户端证书的根证书,只有在服务器信任这个客户端证书的根证书时客户端证书才能正常访问 web 服务器。
在证书管理中双击 ClientCert2003 证书查看此证书:
可以看到, ClientCert2003 的根证书 TestCA 在此服务器上不被信任,需要把 TestCA 证书安装到此服务器的受信任的根证书颁发机构存储里。
查看此根证书:
点击“安装证书”按钮,出现证书导入向导,选择“将所有的证书放入下列存储”,然后点击“浏览”按钮选择证书安装的存储区:
选择把证书保存到“受信任的根证书颁发机构” - “本地计算机”。
TestCA 证书导入成功,到证书管理中查看,发现 TestCA 证书其实被安装到两个地方,分别是:
l 证书当前用户存储区的“受信任的根证书颁发机构”
l 证书本地计算机存储区的“受信任的根证书颁发机构”
3.3. 设置 IIS 中网站的客户端证书映射
在 win2003 系统 _2 机器上 IIS 中,查看 web 网站的属性,导航到“目录安全性”,首先把所有的身份验证方法都清除:
然后在安全通讯区域内,点击“编辑”按钮:
设置“要求客户端证书”,并选择“启用客户端证书映射”,最后点击“编辑”添加 ClientCert2003 客户端证书映射到的本服务器上的 windows 账户:
由于是测试,这里把 ClientCert2003 客户端证书映射为 administrator
3.4. Web 网站读取客户端映射的 windows 账户
在测试网站中设计一个 test.aspx 页面,用来读取当前用户身份并显示出来,简单的下面一条语句:
当前证书映射的用户是: <% =System.Threading.Thread.CurrentPrincipal.Identity.Name %>
三、 测试
win2003 系统 _3 是测试客户端,已经安装了客户端证书 ClientCert2003 ,在 win2003 系统 _3 的 IE 中输入 test.aspx 的 URL ,首先弹出选择证书的对话框:
其中 ClientCert2003_3 证书是 win2003 系统 _3 在证书服务器上另外又申请了一个 web 浏览器证书,跟 ClientCert2003 是同一个根证书,当浏览器中存在跟服务端相匹配的多个证书时,浏览器会弹出上面的对话框让用户选择使用哪个证书。
如果浏览器中只有一个证书跟服务器能匹配,则浏览器不弹出选择对话框,直接把匹配的证书发送到服务端。如果把 ClientCert2003_3 证书从 win2003 系统 _3 机器上删除,访问 test.aspx 将不会再出现上面的对话框。
如果浏览器中没有证书跟服务器匹配,浏览器就会显示需要提供 SSL 的客户端证书。
选择了 ClientCert2003 证书,点击“确定”按钮:
服务端允许访问,并且显示了映射到的用户就是 WIN2003BASE2/Administrator