您的位置:首页 > 理论基础 > 计算机网络

httpd2.2实现身份认证、https及页面压缩

2014-03-26 16:36 721 查看
一、apache实现身份认证
apache的身份认证分两种,一种是基本认证(basic),另一种是摘要认证(digest)。要实现身份认证那就必须要有帐号和密码,帐号密码可以保存在普通文件中也可以保存在数据库中。

实例:使用httpd2.2实现基本身份认证。

1、创建一个保密页面,此处我们使用服务器的状态页面,这个页面是httpd自身生成的。apache内部有许多内生的处理器,一般来讲每一种文件类型都有其隐式的处理器,使用参数SetHandler可以让处理器显示。编辑httpd的配置文件/etc/httpd/conf/httpd.conf,加上以下几行。
<Location /status>
SetHandler server-status
Order deny,allow
allow from all
</Location>
重启httpd后,打开浏览器在地址栏输入,http://ServerIP/status就能看到apache的状态了。




2、很显然这么重要的页面,我们肯定不能让除管理员以外的人看到了,于是我们可以使用身份认证让这个页面访问需要密码。编辑配置文件里,刚才加入的那几行。
<Location /status>
SetHandler server-status  #显示server-status
Order deny,allow
allow from all
AllowOverride AuthConfig  #开启实现认证机制
AuthType Basic            #定义认证机制类型为基本身份认证
AuthName 'Apache Server Status' #定义对话框显示的提示符
AuthUserFile '/etc/httpd/conf/.htpasswd' #帐号密码保存路径
Require valid-user        #授权帐号文件里的用户访问权限,此处为所有,也可单独定义某个或某多个用户,用逗号隔开
</Location>
此处我们开启了这个页面的基本身份认证功能,并把帐号密码保存在/etc/httpd/conf/.htpasswd文件里。既然这个文件保存了帐号和密码,那么这个文件就很重要,在实际使用时请谨慎此文件的访问权限,此处为了方便我们把它制作成一个隐藏文件。

3、使用命令 htpasswd 创建用户
格式:
htpasswd -c -m /path/passwordfile username
以上命令,如果是添加第二个用户则不用加上-c参数:




4、重启服务,测试效果。




输入密码测试一下:







二、apache实现https安全加密协议
在网上购物时,到了付款的那一步,通常都会跳转到一个基于https协议的页面。因为https是一种基于http协议,在http下加上ssl层,而这个ssl层是在TCP/IP四层模型的应用层上,所有数据在经过这个通道时都会有一个临时的加密算法加密,所以很安全。apache要实现https协议,须使用mod_ssl模块,此模块可以使用yum命令独立安装。

实例:本地实现https。

1、本地生成CA证书。进入目录/etc/pki/CA,在该目录创建CA的自签证书。
(umask 077; openssl genrsa 2048 > private/cakey.pem)




2、为了免于后面重复输入CA的资料,我们编辑一下配置文件/etc/pki/tls/openssl.cnf,修改以下几个默认参数。




3、生成CA的证书
openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem




4、生成客户端数字证书。此处因为我们服务端和客户端使用同一台机器,因此直接在本机生成证书,免去证书上传的步骤。
在目录/etc/httpd/conf/下创建一个目录ssl,在/etc/httpd/conf/ssl下生成客户端私钥:

(umask 077; openssl genrsa 1024 > httpd.key)




根据httpd.key私钥生成证书。
openssl req -new -key httpd.key -out httpd.csr




5、CA签曙客户端证书。

openssl ca -in httpd.csr -out httpd.crt




6、安装mod_ssl模块,可以使用yum安装,也直接使用rpm命令安装软件包:




7、编辑配置文件/etc/httpd/conf.d/ssl.conf。

从文件开头我们可以看到,模块已经加载,监听的端口是443:




指定公钥和私钥路径:




8、把CA的数字证书文件/etc/pki/CA/cacert.pem下载至本地windows电脑,并更名为cacert.crt。




直接双击并安装证书到受信任的证书颁发机构:




9、重启服务,查看https的443端口号是否被监听。




10、在网站根目录创建一个测试用的首页文件,并在本地window7系统的电脑里C:\Windows\System32\drivers\etc\hosts添加服务器的IP地址并绑定域名www.wubinary.com。
在本地电脑的浏览器上输入域名 https://www.wubinary.com,测试效果:



测试成功!

三、apache实现页面压缩
为了加快网站页面访问速度,服务器端可以把网站页面里指定格式的内容进行压缩传送。但是有的时候客户端浏览器可能不支持解压缩的功能,于是我们可以把内容不压缩返回给它,让支持压缩的浏览器访问的内容为压缩内容。具体参数如下:
SetOutputFilter DEFLATE  #开启压缩模块
# Restrict compression to these MIME types  定义需要压缩的文件类型
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE text/javascript
AddOutputFilterByType DEFLATE text/css

# Level of compression (Highest 9 - Lowest 1)  定义压缩级别
DeflateCompressionLevel 9

# Netscape 4.x has some problems.   此类浏览器支持压缩
BrowserMatch ^Mozilla/4 gzip-only-text/html

# Netscape 4.06-4.08 have some more problems  此类不支持压缩
BrowserMatch ^Mozilla/4\.0[678] no-gzip

# MSIE masquerades as Netscape, but it is fine
BrowserMatch \bMSI[E] !no-gzip !gzip-only-text/html
实例: apache实现页页压缩
1、在目录/etc/httpd/conf.d/下新建一个配置文件deflate.conf,添加以上内容




2、为了测试效果,我们故意弄一个大文本文件作为首页,本地浏览器测试效果:




设置成功!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息