上一节中,我们讨论过有关CA作用及安装,本节我会通过给一个web站点设置SSL加密访问,来加深对CA的理解。
通过阅读本文,你将了解到以下内容
◆如何通俗化理解SSL
◆演示2种为web网页申请安全证书的方法
◆通过实例理解Common Name名称的作用
◆讨论为什么访问证书服务器时需要输入用户名和密码
本文导读目录
一、如何理解SSL
二、为Web站点申请CA证书并测试SSL(两种方法)
1、第一种方法
1)建立测试站点
2)通过Web网页申请网站证书。
第一步,申请请求文件。
第二步,提交请求文件。
第三步,导入web证书。
第四步,测试SSL网站。
2、第二种方法
第一步,移除当前SSL证书。
第二步,建立测试站点。
第三步,通过IIS申请证书。
第四步,测试SSL网站。
三、小插曲:讨论访问证书服务器时为何需要输入用户和密码?
一、如何理解 SSL
按照惯例,从基础概念上介绍一下SSL,即Secure Socket Layer 安全套接层。最初是由Netscape开发的一种国际标准的加密及身份认证通信协议,它的作用是访问端和被访问端,或应用端和服务器端之间建立一条相对独立的、安全的通道,并利用自身的数学加密算法对来往的信息进行严格加密,从而保证数据在此通道内传输时拥有足够的安全性。
那,有朋友可能会想到https,这又是什么呢?几句话,保证让你明白它和ssl之间的关系,https也出自Netscape,简单讲它是HTTP协议的安全版本,即是在http的基础上加入了ssl层,https的安全基础就是SSL,也就是说单有https协议,没有ssl的辅助是无法实现加密的!
网络上,https和ssl随处可见。当访问一些银行网站,尤其是需要你输入一些私密信息比如帐号、密码的时候,请注意观察浏览器地址栏的两头,最左边和最右边,一定会看到https和ssl的身影。以招商银行为例,我们进入招行主页 [url]http://www.cmbchina.com/[/url] 点击右下方的【个人银行大众版】,即[url]https://pbsz.ebank.cmbchina.com/CmbBank_GenShell/UI/GenShellPC/Login/Login.aspx[/url]
我们可以看到这样的一个界面:
请注意上图的2个红色框框,左侧的HTTPS开头的地址表明此时网页传输协议用的就是HTTPS安全协议,右侧的是那把黄色的小锁表明已经启用了SSL链接。
我们单击一下那个小锁,会看得更清楚些,如图:
参照本系列的第一节讲到的相关知识,我们知道这个证书的颁发者: VeriSign Class 3 Extended Validation SSL SGC CA
其实不仅仅含有颁发者的信息,我们来稍微分析一下吧:
VerSign,美国的一家很著名提供智能信息基础设施服务的服务商。
Class 3 Extended Validation,即为第三代扩展验证
SGC SSL :SGC即Server Gated Cryptography,是在现有的SSL标准基础上增加的一种增强密钥用法(EKU)。
OK,我们今天实验的目的就是想实现类似的功能
1、使用https协议来访问我们的测试站点
2、出现如上图的小锁图标,并可以查看证书信息。
二、为Web站点申请CA证书并测试SSL(两种方法)
第一种方法:
基础工作
1、已安装IIS组件 (此文还在编辑中,稍后放出)
2、已安装CA组件(请参考SSL应用系列之一:CA证书颁发机构(中心)安装图文详解)
1) 建立测试站点
1、我在F盘上建了一个testweb文件夹,里面有一个临时站点,目录为Errpage。
里面有2个文件,这就是我们今天要测试的网页。
OK,下面我们到IIS里将这个站点应用起来。(具体过程非本节重点,故在此省略)
经过一些简单的设置后,我们可以在IIS中顺利浏览测试页面。
本机的IP为10.0.0.252,下面是在IE7里的访问页面,大家可以看到此时并没有https及安全锁标记。
为测试网站申请证书,也就是为我们的IIS Web服务器申请一个CA证书。我们有两种办法来完成证书的申请,我们来一一演示。
2) 通过Web网页申请网站证书。
第一步,申请请求文件。
使用这种办法申请证书,那么首先需要为指定的站点申请一份请求证书文件,打开IIS,找到特定的站点,我们这里是testweb,
在这个站点上右击,选择【属性】,再选择【目录安全性】选项卡
点击红色方框处的【服务器证书】,然后【Next】
上图中的设置一般我们不作修改,默认即可。点击【Next】继续
红框的内容可以自己填写,此处无关紧要,点击【Next】继续
这里的Common name是一个很重要的地方,默认是本机的计算机名,这里填写的内容将直接影响后续的访问过程,如果你的网站要在外部访问,那么一定要写上外网的访问地址,比如
[url]www.mypage.com[/url]
这样的地址,当然不一定非要用www开头,只要是输入的地址已经做好的相应的解析记录就行,比如web.mypage.com,其中,mypage.com是你申请的外网域名。我们这里暂且用计算机名代替,后面还会说到这个问题。 点击【Next】继续
红框的内容可以自己填写,此处无关紧要,点击【Next】继续
certreq.txt就是针对这个站点生成的请求文件,为什么说是针对这个站点呢?还记得输入common name的那一步吗?我们输入的common name已经包含在请求文件里,稍后会用到这个文件来制作证书。默认存放在C盘根目录下,我们也可以手工指定。点击【Next】继续
查看证书的基本信息,如果确认无误,点击【Next】继续
OK,至此,证书的请求文件制作完毕。
第二步,提交请求文件。
在C盘目录下,找到刚才生成的请求文件下certreq.txt,如下图
这是经过加密后的文件,不用理会里面的内容,也用不着理会,ctrl+A全选并复制。然后打开证书的web申请页面,由于CA也装在10.0.0.252这台服务器上,为了方便访问,我在本地网卡上添加了另一个IP地址 10.0.0.253来作为证书服务的访问地址,直接在浏览器里输入10.0.0.253/certsrv来访问CA证书Web申请页面:
此时弹出一个提示框,让我们输入用户和密码,这里我们输入本机帐户信息
确定后,就可以看到证书申请页面了
如上图所示,选择第一个Request a certificate
如上图所示,选择advanced certificate request
因为我们已经有了一份证书请求文件,所以选择第二项,
请注意两个地方:
1、第一个红框需要填入的内容就是我们刚才复制的那一长串字符;在下方有一个Browse for a file to insert,也可以点击直接导入certreq.txt的文件,这2种方法都可以。
2、最下方,有一个证书模板,我们需要选择Web Server 类型。
操作完毕后,点击右下角的Submit完成提交。
当出现上面图示时,表明证书申请完毕,这里有2两种编码格式可供选择,一般选择Base 64 encoded。
下面有两个链接,一个是申请到的证书文件,另一个是证书链。
有个概念,什么是证书链? 其实,证书链里面包含2个文件,一个是当前的证书,一个是CA的根证书。
现在我们只需要证书文件,所以点击Download certificate后,出现如下提示:
点击save,任选一个位置保存下来,这个文件就是我们为testweb站点申请的证书。
OK,至此,Web证书制作完毕。
第三步,导入Web证书。
打开testweb站点的属性,找到【目录安全性】,如下图:
我们这里选择第一个选项,意思是处理一个挂起的请求并安装证书。
此时需要把我们刚才保存好的证书文件导入进去,点击Browse进行浏览。点击【Next】继续
上图中的443就是SSL默认的端口,我们不建议修改,默认即可。点击【Next】继续
这个是一个概览信息,若无误,点击【Next】继续
OK,至此,Web证书导入完毕。
第四步,测试SSL网站。
在测试SSL之前,我们还需要设置一个地方。依然找到【目录安全性】,如下图选择,并更改相应设置
这样设置是为了开启此站点的SSL功能,否则SSL也不会正式生效。
OK,一切就绪。我们开始测试SSL站点是否成功。
我们先按照之前的习惯来访问一下,如下图:
请注意上面2个标记红框的地方,很明显,如果依然使用http协议访问,就会失败,并出现提示,告诉我们需要使用https进行访问。
OK,我们输入 [url]https://10.0.0.252[/url]来试一下
我已经改成了https访问,此时弹出一个对话框,第一个叹号说明证书本地并不信任这个证书的CA,如果想让我的计算机信任此证书,就需要把ca01上的根证书导入到本机的受信任的证书颁发机构中才可以。
这个是我做了此操作后的效果,第一个叹号已经没有了。
下面我们重点说一下第二个叹号。为什么是这个提示?
大家是否还记得,我们在申请证书请求文件的时候填入的common name 是什么吗?
对了,是 DC01,而且我也说过,我们访问地址里的名称一定要和common name 一致。请仔细观察下面两张图,看有什么异同:
请大家仔细观察2张图内标记红色框的地方。
解释:下面的那张图的访问地址和之前的都不一样,使用的是dc01,而这个名称正好和common name 一致,所以就不会弹出证书提示框,也就是说此时,安全证书的名称和站点名称相匹配,所以会直接进入页面。在地址栏的右侧也可以看到一个黄色的小锁。
OK,至此第一种申请网站证书的办法已经演示完毕,并做了测试。
------------------------------------------------------------------------------------------------------
第二种方法:
1) 移除当前网站证书。
我们来讨论一下申请证书的第二种方法,为了避免干扰。我们先把刚才做得证书移除掉。
依然找到【目录安全性】,点击【服务器证书】,【Next】后,进入以下画面:
选择,移除当前的证书,点击【Next】
如果确认,点击【Next】,即可完成证书移除。
此时,再通过 [url]https://10.0.0.252/[/url]这个地址将无法网站。
2) 建立测试站点。
方便起见,亦然用之前站点作为测试对象,所以此步骤省略,同上。
3) 通过IIS申请证书
依然找到【目录安全性】,点击【服务器证书】,【Next】后,进入以下画面:
与第一种方法不同,我们这里选择第二个,即发送请求到一个在线CA
Common Name ,这个地方我们依然默认为dc01
4) 测试SSL网站
我们还需要做一下简单设置,如下图:
至此,第二种申请网站证书的办法描述完毕,测试的细节和要点和第一种方式一样,这里就不再细说了。
三、小插曲:讨论访问证书服务器时为何需要输入用户和密码?
大家可以发现,这时会弹出一个对话框,让你输入用户和密码,其实也就是本机管理员的帐户和密码,输入正确即可访问。
细心的朋友可能要问了,为什么这里会出现这个提示让我们输入验证信息呢?是的,简单回答,就是为了保证CA服务器的安全性,那我们是否可以去掉呢??答案是,完全可以。其实,这里面有一个知识点,请大家注意certsrv这个目录,如图:
就是这个目录,我们看一下它的属性,关键是【目录安全】这个选项卡。
我们可以看到蓝色选项卡里有一个勾,并未选中,如果选中后,我们再此访问10.0.0.253/certsrv的时候就可以直接访问,而无需输入任何身份信息。为什么呢?
因为IUSR_DC01是在IIS安装完成后自动建立的一个特殊的用户,默认情况下,当我们访问IIS下的某一站点时候,IIS在处理访问请求的时候都是通过IUSR_DC01这个用户来进行验证并返回结果的。而在创建CA的时候默认这个勾就被取消,所以我们访问的时候就会出现输入用户信息的提示。
只要把勾打上,以后再访问就不会有什么提示了。但建议大家还是不要去更改默认设置,安全还是要放在首位的。