用SSL安全协议实现WEB服务器的安全性
现今SSL安全协议广泛地用在Internet和Intranet的服务器产品和客户端产品中,用于安全地传送数据,集中到每个WEB服务器和浏览器中,从而来保证来用户都可以与Web站点安全交流 。本文将详细介绍SSL安全协议及在WEB服务器安全的应用。
一、SSL安全协议在WEB服务器中的应用
1、我们为提供具有真正安全连接的高速安全套接层SSL)交易,可以将PCI卡形式的SSL卸载(offloading)设备直接安装到Web服务器上,这种做法的好处是:
(1)从客户机到安全Web服务器的数据安全性;
(2)由于卸载工具执行所有SSL处理过程并完成TCP/IP协商,因此大大提高了吞吐量;
(3)简化了密钥的管理和维护。
安全性加大在实现向电子商务和其它安全Web站点的服务器增加SSL加速和卸载设备的结果是提高了交易处理速度。但是由于设备是作为应用被安装在网络上的,因此设备与安全服务器之间的数据是未加密的。将SSL卸载设备作为PCI扩展卡直接安装在安全服务器上,保证了从浏览器到服务器的连接安全性。
SSL可以用于在线交易时保护象信用卡号以及股票交易明细这类敏感信息。受SSL保护的网页具有"https"前缀,而非标准的"http"前缀。
2、新型专用网络设备SSL加速器可以使Web站点通过在优化的硬件和软件中进行所有的SSL处理来满足性能和安全性的需要。
当具有SSL功能的浏览器(Navigator、IE)与Web服务器(Apache、IIS)通信时,它们利用数字证书确认对方的身份。数字证书是由可信赖的第三方发放的,并被用于生成公共密钥。
当最初的认证完成后,浏览器向服务器发送48字节利用服务器公共密钥加密的主密钥,然后Web服务器利用自己的私有密钥解密这个主密钥。最后,浏览器和服务器在会话过程中用来加解密的对称密钥集合就生成了。加密算法可以为每次会话显式地配置或协商,最广泛使用的加密标准为"数据加密标准" (DES)和RC4。
一旦完成上述启动过程,安全通道就建立了,保密的数据传输就可以开始了。尽管初始认证和密钥生成对于用户是透明的,但对于Web服务器来说,它们远非透明。由于必须为每次用户会话执行启动过程,因而给服务器CPU造成了沉重负担并产生了严重的性能瓶颈。据测试,当处理安全的SSL会话时,标准的 Web服务器只能处理1%到10%的正常负载。
二、应做的处理
密码在加解密数据时,使用两种类型的密钥。私有密钥被发给各实体并且永远不向外透露,公共密钥可以任意分发。这两种密钥对于认证过程是必不可少的。使用公钥加密的数据不能使用同一个密钥进行解密,必须使用私有密钥进行解密。
SSL使用复杂的数学公式进行数据加密和解密,这些公式的复杂性根据密码的强度不同而不同。高强度的计算会使多数服务器停顿,导致性能下降。多数Web服务器在执行SSL相关任务时,吞吐量会显著下降,性能比在只执行HTTP 1.0连接时的速度慢50多倍。而且由于SSL复杂的认证方案和加/解密算法,SSL需要大量地消耗CPU资源,从而造成Web服务器性能很大的下降。它所造成的服务器瓶颈使Web站点的速度慢如蜗牛爬行,这无疑会失去在线客户。
为解决这种性能上的损失,我们可以通过安装SSL加速器和卸载器来减少SSL交易中的时延。加速器通过执行一部分SSL处理任务来提高交易速度,同时依靠安全Web服务器软件完成其余的任务。卸载器承担所有SSL处理任务并且不需要安全Web服务器软件,从而使Web服务器可以以同样的高速度提供安全和非安全的服务。由于密钥管理和维护过程不依靠对应用软件的手工配置,因此使用卸载器效率会更高一些。
多数这类设备作为网络应用被安装在机架式或小底座网络设备上,由于它们为整个网络提供加解密服务,因此设备与Web服务器之间的数据是未加密的。
通过直接在服务器上安装SSL卸载器,可以解决速度和安全性问题。加密的数据由客户机经过Internet和网络直接传送到一台服务器上。安装在这台服务器上的卸载器对数据进行解密并将其沿PCI总线直接传送到处理器。这样做的结果是宿主服务器在保证客户机与服务器之间传输时数据安全性的同时,以非安全交易服务同样的速度提供了安全交易服务。
SSL加速设备的出现就是为了解决对CPU资源过量需求的SSL协议所造成的性能问题,这类设备是一些用以在不增加Web服务器负担的条件下处理SSL任务的特殊的网络部件。通过优化硬件和软件,专用SSL加速器处理SSL会话的速度为标准Web服务器的10到40倍。此外,SSL加速器解放了服务器资源,使这些资源可以真正用于处理应用逻辑和数据库查询,从而加快了整个站点的速度。
将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.。