一、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、为了测试效果,我们故意弄一个大文本文件作为首页,本地浏览器测试效果:
设置成功!
转载于:https://blog.51cto.com/wubinary/1384602