Httpd部分高级应用配置

  前文介绍了httpd的基本配置,本文介绍部分高级应用的配置。


实验前提:

  关闭防火墙和SELinux

  关闭中心主机。


实验环境:

服务器:

  系统版本:CentOS6.6 x86_64

  服务软件版本:httpd2.2CentOS 6.6镜像提供rpm包;

客户端:

  系统版本:Windows7x86_64

  浏览器:Chrone44

  域名解析:由本地Hosts文件实现,不再配置DNS服务器(详情见博客内DNS相关文章);


一、虚拟主机;

1、基于端口的虚拟主机;

站点A

  FQDNwww.chencer.org

  端口:80

  站点文件:/web/www/index.html

站点B

  FQDNwww.chencer.org

  端口:8080

  站点文件:/web/port/index.html


实验配置:

主配置文件

# vim /etc/httpd/conf/httpd.conf
> Listen 80
> Listen 8080
>
> <VirtualHost192.168.1.10:80>
>     ServerName www.chencer.org
>     DocumentRoot"/web/www"
> </VirtualHost>
>
> <VirtualHost192.168.1.10:8080>
>     ServerName www.chencer.org
>     DocumentRoot"/web/port"
> </VirtualHost>


提供网页文件:

# mkdir -p /web/{www,port}
# echo "www.chencer.org:80" > /web/www/index.html
# echo "www.chencer.org:8080" > /web/port/index.html


检查配置文件语法,重启服务,查看监听端口:

# httpd �t
# service httpd restart
# ss �tnl |grep :80

80/tcp和8080/tcp被监听:

Httpd部分高级应用配置_第1张图片 


客户端测试:

Hosts文件添加解析记录:

Httpd部分高级应用配置_第2张图片


站点A

Httpd部分高级应用配置_第3张图片


站点B

Httpd部分高级应用配置_第4张图片


2、基于IP的虚拟主机;

站点A

  FQDNwww.chencer.org

  IP192.168.1.10

  站点文件:/web/www/index.html

站点B

  FQDNbbs.chencer.org

  IP192.168.1.11

  站点文件:/web/bbs/index.html


实验配置:

主配置文件:

> # vim /etc/httpd/conf/httpd.conf
> <VirtualHost 192.168.1.10:80>
>     ServerName www.chencer.org
>     DocumentRoot "/web/www"
> </VirtualHost>
>
> <VirtualHost 192.168.1.11:80>
>     ServerName bbs.chencer.org
>     DocumentRoot "/web/bbs"
> </VirtualHost>


提网页文件:

# mkdir -p /web/{www,bbs}
# echo "www.chencer.org" > /web/www/index.html
# echo "bbs.chencer.org" > /web/bbs/index.html


检查配置文件语法,重启服务:

# httpd �t
# service httpd restart


客户端测试:

Hosts文件添加解析记录:

Httpd部分高级应用配置_第5张图片


站点A

Httpd部分高级应用配置_第6张图片


站点B

Httpd部分高级应用配置_第7张图片


3、基于主机名的虚拟主机;

站点A

  FQDNwww.chencer.org

  站点文件:/web/www/index.html

站点B

  FQDNblog.chencer.org

  站点文件:/web/blog/index.html

 

实验配置:

主配置文件:

> # vim/etc/httpd/conf/httpd.conf
> NameVirtualHost192.168.1.10:80
>
> <VirtualHost192.168.1.10:80>
>     ServerName www.chencer.org
>     DocumentRoot "/web/www"
> </VirtualHost>
> 
> <VirtualHost192.168.1.10:80>
>     ServerName blog.chencer.org
>     DocumentRoot "/web/blog"
></VirtualHost>


提网页文件:

# mkdir -p /web/{www,blog}
# echo "www.chencer.org" > /web/www/index.html
# echo "blog.chencer.org" > /web/blog/index.html


检查配置文件语法,重启服务:

# httpd �t
# service httpd restart


客户端测试:

Hosts文件添加解析记录:

Httpd部分高级应用配置_第8张图片

 

A主机:

Httpd部分高级应用配置_第9张图片


B主机:

Httpd部分高级应用配置_第10张图片


二、基于用户的访问控制;

用户认证:

  基本认证:Basic

  摘要认证:Digest


虚拟用户:仅用于访问某服务或获取某资源的凭证;

  文本文件:*.htpasswd

  SQL数据库

  dbm:数据库引擎,提供API

  ldap


authenticationprovider:账号和密码的存储机制;

  authn


authorizationprovider: 授权


# htpasswd:
    -c:如果此文件事先不存在,则创建;注意,只能在创建第一个用户时使用;
    -m:以md5的格式编码存储用户的密码信息;
    -D:删除指定用户;


实例:

站点A

  FQDNwww.chencer.org/admin

  允许用户jimtom访问;

 

