一、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的状态了。

wKiom1MydNbAQMf_AAMSgPNSl1E779.jpg


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参数:

wKioL1Myd97BifPXAAExpAdmdV4870.jpg


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

wKioL1MyebbTtCU7AAI6F89xGVQ308.jpg


输入密码测试一下:

wKioL1MyegnTBVoJAAC1zMwtibM079.jpg

wKioL1MyegrSBETaAAIyFYDHOOo981.jpg


二、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)

wKioL1MyfbWytoSEAAEXQNBxk6Y400.jpg


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

wKioL1MyfyPzDQZxAAM8IVnaNao255.jpg


3、生成CA的证书

openssl req -new -x509 -key private/cakey.pem -days 3655 -out cacert.pem

wKiom1MygC2ggxInAAMhcvrGarI485.jpg


4、生成客户端数字证书。此处因为我们服务端和客户端使用同一台机器,因此直接在本机生成证书,免去证书上传的步骤。

在目录/etc/httpd/conf/下创建一个目录ssl,在/etc/httpd/conf/ssl下生成客户端私钥:

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

wKiom1MygSuzAeqeAADwuqZ61-g992.jpg


根据httpd.key私钥生成证书。

openssl req -new -key httpd.key -out httpd.csr

wKiom1MygcixLrBxAAONEH_BFpE095.jpg


5、CA签曙客户端证书。

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

wKioL1Myh27R6xltAAM5DFRzJVU178.jpg


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

wKiom1MyhT2R7fs2AAFV8fmNz1U062.jpg


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


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

wKioL1MyhVyz-wZmAABzY0p-RPQ273.jpg


指定公钥和私钥路径:

wKiom1MyhlHBuCwKAAHuGSg-X38796.jpg


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

wKioL1MyiO6RfnkRAAAd6Skf3Qs593.jpg


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

wKiom1MyiWfjwkSdAAHnosekwiw576.jpg


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

wKiom1Myi4fBgSERAAJkfCkJ81A153.jpg


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

在本地电脑的浏览器上输入域名 https://www.wubinary.com,测试效果:

wKioL1MyjKShpFH-AADjbYP8WVI935.jpg


测试成功!


三、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,添加以上内容

wKioL1MykWST6E1wAAJ_Be1t6z8680.jpg


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

wKioL1MykZrQGIC5AAMoY-qSaTw649.jpg


设置成功!