IIS 证书安装配置访问

转摘自http://www.cnblogs.com/chnking/archive/2008/08/18/1270063.html

 

本文给出了如何配置IIS通过SSL安全通道进行访问的方法,并在此基础上详细讨论了IIS如何设置要求对客户端提供客户端证书进行身份验证。IISSSL服务器证书申请和安装,从而配置SSL安全访问通道。客户端证书的申请和安装,IIS端如何映射客户端证书到服务器上的windows账户等等。

 

一、 测试环境配置

准备三台机器,都是windows 2003操作系统,每台机器的作用,和其上需要安装的服务和配置如下:

1、 win2003系统_1

ip192.168.1.11

机器名:win2003base1

服务器作用:这个服务器是用来安装证书服务,作为一个CA提供证书服务。

1.1.   安装IIS以承载CA证书服务

1.2.   安装证书服务,CA的公用名称设置为TestCA

在安装证书服务过程中会生成一个证书服务的证书,一个自己颁给自己的证书作为这个CA的根证书:

clip_image001

在安装了证书服务后,会把这个TestCA证书保存证书存储区的多个位置:

本地计算机存储区中的“个人”、“受信任的根证书颁发机构”、“中级证书颁发机构”,其中在“中级证书颁发机构”下的“证书”和“证书吊销列表”中都有(为什么会出现在“证书吊销列表”中?)。

当前用户存储区的“个人”。

 

2、 win2003系统_2

ip192.168.1.12

机器名:win2003base2

服务器作用:这个服务器是用来作为web server,建立一个网站,设置为SSL安全通道访问,并需要客户端证书进行访问。

2.1.   安装IIS

默认网站作为测试客户端证书访问的web站点。

 

3、 win2003系统_3

ip192.168.1.13

机器名:win2003base3

机器作用:这个机器只是作为一个单纯的IE客户端,用来申请客户端证书并使用证书访问web server

 

 

二、 配置过程

1、 win2003系统_2申请并配置IIS SSL的服务端证书

1.1.   生成证书申请文件

IIS要访问的那个网站的属性中,“目录安全性”--“服务器证书”,选新建证书:

clip_image003

下一步:

clip_image005

下一步:

clip_image007

向导使用当前 Web 站点名称作为默认名称。它不在证书中使用,但作为友好名称以助于管理员识别。下一步:

clip_image009

单位和部门,这些信息将放在证书申请中,因此应确保它的正确性。CA 将验证这些信息并将其放在证书中。浏览您的 Web 站点的用户需要查看这些信息,以便决定他们是否接受证书。下一步:

clip_image011

公用名是证书最后的最重要信息之一。它是 Web 站点的 DNS 名称(即用户在浏览您的站点时键入的名称)。如果证书名称与站点名称不匹配,当用户浏览到您的站点时,将报告证书问题。

如果您的站点在 Web 上并且被命名为 www.contoso.com,这就是您应当指定的公用名。

如果您的站点是内部站点,并且用户是通过计算机名称浏览的,请输入计算机的 NetBIOS DNS 名称。

这里因为win2003系统_2服务器的机器名是win2003base2,所以共用名称设为win2003base2

下一步:

clip_image013

下一步:

clip_image015

会要求证书申请的文件名,这是您的证书申请的 Base 64 编码表示形式。申请中包含输入到向导中的信息,还包括您的公钥和用您的私钥签名的信息。

将此申请文件发送到 CA。然后 CA 会使用证书申请中的公钥信息验证用您的私钥签名的信息。CA 也验证申请中提供的信息。

 

当您将申请提交到 CA 后,CA 将在一个文件中发回证书。然后您应当重新启动 Web 服务器证书向导。

下一步:

clip_image017

 

完成生成申请过程。

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系统_2IISWeb 站点,然后单击“属性”,单击“目录安全性”选项卡。

单击“服务器证书”启动 Web 服务器证书向导。

clip_image019

 单击“处理挂起的申请并安装证书”,然后单击“下一步”。

