分别使用httpd-2.2httpd-2.4实现多虚拟主机配置和https功能

1、建立httpd服务,要求:

       (1)提供两个基于名称的虚拟主机www1.ipsecx.com,www2.ipsecx.com;有单独的错误日志和访问日志;

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

       (3)www2.ipsecx.com不允许172.16.254.180主机访问;                          

2、为上面的第2个虚拟主机提供https服务;

 


实验环境

服务器端:CentOS 6.7 ,本地光盘yum源,httpd-2.2版本,IP地址:172.16.30.100

CA服务器:CentOS 7.2 ,本地光盘yum源,httpd-2.2版本,IP地址:172.16.254.144

客户机: CentOS7.2 IP地址:172.16.254.180

真机:Windows 7 IP地址:172.16.250.169


http2.2版本

 配置多虚拟主机:

  1. CentOS6.7 安装httpd-2.2程序

                                 分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http 

  2. 安装完成后,确认httpd程序的版本信息

    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_02

     

    查看httpd程序安装完成后,生成哪些文件


    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_03

      

  3. 配置虚拟主机www1.ipsecx.com www2.ipsecx.com

 

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

                  httpd的额外的配置文件/etc/httpd/conf.d/*.conf

 

为了避免因为修改主配置文件,造成未知错误,可以将建立虚拟主机的配置文件,放在/etc/httpd/conf.d/ 目录下,这样,httpd服务在启动过程中,同样也会加载此目录的配置文件,而避免不必要的麻烦。

/etc/httpd/conf.d/目录下创建virtualhost.conf文件,配置以下内容


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_04

 

在虚拟主机配置文件中定义的目录,必须要事先存在哟!否则会报错


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_05

 

在各个虚拟主机的根目录下面创建index.html的主页文件


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_06

配置完成后,验证配置文件是否存在错误,显示正常。


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_07

这个时候,大家很容易看到第一条信息,其实那并不是错误,提示不能解析到服务器的FQDN,用localhost.localdomain代替主机名称,如果你不想让服务器在提示这种信息,可以在配置文件/etc/httpd/conf/httpd.conf中,按照以下方式修改,修改完成后,验证,正常。

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_08

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_09

 

启动httpd服务,确保服务正常启动

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_10

 

验证:

要想域名生效,必须互联网能够解析这两个域名,由于我并没有去注册这两个域名,那如何验证部署是否成功呢?

可以在客户机的hosts文件里面,添加自定义的主机映射关系,本案例以CentOS7为客户端,进行演示:

修改/etc/hosts文件,添加以下内容:


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_11

利用curl命令,验证服务器虚拟主机是否配置正确


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_12


成功获取网站主页内容!让我们看看服务器端是否产生了日志

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_13


至此,httpd2.2版本实现多虚拟主机配置完成!


实现httpd状态页的访问控制:

    要想实现通过www1/server-status提供状态信息,且仅允许tom用户访问;那么这个/server-status在哪里呢?那好吧,咱们先看一下主配置文件/etc/httpd/conf/httpd.conf

 

通过搜索 server-status,找到这个关键位置


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_14 

那咱们就把这段代码复制到建立的virtualhost.conf文件里面吧,但是那个tom用户从哪里蹦出来的呢?难道是登录服务器的系统用户tom账号吗?oh ,,,你错了。这个tom账号,是用httpd程序里面自带的工具生成的,只允许登录web页面用的,是专属于这个服务的虚拟用户。这个工具就是htpasswd命令

 

那我们先生成一个叫做tom的账号吧,顺便在建立一个叫做jerry的账号吧。

Tom的账号密码均为tom

Jerry的账号密码均为jerry

账号,密码以md5加密方式,存储到/etc/httpd/conf.d/.htpasswd这个隐藏文件,为什么要隐藏,主要是怕别人偷看啦。哈哈哈 

htpasswd –c –m –b /etc/httpd/conf.d/.htpasswd tom tom

htpasswd –m –b /etc/httpd/conf.d/.htpasswd jerry jerry

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_15

 

好了,账号tom有了,那么virtualhost.conf文件应该怎么修改呢?如果你不会,那就照着我的方法来吧。

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_16

修改完配置文件,重启httpd进程,如何验证成功?那用我的电脑真机来验证一下吧,

 

首先验证一下,www1的主页面是否正常

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_17

 

很好,没有问题,那在验证一下/server-status页面吧

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_18

 

很好,出现验证页面了,那么先利用jerry账号验证一下,由于认证不允许jerry账号访问,所以一直提示登录的这个页面,那在试一下tom账号。

 

哇,验证成功,显示出了status页面。

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_19

 

通过认证,实现用户对httpd状态页的权限控制

 

配置网站禁止某IP访问:

    这个问题是虚拟主机www2.ipsecx.com不允许172.16.254.180主机访问,那还是继续修改配置文件;

仅在虚拟主机的www2的配置参数中修改,修改完成之后,重启httpd服务

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_20

登录172.16.254.180主机,利用curl命令测试一下,

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_21

 

对虚拟主机www1.ipsecx.com,可以访问,但是对www2.ipsecx.com来说,http报文head信息,响应报文状态码403,禁止客户端访问了!正常访问的状态码是200.

 

至此,实现了拒绝某用户对网站的访问权限功能


配置网站的https服务:

要想虚拟主机www2.ipsecx.com提供https服务,那么httpd服务需要装载一个mod_ssl模块,默认未安装。

 

服务器安装mod_ssl模块

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_22

 

安装完成后,我们可以看到此模块已经在/etc/httpd/conf.d目录下,生成一个ssl.conf的配置文件


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_23

 

打开配置文件/etc/httpd/conf.d/ssl.conf文件,在这个文件里面需要修改的配置项,仅有两项,如下图:

                    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_24

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_25

第一项:填写服务器从CA申请的证书文件路径,

第二项:填写服务器的私钥文件路径

 

下面,小编将演示一下如何搭建私有CA,并且服务器从CA申请证书的操作步骤。

 

  1. 搭建私有CA机构

    创建必要文件

    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_26

     

    生成CA机构私钥

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_27

         生成自签证书

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_28      

到此私有CA搭建基本完成,下面服务器开始申请证书:

  1. web服务器端创建私钥文件,并生成申请证书


     分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_29

 

3.web服务器生成的证书发送给CA服务器

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_30

 

CA服务器签发web网站证书


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_31


查看证书:

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_32

CA服务器签发的证书,发送给web服务器,放置在某特定目录

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_33

 

箭头指示的是证书文件,画线的文件是私钥文件,这两个文件路径要记住,因为要修改到/etc/httpd/conf.d/ssl.conf的配置文件中

 

修改/etc/httpd/conf.d/ssl.conf配置文件

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_34

        分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_35              

修改完成之后,重启httpd服务,查看服务器监听端口

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_36

利用浏览器验证https服务是否开启


分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_37

 

点击继续浏览此网站

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_38

 

至此,配置完成网站提供https功能

 

======================================================================================

======================================================================================


对于httpd-2.4 版本,创建虚拟主机,以及权限定义,如下:

 

分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_39

 

 

测试效果如下:

 

  1. 测试只允许tom账户登录,jerry账户无法登陆(创建账号密码的步骤,同上面)

     

    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_40

    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_41

 

  1. 测试,禁止172.16.254.180访问虚拟主机www2.ipsecx.com,其他主机可以访问。

     

    分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_42

    在这里可以看到http报文的响应状态码是403,禁止访问。

    在看一下其他IP地址的客户端的访问请求,如下图所示,访问一切正常!

     分别使用httpd-2.2和httpd-2.4实现多虚拟主机配置和https功能_CentOS httpd2.2 http_43

     

     

     

由于作者水平有限,本文错漏缺点在所难免,希望读者批评指正。谢谢!