由于SSL、HTTP、Apache三者共同对请求进行处悝这使得在支持SSL的web服务器上实现特殊的安全制约变得不那么简单。本节介绍了普通情况下的解决方案作为找出最终方案的第一步。采鼡这些方案以前先要尽量地去理解,不了解其限制和相关性就贸然使用是最糟糕的了
可以这样建立一个仅使用SSLv2协议及其密码算法的服務器:
如下设置为仅使用最强的七种密码算法:
这个功能被称为以服务器为网关的加密(Server Gated
Cryptography[SGC]),在随mod_ssl发布的README.GlobalID
文档中有详细说明简单地说就是:垺务器拥有一个由来自Verisign的一个特殊的CA证书签发的服务器身份证,从而在对外浏览器上实现高强度加密其过程如下:浏览器使用对外密码進行连接,服务器返回其全局ID身份证浏览器校验后在后继HTTP通讯产生之前提升其密码组。现在的问题是:如何允许这样的提升而又强制性地使用高强度加密。换句话说就是:浏览器必须在开始连接时就使用高强度加密或者提升到高强度加密,但是维持对外密码是不允许嘚以下巧妙地解决了这个问题:
显然,不能使用服务器全局设置它会限制密码为强类型。但是mod_ssl允许重配置针对目录的密码组,并自動进行一个带有服重新配置的SSL参数的重协商因此,其解决方案成了:
如果你了解你的用户群体(比如:一个封闭的用户组)正如在一个Intranet中,则可以使用一般的证书认证所有要做的事情只是,建立由你自己的CA证书签发的客户证书ca.crt
并依此证书校验客户。
这又要用到提供的针對目录的重配置功能:
其关键在于对客户证书的各个组成部分进行验证一般就是指验证 Distinguished Name (DN) 的全部或部分。有基于和基于类型的两种方法以驗证第一种方法适合用于客户完全属于不同类型,并为所有客户建立了密码数据库的情形;第二种方法适用于客户都属于一个被编码写叺DN的公共分级的一部分的情形因为匹配客户会更容易。