现今SSL安全协议广泛地用在Internet和Intranet的服务器产品和客户端产品中,用于安全地传送数据,集中到每个WEB服务器和浏览器中,从而来保证来用户都可以与Web站点安全交流 。本文将详细介绍SSL安全协议及在WEB服务器安全的应用。
将SSL设备集成到网络中很简单,第4层到第7层
交换机或负载均衡设备被配置为将所有的443端口(Https)请求改向传送到SSL设备。这时,这台设备承担所有的SSL处理任务,因而立即解脱了Web服务器的负载。随着安全传输流容量的增加,在不增加不必要的管理负担的条件下,可以再部署其他SSL设备。
最近,SSL加速器功能已经被集成到象服务器端缓存(即所谓的"服务器加速器")这类Web内容提交产品中了。这种作法的主要好处是,服务器加速器进行SSL处理和对象提交。
配置SSL功能的服务器加速器使广泛地将SSL用于Web基础设施上的安全内容交换成为可能,安全网页将快速地得到提交,安全交易也将迅速地完成。
三、如何实现WEB和Internet安全
我们在安装好Certificate Server后,给自己的Web Server发一张证书,安全站点已经建立起来了,在IIS管理器中打开安全通道(先不要接受客户证书验证,如果没有浏览器证书的话),把http改为https后访问的站点,怎么系统提示服务器证书有问题?记得在浏览器中安装的根证书了?要不就是服务器证书过期了,如果没有在浏览器中安装根证书,就要安装它,同时其他人通过Internet访问站点如果没有安装根证书,需要将根证书放在网上让别人下载。用IE安装根证书很简单,浏览器提示用户打开或保存时选择打开,会看到根证书信息然后按安装证书就可以了。但可能会发现Netscap无法安装根证书,SSL协议是由Netscape首先提出并实现的,Netscape使用MIME类型application/x-x509-ca-cert来表示CA证书,IE3.1以后开始支持SSL,起初Windows系统的数字证书文件(.crt和.cer)也采用相同的MIME类型,IE5.0以后MIME类型被改为application/pkix-cert这就造成Netscape安装根证书困难。不过这个问题好解决,只要在IIS里新注册application/x-x509-ca-cert的MIME类型就可以了。刚发的证书浏览器有时也会显示证书过期,这是因为浏览器判断证书有效是从证书有效起始时间的后一天开始,此外数字证书中的日期大都是GMT时间而不是本地时间,所以通常将本机时间向后调整一天这个问题就能解决,所以证书过期不仅仅可能表示太晚也可能表示太早。
一切都已经就绪,进入安全网页了,在IE的状态栏里应该有一个小锁,双击这个小锁能看到站点证书信息,同时也能看到整个证书链。现在也许会问"那么现在我怎么用SSL加密我的数据呢?",实际上现在浏览器和Web服务器之间交换的所有信息都已经被加密,SSL是工作在网络层与会话层之间的协议,它在TCP/IP和HTTP之间增加了一个加密层,所以对于工作在HTTP协议以上的用户而言,加密是完全透明的,所以请忘记"用SSL加密"这句话,除非直接在Socket上开发,比如写个网络蚂蚁之类的。
现在想用SSL实现更多的东西,不仅仅是加密。是申请浏览器(客户)证书的时候了,申请客户证书过程也不复杂,除了相同的名称,国家之类的还多一个EMail地址,如果用IE申请证书可能会有许多选项,其中有两个比较有意义,"允许私钥被导出"对与不在固定机器上上网的人比较有用,如果在一台机器上申请了证书,导出证书和私钥并安装到其他机器上就可以在其他机器上使用了。"用户保护"会让浏览器在使用的私钥时提示,这通常发生在加密和签名过程之前。证书安装过程通常都是自动的,安装完成后可以欣赏一下,在IE中打开Internet选项,选择内容一栏,按"证书"按钮",在个人一栏内应该有客户证书。
现在在IIS管理器中设置站点要求客户证书,然后访问站点,浏览器会弹出一个对话框,让选择要使用的客户证书,然后就进去了,也没什么不同。那么怎么样利用SSL实现身份认证呢?首先可以在IIS管理器中启用客户证书映射,将客户证书影射到NT帐号,可以映射某张证书,也可以映射所有根证书所签发的客户证书,如果在签发者列表中找不到根证书,需要运行SSLCA.exe(IIS4.0以上),以后的事就属于NT管理员的范畴了。如果不想用NT的安全机制,就需要获取对方客户证书的信息,然后进行判断。通常客户证书的信息由HTTPS_开头的服务器变量提供,如Apache Server,Domino等,可以查看文档或者写一个小的CGI程序列出所有的服务器变量。如果是IIS就更简单了:
用 Request.ClientCertificate( Key[SubField] )可以访问想要的内容:
如可显示客户证书的国家代码。具体参数请在MSDN搜索ClientCertificate。