实验需求

(1)使用httpd-2.2搭建httpd服务;

(2)建立两个基于FQDN的虚拟主机www1,www2;要求有单独的错误日志和访问日志;

(3)通过www1的/server-status提供状态信息,且仅允许用户tom访问;

(4)www2设置禁止192.168.0.0/24网络中任意主机访问;

(5)为www2主机提供https服务;


实验过程

httpd-2.4环境


准备工作:

 1、确保httpd服务已正确安装。

# rpm -qa httpd
httpd-2.2.15-45.el6.centos.x86_64

 2、httpd-2.2的基础配置文件

    /etc/httpd/conf/httpd.conf :主配置文件 

    /etc/httpd/conf.d/*.conf

    logs:日志文件 

    modules:模块文件

 3、CentOS 6.7系统,IP地址为172.16.252.55

 4、准备一台服务器创建私有CA,并为虚拟主机签署CA


实验过程:

 1、创建虚拟主机www1,www2

    首先编辑主配置文件/etc/httpd/conf/httpd.conf,启用NameVirtualHost

   # vim /etc/httpd/conf/httpd.conf
     
     NameVirtualHost 172.16.252.55:80

    在/etc/httpd/conf.d/目录下分别创建www1.conf,www2.conf,并进行编辑

# vim www1.conf
<VirtualHost 172.16.252.55:80>
                ServerName www1.magedu.com
                DocumentRoot /data/vhosts/www1             #指定DocumentRoot
                Customlog logs/www1-access_log combined    #访问日志
                ErrorLog  logs/www1-error_log              #错误日志
</VirtualHost>
# vim www2.conf
<VirtualHost 172.16.252.55:80>
                ServerName www2.magedu.com
                DocumentRoot /data/vhosts/www2
                Customlog logs/www2-access_log combined
                ErrorLog  logs/www2-error_log
</VirtualHost>


分别为www1,www2 创建DocumentRoot目录,并在目录下创建index.html测试页。

# mkdir -p /data/vhosts/www{1,2}
www1]# echo "www1.magedu.com" >> index.html
www2]# echo "www2.magedu.com" >> index.html

使用httpd -t命令检查配置文件格式是否正确,然后启动httpd服务

# httpd -t
Syntax OK
# service httpd start


分别访问www1.magedu.com,www2.magedu.com测试虚拟主机是否成功。

# curl www1.magedu.com
www1.magedu.com
# curl www2.magedu.com
www2.magedu.com

2、配置www1的/server-status提供状态信息,且至允许tom访问;

首先检查是否加载了status_module模块

#httpd -M |grep status_module 
status_module (shared)
Syntax OK

备注:LoadModule  status_module  modules/mod_status.so  /etc/httpd/conf/httpd.conf

确认加载了status_module模块后,在www1.conf中添加如下配置:

<VirtualHost 172.16.252.55:80>
                ServerName www1.magedu.com
                DocumentRoot /data/vhosts/www1
                Customlog logs/www1-access_log combined
                ErrorLog  logs/www1-error_log
        <Location /server-status>                     #server-status状态信息 
                SetHandler server-status
                Order allow,deny
                Allow from 172.16                     #该状态信息只允许172.16网段主机访问
        </Location>
        <Directory "/data/vhosts/www1">                #用户认证,只允许tom访问
                Options None
                AllowOverride None
                AuthType Basic                         #认证类型
                AuthName "Auth for www1"               
                AuthUserFile "/data/vhosts/www1/.htpasswd"  #认证文件路径
                Require user "tom"                          #指定可访问用户
        </Directory>
        
</VirtualHost>


使用htpasswd生成用户认证文件

# htpasswd -c -m /data/vhosts/www1/.htpasswd tom

使用httpd -t 检查配置文件无误后,重新加载httpd

# service httpd reload

通过浏览器访问www1.magedu.com/server-status 测试状态信息及认证用户是否生效

Web基础之httpd服务搭建(一)_http

Web基础之httpd服务搭建(一)_虚拟主机_02


3、配置www2虚拟主机配置文件www2.conf,实现禁止192.168.0.0/24网段访问

<VirtualHost 172.16.252.55:80>
                ServerName www2.magedu.com
                DocumentRoot /data/vhosts/www2
                Customlog logs/www2-access_log combined
                ErrorLog  logs/www2-error_log
        <Directory /data/vhosts/www2>
                order deny,allow        
                deny from 172.16.251.229
        #       allow from all
        </Directory>
                </VirtualHost>

编辑完成后使用httpd -t检查无误重新加载httpd服务


4、为www2提供https服务

 首先创建一个私有CA并通过私有CA为服务器颁发证书,过程如下:

# cd /etc/pki/CA/
# touch index.txt
# echo "01" > serial
 
# (umask 066;openssl genrsa -out private/cakey.pem)
Generating RSA private key, 1024 bit long modulus
............++++++
............................................................++++++
e is 65537 (0x10001)
# openssl req -new -x509 -key private/cakey.pem -out cacert.pem #自签

私有CA创建完成,在www2所在服务器创建证书签署请求,并通过以上CA服务器签证

# mkdir /etc/httpd/ssl
# (umask 066;openssl genrsa -out /etc/httpd/ssl/httpd.key)
Generating RSA private key, 1024 bit long modulus
................++++++
.++++++
e is 65537 (0x10001)
# openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr #创建证书签署请求
# scp /etc/httpd/ssl/httpd.csr 172.16.251.229:/tmp/  #将请求发往CA认证服务器进行签证

CA服务器对以上请求进行CA签证

# openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt
# scp /etc/pki/CA/certs/httpd.crt 172.16.252.55:/etc/httpd/ssl/


CA签证成功后,配置httpd支持使用ssl,及使用的证书

安装mod_ssl模块

# yum -y install mod_ssl

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

  

   

  #DocumentRoot "/datdata/vhosts/www2"   //指定www2虚拟主机的DocumentRoot
      #ServerName www2.magedu.com:443
      #SSLCertificateFile /etc/httpd/ssl/httpd.crt   //CA证书url
      #SSLCertificateKeyFile /etc/httpd/ssl/httpd.key    //私钥文件路径

重启httpd服务


5、测试基于https访问主机,返回OK即成功

# openssl s_client -connect 172.16.252.54:443 -CAfile /etc/pki/CA/cacert.pem 
  
    Start Time: 1468637497
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---