前面讲了这么多理论知识,其实真要操作起来还是很简单的,下面我们就利用证书来实现一个安全的Web站点,也就是当客户端在访问网站时使用https实现数据加密传输。
要实现这个功能,首先要了解一下SSL协议。
“SSL安全套接字层”是一套提供身份验证、保密性和数据完整性的加密技术,属于传输层的协议。准确点来说,SSL其实是一个位于应用层和传输层之间的协议,所以才称之为“套接字层”。
我们都知道在Web浏览器和Web服务器之间传输数据是使用HTTP协议,本来HTTP协议产生的数据是直接送给传输层的TCP协议,有了SSL这个套接字层之后,就要先送给SSL处理一下,然后再送给TCP,这也就称之为HTTPS(基于SSL的HTTP)协议。之所以要经过SSL先处理一下,其目的主要是为了能够在Web服务器和客户端之间建立一条安全通信通道,在这条安全信道中传输的数据都是经过加密的。
SSL安全信道的建立过程是:
首先客户端向服务器发出连接请求;
服务器把它的数字证书发给客户端;
客户端生成会话密钥(对称式加密),并用从服务器得到的公钥对它进行加密,然后通过网络传送给服务器;
服务器使用私钥解密得到会话密钥,这样客户端和服务器端就建立了安全通道。
在安全信道建立好之后,在客户端与服务器之间传输的数据都是采用对称式加密,以提高通信效率,而对称式加密的密钥是通过非对称式加密的方式传送的,以保证会话密钥的安全性。
Web站点启用SSL之后,客户端在访问网站时必须使用“https:\\……”的URL形式,默认使用的端口号也不再是TCP 80,而是变成了TCP 443。
为支持SSL通信,必须为Web服务器配置证书。下面是在Web服务器上申请证书并安装的过程。
1. 生成证书请求
打开之前创建的Web服务器,以域管理员身份登录。
选中服务器,然后在中间的面板中打开“服务器证书”,点击“创建证书申请”。
输入网站的相关数据,注意“通用名称”文本框中必须输入网站所用的域名,否则客户端在访问网站时,将提示证书错误。
选择证书的加密算法和密钥长度。其中的“位长”是指网站公钥的长度,位长越长,安全性越高,但性能越低。这里都采用默认值。
为证书申请指定文件名和保存路径。单击“完成”按钮,证书申请文件创建成功,该文件是一个文本文件,里面包含了所生成的证书申请编码。
2. 提交证书申请
证书申请创建完成之后,打开IE浏览器,在地址栏中输入“http://192.168.1.2/certsrv/”,注意这里必须以域管理员的身份访问证书服务器,打开证书申请页面,点击“申请证书”,然后再单击“高级证书申请”。
选择使用base64编码申请证书。
将刚才生成的证书申请文件中的内部全部复制到“保存的申请”中,将“证书模板”选择“Web服务器”,点击“提交”按钮。
企业根CA会自动颁发证书,点击“下载证书”,并将证书保存到指定的位置。
3. 安装证书
回到IIS管理器的“服务器证书”界面中,点击“完成证书申请”。
找到刚才下载的证书,并为其起一个好记的名称。
至此,Web服务器证书申请并安装成功。
4. 绑定证书并启用SSL
证书安装完成之后,下面需要将证书绑定到网站之上。
选中默认站点,点击右侧的“绑定”。在“网站绑定”对话框中点击“添加”按钮,将类型设置为“https”,端口为默认的443,SSL证书设置为刚才安装的“web”。点击“确定”按钮之后,证书就绑定好了。
然后打开“SSL设置”界面,勾选“要求SSL”:
这样,在客户机上如果用http方式访问网站,便会被拒绝:
只有使用https方式才可以正常访问网站。
当然,如果在“SSL设置”中不勾选“要求SSL”,则客户端既可以使用https也可以使用http方式访问web站点。
5. 虚拟目录启用SSL
大多数情况下,我们并不需要对整个网站都启用SSL,而是只需要对网站中的某个版块(如交易支付页面)启用SSL。这时可以只对Web站点中的某个虚拟目录启用强制SSL设置。
下面在Web站点中创建一个名为“pay”的虚拟目录,并对其设置启用强制SSL。
编辑站点首页文件Default.htm。
这样在客户端可以直接使用http方式访问网站,但是当要访问pay子目录时,就会自动启用SSL。