httpd-2.2项目(虚拟主机、用户认证、私有网络安全实现)

实验环境

  • 提供两个基于名称的虚拟主机

    • wp.mykernel.cn,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;
    • www.mykernel.cn, 页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;
    • 为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;
    • 通过wp.mykernel.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);
  • 为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;
    • 要求使用证书认证,证书中要求使用的国家(CN)、州(ChengDu)、城市(ChengDu)和组织(MageEdu);
    • 设置部门为Ops,主机名为www.mykernel.cn,邮件为[email protected];

基本配置<172.16.100.1>

  • 配置yum源

      * 挂载光盘
      # mkdir /media/cdrom
      # mount -r /dev/cdrom /media/cdrom
      * yum仓库配置
      # mv /etc/yum.repos.d/CentOS-Base.repo{,.bak}
      # vim CentOS-Base.repo
          [C6-media]
          name=Base repo for CentOS 6
          failovermethod=priority
          baseurl=file:///media/cdrom
          gpgcheck=1
          gpgkey=file:///media/cdrom/RPM-GPG-KEY-CentOS-6
          enabled=1
  • 安装httpd-2.2程序
      # yum -y install httpd
  • 启动服务<172.16.100.1>
      # service httpd start
  • 支持纯文本协议客户端工具访问测试
      安装
          # yum -y install curl elinks telnet
      测试
          # curl -I localhost
          # elinks --dump http://localhost
    
          # telnet 172.16.100.1 80
          GET / HTTP/1.1
          Host: 172.16.100.1

配置虚拟主机

  • 准备DocumentRoot,及对应的index.html文件<172.16.100.1>

      # install -d /web/vhosts/www{1,2}/
      # echo "wp.mykernel.cn" > /web/vhosts/www1/index.html
      # echo "www.mykernel.cn" > /web/vhosts/www2/index.html
  • 修改/etc/httpd/conf/httpd.conf配置文件<172.16.100.1>
      备份配置文件:
          # cp -v /etc/httpd/conf/httpd.conf{,.bak}
    
      在配置文件中修改并添加如下内容:
          # vim /etc/httpd/conf/httpd.conf 
              #DocumentRoot "/var/www/html"
              NameVirtualHost *:80
              <VirtualHost *:80>
                 ServerName wp.mykernel.cn
                 DocumentRoot /web/vhosts/www1
                 ErrorLog logs/wp.err
                 CustomLog logs/wp.access combined
                 <Location /server-status>
                     SetHandler server-status
                     Order allow,deny
                     allow from all
                     AuthType Basic
                     AuthName "Secure Type/Domain"
                     AuthUserFile "conf.d/.htpasswd"
                     Require user status
                 </Location>
              </VirtualHost>
              <VirtualHost *:80>
                 ServerName www.mykernel.cn
                 DocumentRoot /web/vhosts/www2
                 ErrorLog logs/www.err
                 CustomLog logs/www.access combined
              </VirtualHost>
    
      退出配置文件后:
          # httpd -t
          # htpasswd -c -s /etc/httpd/conf.d/.htpasswd status 
          # service httpd reload
  • 在windows主机中测试,虚拟账号是否能正常登陆
    • 手动添加解析条目

      进入此文件C:\Windows\System32\drivers\etc,添加如下条目
      
      172.16.100.1        wp.mykernel.cn
      172.16.100.1        www.mykernel.cn
    • 在浏览器中,输入URL,测试结果
      http://wp.mykernel.cn
      http://www.mykernel.cn
      
      http://wp.mykernel.cn/server-status
      账号:status,密码:status
    • 图片 

mod_ssl模块,实现加密通信

  • 自建CA<172.16.100.2>

      # dir=/etc/pki/CA
      # touch $dir/index.txt
      # echo "01" > $dir/serial
      # (umask 077;openssl genrsa -out $dir/private/cakey.pem 2048)
      # openssl req -new -x509 -key $dir/private/cakey.pem -out $dir/cacert.pem -days 7300
          (CN, Beijing, Beijing, MageEdu, Ops, ca.magedu.com, [email protected])
  • 生成请求<172.16.100.1>
      # install -d /etc/httpd/ssl && cd /etc/httpd/ssl
      # (umask 077;openssl genrsa -out httpd.key 2048)
      # openssl req -new -key httpd.key -out httpd.csr -days 365
          (CN, Beijing, Beijing, MageEdu, Ops, www.mykernel.cn, [email protected])
  • 提交请求PUSH<172.16.100.1>
      # scp httpd.csr [email protected]:/tmp
  • 验证并颁发证书<172.16.100.2>
      # openssl ca -in /tmp/httpd.csr -out $dir/certs/www.mykernel.cn.crt -days 365
  • 获取证书PULL<172.16.100.1>
      # scp [email protected]:/etc/pki/CA/certs/www.mykernel.cn.crt .
  • 安装mod_ssl模块<172.16.100.1>
      # yum -y install mod_ssl
  • 修改/etc/httpd/conf.d/ssl.conf配置<172.16.100.1>
      备份配置文件:
          # cp -v /etc/httpd/conf.d/ssl.conf{,.bak}
      修改配置文件:
          # vim /etc/httpd/conf.d/ssl.conf
              <VirtualHost *:443>
              DocumentRoot "/web/vhosts/www2"
              ServerName www.mykernel.cn
              SSLEngine on
              SSLCertificateFile /etc/httpd/ssl/www.mykernel.cn.crt
              SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
      退出配置文件:
          # httpd -t
          # service httpd restart
      查看443端是否处于监听状态
          # ss -tnl
  • 测试是否能正常访问
    • Linux主机测试<172.16.100.2>

      添加解析记录:
      # vim /etc/hosts
        172.16.100.1  www.mykernel.cn
      
      # openssl s_client -connect www.mykernel.cn:443 -CAfile /etc/pki/CA/cacert.pem
      New, TLSv1.2/SSLv3
    • Windows主机测试
        * 将172.16.100.2中的公钥,导入至Windows中的受信任的证书颁发机构列表中
        访问https://www.mykernel.cn即可