clip_image021

 输入包含 CA 响应的文件的路径和文件名,然后单击“下一步”。

clip_image023

检查证书概述,单击“下一步”,然后单击“完成”。

现在,已在 Web 服务器上安装了证书。

win2003base2证书就会被安装到win2003系统_2机器上,证书会被安装到证书存储区的本地计算机存储区中的“个人”。

1.5.   web站点配置为要求 SSL 访问

IIS中查看这个Web 站点的属性。 单击“目录安全性”选项卡。 单击“安全通信”下的“编辑”。 单击“要求安全通道 (SSL)”。现在客户端必须使用 HTTPS 浏览到此虚拟目录。

clip_image025

 

1.6.   测试IE使用SSL浏览

IE通过SSL浏览此网站,如下:

clip_image027

 

 

2、 win2003系统_3申请安装客户端证书ClientCert2003

win2003系统_3机器上上打开win2003系统_1机器上证书服务的URLhttp://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机器上导入这个证书到当前用户存储区的个人目录下。

clip_image029

 

3.2.   导入客户端证书的根证书

Web服务端有了客户证书,还需要这个客户端证书的根证书,只有在服务器信任这个客户端证书的根证书时客户端证书才能正常访问web服务器。

在证书管理中双击ClientCert2003证书查看此证书:

clip_image031

clip_image033

可以看到,ClientCert2003的根证书TestCA在此服务器上不被信任,需要把TestCA证书安装到此服务器的受信任的根证书颁发机构存储里。

查看此根证书:

clip_image035

点击“安装证书”按钮,出现证书导入向导,选择“将所有的证书放入下列存储”,然后点击“浏览”按钮选择证书安装的存储区:

clip_image037

选择把证书保存到“受信任的根证书颁发机构”-“本地计算机”。

TestCA证书导入成功,到证书管理中查看,发现TestCA证书其实被安装到两个地方,分别是:

证书当前用户存储区的“受信任的根证书颁发机构”

证书本地计算机存储区的“受信任的根证书颁发机构”

3.3.   设置IIS中网站的客户端证书映射

win2003系统_2机器上IIS中,查看web网站的属性,导航到“目录安全性”,首先把所有的身份验证方法都清除:

clip_image039

然后在安全通讯区域内,点击“编辑”按钮:

clip_image041

 

设置“要求客户端证书”,并选择“启用客户端证书映射”,最后点击“编辑”添加ClientCert2003客户端证书映射到的本服务器上的windows账户:

clip_image043

由于是测试,这里把ClientCert2003客户端证书映射为administrator

 

3.4.   Web网站读取客户端映射的windows账户

在测试网站中设计一个test.aspx页面,用来读取当前用户身份并显示出来,简单的下面一条语句:

当前证书映射的用户是:<% =System.Threading.Thread.CurrentPrincipal.Identity.Name %>

 

三、 测试

win2003系统_3是测试客户端,已经安装了客户端证书ClientCert2003,在win2003系统_3IE中输入test.aspxURL,首先弹出选择证书的对话框:

clip_image045

 

其中ClientCert2003_3证书是win2003系统_3在证书服务器上另外又申请了一个web浏览器证书,跟ClientCert2003是同一个根证书,当浏览器中存在跟服务端相匹配的多个证书时,浏览器会弹出上面的对话框让用户选择使用哪个证书。

如果浏览器中只有一个证书跟服务器能匹配,则浏览器不弹出选择对话框,直接把匹配的证书发送到服务端。如果把ClientCert2003_3证书从win2003系统_3机器上删除,访问test.aspx将不会再出现上面的对话框。

如果浏览器中没有证书跟服务器匹配,浏览器就会显示需要提供SSL的客户端证书。

 

选择了ClientCert2003证书,点击“确定”按钮:

clip_image047

 

服务端允许访问,并且显示了映射到的用户就是WIN2003BASE2\Administrator

 

posted @ 2009-12-17 10:32  kim zeng  阅读(1701)  评论(1编辑  收藏  举报