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

Httpd部分高级应用配置

2015-12-08 00:00 232 查看
前文介绍了httpd的基本配置,本文介绍部分高级应用的配置。

实验前提:
关闭防火墙和SELinux;
关闭中心主机。

实验环境:
服务器:
系统版本:CentOS6.6 x86_64;
服务软件版本:httpd2.2,CentOS 6.6镜像提供rpm包;
客户端:
系统版本:Windows7x86_64;
浏览器:Chrone44;
域名解析:由本地Hosts文件实现,不再配置DNS服务器(详情见博客内DNS相关文章);

一、虚拟主机;
1、基于端口的虚拟主机;
站点A:
FQDN:www.chencer.org
端口:80
站点文件:/web/www/index.html
站点B:
FQDN:www.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被监听:




客户端测试:
Hosts文件添加解析记录:




站点A:




站点B:




2、基于IP的虚拟主机;
站点A:
FQDN:www.chencer.org
IP:192.168.1.10
站点文件:/web/www/index.html
站点B:
FQDN:bbs.chencer.org
IP:192.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文件添加解析记录:




站点A:




站点B:




3、基于主机名的虚拟主机;
站点A:
FQDN:www.chencer.org
站点文件:/web/www/index.html
站点B:
FQDN:blog.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文件添加解析记录:




A主机:




B主机:




二、基于用户的访问控制;
用户认证:
基本认证:Basic
摘要认证:Digest

虚拟用户:仅用于访问某服务或获取某资源的凭证;
文本文件:*.htpasswd
SQL数据库
dbm:数据库引擎,提供API
ldap:

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

authorizationprovider: 授权

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


实例:
站点A;
FQDN:www.chencer.org/admin
允许用户jim和tom访问;

站点B;
FQDN:ops.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





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文件添加解析记录:




jim访问站点A:






jim访问站点B:






tom访问站点A:






tom访问站点B:






三、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




# /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




创建证书,签署请求;
# (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








配置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






客户端访问测试:
下载安装CA证书,cacert.pem重命名为cacert.crt:



访问站点:




本文出自 “小马的学习记录” 博客,请务必保留此出处http://masachencer.blog.51cto.com/8683770/1682796
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  web https lamp httpd