分别使用httpd-2.2和httpd-2.4实现;
1、建立httpd服务,要求:
(1) 提供两个基于名称的虚拟主机:
www1.stuX.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1/error_log,访问日志为/var/log/httpd/www1/access_log;
www2.stuX.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2/error_log,访问日志为/var/log/httpd/www2/access_log;
(2) 通过www1.stuX.com/server-status输出其状态信息,且要求只允许提供账号的用户访问;
(3) www1不允许192.168.1.0/24网络中的主机访问;
2、为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
(1) 要求使用证书认证,证书中要求使用国家(CN),州(Beijing),城市(Beijing),组织为(MageEdu);
(2) 设置部门为Ops, 主机名为www2.stuX.com;
实验环境
CentOS 6 1台
CentOS 7 1台
IP地址:
192.168.60.132 Centos6主机,用于安装httpd-2.2
192.168.60.138 Centos7主机,用于安装httpd-2.4
关闭Selinux
关闭防火墙
要架设一个本地httpd服务器一般需要下面2个软件程序包:
对于httpd-2.2
httpd-2.2.15-69.el6.centos.x86_64,httpd服务主程序
httpd-tools-2.2.x86_64,测试http服务的工具程序,如ab
对于httpd-2.4
httpd-2.4.6-88.el7.centos.x86_64,httpd服务主程序
httpd-tools-2.4.x86_64,测试http服务的工具程序,如ab
httpd-2.2的搭载方法
在132主机上面操作
安装httpd程序包
yum install -y httpd
yum install -y httpd-tools
运行服务
service httpd start
测试服务能否正常运行
创建放置网页文件的文件夹
[root@132 ~]# mkdir -pv /web/vhosts/{www1,www2}
mkdir: created directory `/web\'
mkdir: created directory `/web/vhosts\'
mkdir: created directory `/web/vhosts/www1\'
mkdir: created directory `/web/vhosts/www2\'
创建主页文件
[root@132 ~]# vim /web/vhosts/www1/index.html
[root@132 ~]# vim /web/vhosts/www2/index.html
创建放置日志的文件夹
[root@132 ~]# mkdir -pv /var/log/httpd/{www1,www2}
mkdir: created directory `/var/log/httpd/www1\'
mkdir: created directory `/var/log/httpd/www2\'
基于不同的主机名称来配置虚拟主机
编辑主配置文件
vim /etc/httpd/conf/httpd.conf
禁用DocumentRoot选项
开启NameVirtualHost选项,使用默认80端口。
编辑虚拟主机的配置文件
vim /etc/httpd/conf.d/host1.conf
#第一个虚拟主机的配置项目
<VirtualHost *:80>
ServerName www1.stuX.com #主机名称
DocumentRoot "/web/vhosts/www1" #网页文件的根目录
<Directory "web/vhosts/www1"> #文件目录的权限设置
Options None
AllowOverride None
Order allow,deny
Allow from all #允许所有人访问
</Directory>
</VirtualHost>
vim /etc/httpd/conf.d/host2.conf
#第二个虚拟主机的配置选项
<VirtualHost *:80>
ServerName www2.stuX.com
DocumentRoot "/web/vhosts/www2"
<Directory "web/vhosts/www2">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
重启服务
测试访问
修改测试主机的hosts文件
192.168.60.132 www1.stuX.comwww2.stuX.com
浏览器进行访问
配置错误日志以及访问日志
修改www1主机的配置文件
<VirtualHost *:80>
ServerName www1.stuX.com
DocumentRoot "/web/vhosts/www1"
<Directory "web/vhosts/www1">
Options None
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#访问日志的配置项
CustomLog "logs/www1/access_log" combined
#错误日志的配置项
ErrorLog "logs/www1/error_log"
#错误日志的级别
LogLevel info
</VirtualHost>
修改www2主机的配置文件
重启服务
测试www1的访问日志功能正常
测试www2的访问日志功能正常
server-status状态页面的设置
检查status模块是否以及装载进来
确保主配置文件下,该模组被装载。
/etc/httpd/conf/httpd.conf
编辑虚拟主机1的配置文件
vim /etc/httpd/conf.d/host1.conf
server-status状态页面的访问质询设置
使用htpasswd工具创建访问用户数据库
创建用户tom
htpasswd -c /tmp/test.users tom
添加用户jack
htpasswd /tmp/test.users jack
移动此文件到/etc/httpd/conf.d目录下
mv /tmp/test.users /etc/httpd/conf.d/.htpasswd
编辑配置文件
vim /etc/httpd/conf.d/host1.conf
保存并重启服务。
认证质询功能开启。
为虚拟主机设置黑名单
vim /etc/httpd/conf.d/host1.conf
重启服务
用60.1的主机测试不能访问。
用其他主机测试可访问。
为www1.stux.com配置https
CA认证模型
实验环境
CentOS 6 1台
CentOS 7 2台
IP地址:
192.168.60.132 Centos6主机,安装httpd-2.2,作为网站服务器
192.168.60.137 Centos7主机,用于作为CA证书服务器
192.168.60.1 Win10主机,用做访问客户机。
关闭Selinux
关闭防火墙
在CA证书服务器上配置CA环境
在137主机上操作
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048)
生成自签证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
在httpd主机上安装ssl模块
132主机操作
安装mod_ssl模块
yum install -y mod_ssl
创建ssl目录,用于放置私钥文件。
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
创建私钥文件
(umask 077;openssl genrsa -out httpd_key.pem 1024)
生成签署请求文件
openssl req -new -key httpd_key.pem -out httpd_csr.pem
把上面的签署文件发送到CA服务器137主机上。
scp httpd_crt.pem root@192.168.60.137:/tmp/
删除签署请求文件。
在CA证书服务器上签署证书
创建序列号文件
touch index.txt serial
echo 01 > serial
签署证书
openssl ca -in /tmp/httpd_csr.pem -out certs/httpd_crt.pem
以及签署过的证书,要放在certs/目录下
把刚刚签署后的证书发回给132主机。
scp certs/httpd_crt.pem 192.168.60.132:/etc/httpd/ssl
删除签署请求文件
在132主机操作
此时证书文件放在/etc/httpd/ssl目录下的httpd_crt.pem文件
编辑ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
重启服务
在win10用户机端操作
把ca服务器的证书复制到win10系统,然后导入到浏览器中。
scp root@192.168.60.137:/etc/pki/CA/cacert.pem /var/ftp/pub
导入ca证书到浏览器的证书管理器。
已经通过认证。
httpd-2.4的搭载方法
实验环境
CentOS 7 1台
IP地址:
192.168.60.138 Centos7主机,用于安装httpd-2.4
关闭Selinux
关闭防火墙
要架设一个本地httpd服务器一般需要下面2个软件程序包:
httpd-2.4.6-88.el7.centos.x86_64,httpd服务主程序
httpd-tools-2.4.x86_64,测试http服务的工具程序,如ab
安装httpd-2.4(在138主机上面操作)
yum install -y httpd httpd-tools
运行服务
systemctl start httpd.service
测试连接成功,说明服务能正常启动。
创建网页文件根目录
mkdir -pv /web/vhosts/{www1,www2}
创建主页文件
vim /web/vhosts/www1/index.html
vim /web/vhosts/www2/index.html
创建日志文件夹
mkdir -pv /var/log/httpd/{www1,www2}
配置虚拟主机
vim conf.d/host1.conf
vim conf.d/host2.conf
修改win10中的hosts文件
192.168.60.138 www1.stuX.comwww2.stuX.com
测试访问
配置访问日志与错误日志
vim conf.d/host1.conf
vim conf.d/host2.conf
测试访问日志功能是否正常
略过。。
Server-status状态页面的设置
检查status模块是否被装载
httpd -M|grep status
编辑www1主机的配置文件
vim conf.d/host1.conf
测试访问成功。
Server-status状态页面的访问质询设置
使用htpasswd工具创建访问用户的数据库
编辑配置文件
vim conf.d/host1.conf
测试成功。
设置访问黑名单
vim conf.d/host1.conf
为www2主机配置CA证书服务器
实验环境
CentOS 7 2台
IP地址:
192.168.60.138 Centos7主机,安装httpd-2.4,作为网站服务器
192.168.60.137 Centos7主机,用于作为CA证书服务器
192.168.60.1 Win10主机,用做访问客户机。
关闭Selinux
关闭防火墙
在CA证书服务器上配置CA环境
在137主机上操作
cd /etc/pki/CA/
(umask 077;openssl genrsa -out private/cakey.pem 2048)
生成自签证书
openssl req -new -x509 -key private/cakey.pem -out cacert.pem -days 365
在httpd主机上安装ssl模块
138主机操作
安装mod_ssl模块
yum install -y mod_ssl
创建ssl目录,用于放置私钥文件。
mkdir /etc/httpd/ssl
cd /etc/httpd/ssl
创建私钥文件
(umask 077;openssl genrsa -out httpd_key.pem 1024)
生成签署请求文件
openssl req -new -key httpd_key.pem -out httpd_csr.pem
把上面的签署文件发送到CA服务器137主机上。
scp httpd_csr.pem root@192.168.60.137:/tmp/
删除签署请求文件。
在CA证书服务器上签署证书
创建序列号文件
touch index.txt serial
echo 01 > serial
签署证书
openssl ca -in /tmp/httpd_csr.pem -out certs/httpd_crt.pem
以及签署过的证书,要放在certs/目录下
把刚刚签署后的证书发回给138主机。
scp certs/httpd_crt.pem 192.168.60.138:/etc/httpd/ssl
删除签署请求文件
在138主机操作
此时证书文件放在/etc/httpd/ssl目录下的httpd_crt.pem文件
编辑ssl配置文件
vim /etc/httpd/conf.d/ssl.conf
重启服务
在win10用户机端操作
把ca服务器的证书复制到win10系统,然后导入到浏览器中。
scp root@192.168.60.137:/etc/pki/CA/cacert.pem /var/ftp/pub
导入ca证书到浏览器的证书管理器。
已经通过认证。