站点B

  FQDNops.chencer.org/admin

  仅允许ops组访问,jim属于ops组;

 

实验配置:

主配置文件:

# vim/etc/httpd/conf/httpd.conf
> NameVirtualHost192.168.1.10:80
>
> <VirtualHost192.168.1.10:80>
>     ServerName www.chencer.org
>     DocumentRoot /web/www
> <Directory"/web/www/admin">
>     Options none
>     AllowOverride AuthConfig
>     AuthType Basic    //认证类型为基本认证;
>     AuthName " Admin Area."    //质疑提示信息;
>     AuthUserFile /etc/httpd/conf/.htpasswd    //认证文件位置;
>     Require valid-user
> </Directory>
> </VirtualHost>
> 
> <VirtualHost192.168.1.10:80>
>     ServerName ops.chencer.org
>     DocumentRoot /web/ops
> <Directory"/web/ops/admin">
>     Options none
>     AllowOverride AuthConfig
>     AuthType Basic
>     AuthName " Admin Area."
>     AuthUserFile /etc/httpd/conf/.htpasswd
>     AuthGroupFile /etc/httpd/conf/.htgroup
>     Require group ops
> </Directory>
> </VirtualHost>


生成认证文件:

创建用户:

# htpasswd -mc /etc/httpd/conf/.htpasswd jim
# htpasswd -m /etc/httpd/conf/.htpasswd tom

Httpd部分高级应用配置_第11张图片


jim加入ops组:

# echo "ops: jim " > /etc/httpd/conf/.htgroup


提供网页文件:

# mkdir -p /web/{www,ops}/admin
# echo "www.chencer.org/admin" > /web/www/admin/index.html
# echo "ops.chencer.org/admin" > /web/ops/admin/index.html


检查配置文件语法,重启服务;

# httpd �t
# service httpd restart


客户端测试:

Hosts文件添加解析记录:

Httpd部分高级应用配置_第12张图片


jim访问站点A

Httpd部分高级应用配置_第13张图片Httpd部分高级应用配置_第14张图片



jim访问站点B

Httpd部分高级应用配置_第15张图片Httpd部分高级应用配置_第16张图片



tom访问站点A

Httpd部分高级应用配置_第17张图片Httpd部分高级应用配置_第18张图片



tom访问站点B

Httpd部分高级应用配置_第19张图片Httpd部分高级应用配置_第20张图片



三、Https

httpd

  ssl模块:mod_ssl,单独成包


  ssl会话基于IP地址创建,所以,每一个IP仅创建一个SSL会话;

 

ssl握手要完成的工作:

  交换协议版本号

  选择双方都支持的加密方式

  客户端对服务器端实现身份验正

  密钥交换


https协议:基于SSL二进制编码,443/tcp

  openssl s_client

 

客户端验正服务器端证书:

  有效性检测:证书是否仍然在有效期内

  CA的可信度检测

  证书的完整性检测

  持有者的身份检测


实例:

站点:www.chencer.org提供https服务;


安装mod_ssl模块:

# yuminstall mod_ssl
# rpm �ql mod_ssl

Httpd部分高级应用配置_第21张图片

# /etc/httpd/conf.d/ssl.conf    :mod_ssl配置文件;


服务器自建CA,自签证书(详细信息见自建CA博客):

# (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048)
# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem -days 3655
# touch /etc/pki/CA/{index.txt,serial}
# echo 01 > /etc/pki/CA/serial

Httpd部分高级应用配置_第22张图片

创建证书,签署请求;

# (umask 077 ; openssl genrsa -out /etc/httpd/httpd.key 2048)
# openssl req -new -key/etc/httpd/httpd.key -out /etc/httpd/httpd.csr
# openssl ca -in/etc/httpd/httpd.csr -out /etc/httpd/httpd.crt -days 3650

Httpd部分高级应用配置_第23张图片

Httpd部分高级应用配置_第24张图片


配置mod_ssl模块配置文件:

# vim/etc/httpd/conf.d/ssl.conf
DocumentRoot "/web/www"
ServerName www.chencer.org:443
SSLCertificateFile /etc/httpd/httpd.crt
SSLCertificateKeyFile /etc/httpd/httpd.key


提供网页文件:

# mkdir -p /web/www
# echo "https:www.chencer.org:443" > /web/www/index.html


检查配置文件语法,重启服务,查看监听端口;

# httpd �t
# service httpd restart
# ss �tnl | grep :443


Httpd部分高级应用配置_第25张图片


客户端访问测试:

下载安装CA证书,cacert.pem重命名为cacert.crt

Httpd部分高级应用配置_第26张图片

访问站点:

Httpd部分高级应用配置_第27张图片


本文出自 “小马的学习记录” 博客,请务必保留此出处http://masachencer.blog.51cto.com/8683770/1682796

你可能感兴趣的:(Web,https,lamp,httpd)