通常的连接方式中,通信是以非加密的形式在网络上传播的,这就有可能被非法窃听到,尤其是用于认证的口令信息。为了避免这个安全漏洞,就必须对传输过程进行加密。对http传输进行加密的协议为https,它是通过ssl(安全socket层)进行http传输的协议,不但通过公用密钥的算法进行加密保证传输的安全性,而且还可以通过获得认证证书ca,保证客户连接的服务器没有被假冒。
使用公用密钥的方式可以保证数据传输没有问题,但如果浏览器客户访问的站点被假冒,这也是一个严重的安全问题。这个问题不属于加密本身,而是要保证密钥本身的正确性问题。要保证所获得的其他站点公用密钥为其正确的密钥,而非假冒站点的密钥,就必须通过一个认证机制,能对站点的密钥进行认证。当然即使没有经过认证,仍然可以保证信息传输安全,只是客户不能确信访问的服务器没有被假冒。如果不是为了提供电子商务等方面对安全性要求很高的服务,一般不需要如此严格的考虑。
虽然apache服务器不支持ssl,但apache服务器有两个可以自由使用的支持ssl的相关计划,一个为apache-ssl,它集成了apache服务器和ssl,另一个为apache+mod_ssl,它是通过可动态加载的模块mod_ssl来支持ssl,其中后一个是由前一个分化出的,并由于使用模块,易用性很好,因此使用范围更为广泛。还有一些基于apache并集成了ssl能力的商业web服务器,然而使用这些商业web服务器主要是北美,这是因为在那里ssl使用的公开密钥的算法具备专利权,不能用于商业目的,其他的国家不必考虑这个专利问题,而可以自由使用ssl。
虽然通常mod_ssl以及其他复杂的apache模块都提供了详细的编译安装说明,并提供了非常有用的脚本程序和makefile来帮助使用者进行安装。然而为web服务器增加一个模块并不是一个简单而易于描述的任务,幸运的是,freebsd提供了ports collection,让使用者不必关系每一步安装细节就能安装好这个模块。
如果不打算使用ports collection来安装mod_ssl,那么事情就略微麻烦一些,必须自己手工下载apache的源代码,以及mod_ssl的代码,按照说明一步步的编译安装。
apache+mod_ssl依赖于另外一个软件:openssl,它是一个可以自由使用的ssl实现,首先需要安装这个port(由于专利的影响,这些软件无法制作为可以直接安装的二进制软件包,必须使用ports collection安装)。openssl位于/usr/ports下面的security子目录下,当下载其源程序之前,需要设置环境变量usa_resident为no,以避开专利纷争。