随着Windows Server 2003操作系统的推出,Windows平台的安全性和易用性大大增强,然而,在默认情况下,IIS使用HTTP协议以明文形式传输数据,没有采取任何加密措施,用户的重要数据很容易被窃取,如何才能保护局域网中的这些重要数据呢?下面笔者就介绍一下如何使用SSL增强IIS服务器的通信安全。
一、什么是SSL
SSL(Security Socket Layer)全称是加密套接字协议层,它位于HTTP协议层和TCP协议层之间,用于建立用户与服务器之间的加密通信,确保所传递信息的安全性,同时SSL安全机制是依靠数字证书来实现的。
SSL基于公用密钥和私人密钥,用户使用公用密钥来加密数据,但解密数据必须使用相应的私人密钥。使用SSL安全机制的通信过程如下:用户与IIS服务器建立连接后,服务器会把数字证书与公用密钥发送给用户,用户端生成会话密钥,并用公共密钥对会话密钥进行加密,然后传递给服务器,服务器端用私人密钥进行解密,这样,用户端和服务器端就建立了一条安全通道,只有SSL允许的用户才能与IIS服务器进行通信。
提示:SSL网站不同于一般的Web站点,它使用的是“HTTPS”协议,而不是普通的“HTTP”协议。因此它的URL(统一资源定位器)格式为“
https://网站域名”。
二、安装证书服务
要想使用SSL安全机制功能,首先必须为Windows Server 2003系统安装证书服务。
进入“控制面板”,运行“添加或删除程序”,接着进入“Windows组件向导”对话框,勾选“证书服务”选项,点击“下一步”按钮,接着选择CA类型。这里选择“独立根CA”,点击“下一步”按钮,为自己的CA服务器取个名字,设置证书的有效期限,最后指定证书数据库和证书数据库日志的位置,就可完成证书服务的安装。
三、配置SSL网站
1.创建请求证书文件
完成了证书服务的安装后,就可以为要使用SSL安全机制的网站创建请求证书文件。点击“控制面板→管理工具”,运行“Internet 信息服务-IIS 管理器”,在管理器窗口中展开“网站”目录,右键点击要使用SSL的网站,选择“属性”选项,在网站属性对话框中切换到“目录安全性”标签页(图1),然后点击“服务器证书”按钮。在“IIS证书向导”对话框中选择“新建证书”,点击“下一步”按钮,选择“现在准备证书请求,但稍后发送”。在“名称”输入框中为该证书取名,然后在“位长”下拉列表中选择密钥的位长。接着设置证书的单位、部门、站点公用名称和地理信息,最后指定请求证书文件的保存位置。这样就完成了请求证书文件的创建。
2.申请服务器证书
完成上述设置后,还要把创建的请求证书文件提交给证书服务器。在服务器端的IE浏览器地址栏中输入“
http://localhost/CertSrv/default.asp”。在“Microsoft 证书服务”欢迎窗口中点击“申请一个证书”链接,接下来在证书申请类型中点击“高级证书申请”链接,然后在高级证书申请窗口中点击“使用BASE64编码的CMC或PKCS#10....”链接,再打开刚刚生成的“certreq.txt”文件,将其中的内容复制到“保存的申请”输入框后点击“提交”按钮即可。
3.颁发服务器证书
点击“控制面板→管理工具”,运行“证书颁发机构”。在主窗口中展开树状目录,点击“挂起的申请”项(图2),找到刚才申请的证书,然后右键点击该项,选择“所有任务→颁发”。颁发成功后,点击树状目录中的“颁发的证书”项,双击刚才颁发的证书,在弹出的“证书”对话框的“详细信息”标签页中,点击“复制到文件”按钮,弹出证书导出向导,连续点击“下一步”按钮,并在“要导出的文件”对话框中指定文件名,最后点击“完成”。
4.安装服务器证书
重新进入IIS管理器的“目录安全性”标签页,点击“服务器证书”按钮,弹出“挂起的证书请求”对话框,选择“处理挂起的请求并安装证书”选项,点击“下一步”按钮,指定刚才导出的服务器证书文件的位置,接着设置SSL端口,使用默认的“443”即可,最后点击“完成”按钮。
在“目录安全性”标签页,点击安全通信栏的“编辑”按钮,勾选“要求安全通道(SSL)”选项,最后点击“确定”按钮即可启用SSL。
在完成了对SSL网站的配置后,用户只要在IE浏览器中输入“
https://网站域名”就能访问该网站
一,服务器上装有CA(Certificate Server)
1,服务器上安装CA
Win2000中带有CA的安装程序。单击Start,Control Pannel Add/Remove Programs兵单击Add/Remove Windows Compenents。当Windows Component Wizard出现时,选择证书服务(Certificate Services)。下一步中,安装需要指出服务器授权的类型,一般作为一个独立的Web服务器,选择Stand-alone root CA。然后,需要指定共享文件夹,这作为证书服务的配置数据存储位置,单击Next,安装完毕。
注意:自己建立CA 机构时,所给CA机构起的名是自己定义的,在客户端的IE中,在一开始并不属于客户端信任的根证书颁发机构,如果,客户端没有把该CA机构加为自己所信任的根证书颁发机构,那么在客户端访问该服务器上的网站时,会出现安全警告信息。
2,建立并安装一个站点证书
步骤如下:
A, 打开IIS,选定要安装证书的站点,单击右键,选择弹出菜单中的properties,在弹出的对话框中,单击directory security属性页,单击Server Certificate按钮,出现IIS Certificate Wizard对话框,这一步的操作,所完成的功能是生成一个向CA申请数字证书的密钥文件,文件以.txt的格式存于本机目录下。
B, 通过Certificate Server Enrollment的页面访问注册控件和它的表格:
在安装了Certificate Service的机器上可以从位于
http://localhost/certsrv 的Certificate Server Administration Tools Web页面可以访问该注册控件。选择request a certificate 选项,在下一页面中选择advance request,这里需要注意的是,如果是给网站申请数字证书时必须选择该项,因为赋予网站的数字证书需要使用a步骤中所产生的特定的密钥文件,这样才能生成属于该网站的唯一的数字证书。而一般User certificate request 是针对需要访问该网站的客户设计的,分别有web browser certificate 和E-Mail Protection certificate 两种方式。客户采用web browser certificate方式申请对有SSL保护的网站的访问,而E-Mail Protection certificate是保护客户收发email时的信息传送。接下去页面的Advanced Certificate Requests 中我们选择Submit a certificate request using a base64 encoded PKCS #10 file or a renewal request using a base64 encoded PKCS #7 file。因为这种格式和在a步骤中所产生的密钥文件的加密格式一致。然后,可以通过browse把存在本机上的.txt密钥文件上载至网页上,递出申请。在最后的界面中,会被告知请求已经被接到并正在等待证书授权机构的批准。
C, 微软的Certificate Service可以使用MMC来管理:
服务器提出的要求数字验证的请求传递到CA机构中,打开Start/Program/Administrative tools/Certification Authority后,可以看到pending request文件夹,这个文件夹包含了所有等待root授权机构批准的证书请求。如果CA认证机构觉得该网站的申请可行,则单击右键选择issue,这样,该文件就被移到了issued Certificates,表示申请成功,这个节点包含了所有被证书服务的管理员批准并被发布的证书。反之如果CA机构觉得该申请不可行,则选择Deny,该文件被转移到Failed request,表示申请失败,这个节点包含了所有被拒绝的证书请求。对申请成功并发布的数字证书而言,如果CA机构想取消该证书,可以单击右键选择revoke,则已申请成功的数字证书被移到revoke certificates文件夹内,这个节点包含了所有被发布但是又被撤销的证书。
D, 提交数字验证的网站在等待一定时间后,依然可以通过
http://localhost/certsrv来查看自己所申请的数字验证的进行情况。选择Check On A Pending Certificate选项并单击Next 按钮继续。从选项框中选择候选的请求,单击Next按钮继续。为下载该文件选择Base64 encoding并单击Download CA Certificate链接以开始下载过程。这样就从证书授权机构接到了服务器证书文件。打开IIS,选定已经得到数字验证的网站,单击右键后选择properties,在属性页directory security中,单击Server Certificate 按钮以启动Web服务证书向导,选择Process A Pending Request and Install Certificate选项。选择上一步骤中download下来的数字证书(即.cer文件)的存放路径,开始安装。安装成功后,directory security属性页中的view certificate和edit按钮由disable变为enable。整个网站的数字验证过程完毕。
3,关于certificate的属性设置
点击directory security属性页的edit按钮,可以进行网站数字验证属性的设置。首先,如果选择了require secure channel(SSL)复选框,则http的形式将无法访问该站点,只有采用https的方式进行访问。如果不选择该项的话,则http和https两种方式并存,都可以进行对此网站的访问。如果选择了该项,则又有三种方式可供选择,分别是ignore client certificate,accept client certificate 以及require client certificate。Ignore client certificate表示不接受客户证书(默认):如果客户浏览器安装了客户证书,会返回一个Access Denied消息。Accept client certificate表示接受证书:不管客户是否安装了客户证书对服务器没有区别,访问在两种情况下都是允许的。Ignore client certificate表示需要客户证书:除非客户有一个被root CA(这里是证书服务器)授予的合法证书,否则访问被拒绝。客户要访问网站,必须得先从服务器得到数字验证,也即,客户端必须首先向要访问的网站提出要求数字验证的申请,在得到服务器端发回的用于两者间信息交互的数字证书后,才可以对该网站进行访问,否则,网站将拒绝该客户的访问。
不同的网站可以针对这三个属性进行不同的设置。
4,客户端SSL的配置
在浏览器和Web站点之间开始SSL通信之前,客户端必须能够认出服务器的证书是合法的。要做到这一点,客户端必须和服务器的证书授权机构取得联系,在这种情况下是本地的证书服务器。如果没能实现前面的步骤,直接连到SSL站点,会首先接到安全警告信息。客户浏览器需要在浏览器的Trusted Root Store中安装证书。要安装证书,在安全警告对话框出现时,单击View Certificate按钮,就会出现一个对话框,该对话框中包含了证书的信息。单击Install Certificate 按钮以启动证书导入向导。
对客户而言,SSL的配置就相对比较简单,客户可以选择申请数字证书,也可以不用,只是,如果客户所访问的某个网站设定了require client certificate属性,则客户必须在得到了该网站的数字验证后,才能对此进行访问,换言之,客户想得到访问权,就必须先向网站提出申请。
客户通过访问
http://servername/certsrv来申请数字验证,它的操作过程和网站申请数字验证基本雷同,只是它不是选择Advance request这一项,而是使用User certificate request 下的web browser certificate选项,只要填写客户的一些相应信息后,就能递出申请,而当CA机构认证后,也是从网上直接下载相对应的数字证书至本机。这样,每当访问该网站,当弹出要求客户端数字验证的消息框后,客户选择已经下载过的数字证书,就可以进行对网站的访问了。
注意事项:如果网站的端口号不是默认的80,而是自己定义的话,则相应的也要给SSL Port 设定一个端口号,以示区别,而访问http和https时,所输入的端口号是不一致的。如果网站使用默认的80端口,则SSL也不需要配置特定的端口号,它的默认端口号为443。
二,服务器和装有CA(Certificate Server)的计算机独立
网站申请数字证书的过程和前面部分一样。只是,上一部分的操作因为CA和服务器设在同一台机器上,所以,访问本机的
http://localhost/certsrv就可以了,而这一部分,因为CA和服务器的计算机独立,所以,申请的时候也和客户端一样,远程访问
http://CAname/certsrv ,其中的具体操作和上一部分一样。只是,在这种情况下,该网站如果设置了require client certificate,则客户就很难访问该网站了,因为客户端无法向该网站发出要求数字验证的申请。一般而言,最好采用accept client certificate。
转载于:https://www.cnblogs.com/tonyboy/archive/2008/07/25/1251074.html