Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2292364
  • 博文数量: 168
  • 博客积分: 6641
  • 博客等级: 准将
  • 技术积分: 1996
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-02 11:49
文章存档

2020年(4)

2019年(6)

2017年(1)

2016年(3)

2015年(3)

2014年(8)

2013年(2)

2012年(12)

2011年(19)

2010年(10)

2009年(3)

2008年(17)

2007年(80)

分类: LINUX

2008-01-04 13:01:33

配置Apache服务的digest摘要认证

TsengYia#126.com 2008-01-04   http://selinux.cublog.cn

################################################################
系统环境:RHEL5 [ 2.6.18-8.el5xen ]
软件环境:
    httpd-2.2.3-6.el5

目标功能:
    针对Apache网站目录或URL位置实现用户访问认证(basic基本认证、digest摘要认证)。
    ——basic认证、digest认证任选一种即可。

    注:以尽量减少对Web服务器性能的影响为出发点,仅在需要认证的目录(Directory)或位置(Location)范围作认证即可,避免在层次结构较复杂的目录(如网站根目录)使用.htaccess文件;如果用户认证的配置不多,可以直接在httpd.conf文件中相关区段进行配置,无需使用单独的.htaccess文件。

################################################################
一、安装httpd软件包
    本处以RHEL5光盘自带的rpm包安装,过程略。
    在httpd.conf文件中,几个主要认证模块配置如下(默认已配置):
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authn_dbm_module modules/mod_authn_dbm.so
LoadModule authn_default_module modules/mod_authn_default.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule authz_dbm_module modules/mod_authz_dbm.so
LoadModule authz_default_module modules/mod_authz_default.so


二、修改httpd.conf文件,添加对目录或位置的用户验证配置
  1、创建网站测试文件
    # mkdir -p /var/www/html/auth
    # echo "Root Directory." > /var/www/html/index.html
    # echo "Auth Directory." > /var/www/html/auth/index.html
  2、修改/etc/httpd/conf/httpd.conf文件,确认修改或添加以下内容:
DocumentRoot "/var/www/html"

    Options Indexes
    AllowOverride AuthConfig        #//允许读取.htaccess文件中的认证配置(AuthConfig),其他目录应按默认值None
    Order allow,deny
    Allow from all

DirectoryIndex index.html index.php
  3、启动httpd服务
    # /etc/init.d/httpd start
    # chkconfig --level 35 httpd on


三、配置基本认证(basic)
  方式一:使用文本格式用户数据库
    1、创建认证用户数据库文件(文本格式)
      # htpasswd -c /etc/httpd/conf/users_txt.pwd admin        #//创建文本格式用户文件,同时添加用户admin
      # htpasswd /etc/httpd/conf/users_txt.pwd jerry        #//在数据库文件中添加用户jerry
    2、创建.htaccess配置文件
      # vi /var/www/html/auth/.htaccess
AuthName "Private Contents."
AuthType basic
AuthUserFile /etc/httpd/conf/users_txt.pwd
Require admin jerry        #//允许用户admin、jerry通过认证后访问,若用户较多,可以改为“Require valid-user”
    3、测试
      在客户端浏览器(必要时清空缓存)访问,以admin或jerry用户进行认证访问

  方式二:使用dbm格式用户数据库(若用户较多,可采用dbm用户数据库以加快检索速度)
    1、创建认证用户数据库文件(Berkeley DB格式)
      # htdbm -TDB -c /etc/httpd/conf/users_dbm.db kitty        #//创建DB格式(其他格式参考man)用户文件,同时添加用户kitty
    2、修改.htaccess配置文件
      # vi /var/www/html/auth/.htaccess
AuthName "Private Contents."
AuthType basic
AuthBasicProvider dbm
AuthDBMType DB
AuthDBMUserFile "/etc/httpd/conf/users_dbm.db"
Require kitty
    3、测试
      在客户端浏览器(必要时清空缓存)访问,以kitty用户进行认证访问


四、配置摘要认证(digest)
  1、创建digest认证用户数据库文件(文本格式)        #//digest认证貌似无法使用dbm用户文件
    # htdigest -c /etc/httpd/conf/users_digest.pwd "Private Contents." kenthy
  2、修改.htaccess配置文件
AuthName "Private Contents."
AuthType digest
#AuthDigestDomain /auth/        #//在目录区段(Directory)配置digest认证时,此行可有可无
AuthUserFile /etc/httpd/conf/users_digest.pwd
Require kenthy
  3、测试
    在客户端浏览器(必要时清空缓存)访问,以kenthy用户进行认证访问

******************************** End *********************************
阅读(2572) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~