实验需求
(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 测试状态信息及认证用户是否生效
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) ---
原文地址:http://dd0328.blog.51cto.com/11619665/1826933