有问题反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

  • 邮件:[email protected]
  • QQ: 2192383945

感激

本文由我表哥引导制作,在此留下QQ,博客

时间: 2024-09-29 05:44:40

httpd-2.2项目(虚拟主机、用户认证、私有网络安全实现)的相关文章

httpd2.2实现虚拟主机+证书认证+DNS

httpd2.2实现虚拟主机+证书认证+DNS 目的: 1. 在一台虚拟机上安装httpd2.2,在上面提供两个基于名称的虚拟主机: (1)www.X.com,页面文件目录为/web/vhosts/x:错误日志为/var/log/httpd/x.err,访问日志为/var/log/httpd/x.access:      (2)www.Y.com,页面文件目录为/web/vhosts/y:错误日志为/var/log/httpd/y.err,访问日志为/var/log/httpd/y.access

apache2 httpd 基于域名的虚拟主机配置 for centos6X 和debian-8

全系统虚拟主机: for debian 系统的apache2 域名 虚拟主机 for centos6 系统的 httpd 基于玉米的虚拟主机

httpd高级配置(虚拟主机,https,访问控制)

一下的实验环境都是在httpd-2.4上完成 虚拟主机的配置 虚拟主机就是在同一台物理机上,部署多个站点.虚拟主机的实现方式有3种:基于端口,基于IP地址,基于主机名.由于浏览器的默认访问端口是80,以及目前ipv4的紧缺,所以目前应用最广泛的是基于主机名的虚拟主机.基于端口的虚拟主机通过监听的端口不同,区分对不同主机的访问.基于IP地址的虚拟主机通过访问的IP地址的不同来区分.基于主机名的虚拟主机是通过http请求报文的host首部来区分不同的请求(同一个物理机上的虚拟主机,IP地址相同,主机

Nginx安装,默认虚拟主机以及认证和重定向

Nginx安装 1.首先下载安装包 [[email protected] src]# wget http://nginx.org/download/nginx-1.12.2.tar.gz --2018-03-14 00:46:57-- http://nginx.org/download/nginx-1.12.2.tar.gz 正在解析主机 nginx.org (nginx.org)... 206.251.255.63, 95.211.80.227, 2606:7100:1:69::3f, ...

httpd基于域名的虚拟主机

搭建基于域名的网站虚拟主机. web虚拟主机服务器 centos6.5 192.168.200.202 搭建基于域名的虚拟主机 dns.ftp服务器 centos6.5 192.168.200.254 提供DNS解析,ftp下载 1:在dns服务器上设置dns解析: 修改dns的配置文件,设置区域文件名称和所在位置. [[email protected] ~]# cd /var/named/chroot/etc/ [[email protected] etc]# vi named.conf  [

httpd配置三种虚拟主机

.在httpd配置完成的情况下进行一下操作 #提前做一个软连接 [[email protected] ~]# echo "export PATH=/usr/local/apachectl/bin:$PATH" > /etc/profile.d/httpd.sh [[email protected] ~]# . /etc/profile.d/httpd.sh [[email protected] ~]# apachectl start #设置是否能访问 [[email protec

httpd虚拟主机配置及基于用户的访问控制

本文旨在实践httpd虚拟主机及基于用户的访问控制 知识储备 虚拟主机有三种实现方案: 基于ip: 为每个虚拟主机准备至少一个独有ip地址: 基于port: 为每个虚拟主机使用至少一个独有的port: 基于FQDN: 为每个虚拟主机使用至少一个FQDN: 注意:一般虚拟机不要与中心主机混用:因此,要使用虚拟主机,得先禁用'main'主机: 禁用方法:注释中心主机的DocumentRoot指令即可: 基于用户的访问控制: http协议认证方式2种 basic:明文 digest:消息摘要认证 本次

apache工作机制,压缩,虚拟主机,用户认证

从服务器角度一次web资源请求具体过程 建立连接:tcp三次握手 接收请求 处理请求 访问资源 构建响应报文 发送响应 记录日志 =================================================================== httpd工作模型 阻塞模型,单进程模型.缺点:每次只能响应一个请求,对于现代的高并发无满足 只有一个进程,每次只能响应一个用户的请求 . 多进程模型,缺点:不停的创建和收回进程,进程间切换也耗费时间. httpd监听在套接字上,每当

Apache虚拟目录、用户认证、基于端口/IP/域名的虚拟主机、SSL

环境配置: 配置DNS以便域名解析 安装Bind软件包. yum install -y bind 2. 修改Bind配置文件. vim /etc/named.conf listen-on port 53 { 192.168.200.101; }; allow-query { any; }; vim /etc/named.rfc1912.zones zone "a.com" IN { type master; file "a.com.localhost"; allow