CentOS6服务管理之WEB-httpd用户认证控制和https在httpd上的实现

通过上面两篇博客

CentOS6服务管理之WEB-http协议详解

CentOS6服务管理之WEB-Apache httpd配置文件详解

我们学习了Apache httpd的基础知识,下面我们就可以通过设置用户认证和实现https加密传输的实验来配置httpd了,下面是本次实验的要求:

实验环境:

CentOS release6.6(Final)   1台

Windows XP             1台

IP地址:

172.16.31.31      www.stu31.com        web服务器端

172.16.31.188     Windows XP           测试客户端

Windows XP 安装了chrom浏览器和系统自带的IE浏览器

软件版本:

httpd-2.2.15-39.el6.centos.x86_64

实验要求:

1、建立httpd服务器,要求:

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

(a)www1.stu31.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;

(b)www2.stu31.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;

(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;

(d)通过www1.stu31.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);

2、为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(stu31);

(2)设置部门为tech,主机名为www2.stu31.com,邮箱为[email protected];

实验过程:

我们就通过rpm包的方式来安装httpd了,安装过程很简单;重要的是配置:

[[email protected] ~]# rpm-qa httpd

httpd-2.2.15-39.el6.centos.x86_64

1、建立httpd服务器(基于编译的方式进行),要求:

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

(a)www1.stu31.com,页面文件目录为/web/vhosts/www1;错误日志为/var/log/httpd/www1.err,访问日志为/var/log/httpd/www1.access;

(b)www2.stu31.com,页面文件目录为/web/vhosts/www2;错误日志为/var/log/httpd/www2.err,访问日志为/var/log/httpd/www2.access;

(c)为两个虚拟主机建立各自的主页文件index.html,内容分别为其对应的主机名;

(d)通过www1.stu31.com/server-status输出httpd工作状态相关信息,且只允许提供帐号密码才能访问(status:status);

一.  配置DNS服务器,为客户端提供域名解析服务。

主配置文件配置:

[[email protected] ~]# cat/etc/named.conf

//

// named.conf

//

// Provided by RedHat bind package to configure the ISC BIND named(8) DNS

// server as acaching only nameserver (as a localhost DNS resolver only).

//

// See/usr/share/doc/bind*/sample/ for example named configuration files.

//

options {

//      listen-on port 53 { 127.0.0.1; };

//      listen-on-v6 port 53 { ::1; };

directory      "/var/named";

dump-file      "/var/named/data/cache_dump.db";

statistics-file"/var/named/data/named_stats.txt";

memstatistics-file"/var/named/data/named_mem_stats.txt";

//      allow-query     { localhost; };

recursion yes;

//      dnssec-enable yes;

//      dnssec-validation yes;

//      dnssec-lookaside auto;

/* Path to ISC DLV key */

/*bindkeys-file"/etc/named.iscdlv.key";

managed-keys-directory"/var/named/dynamic";

*/

};

logging {

channel default_debug {

file"data/named.run";

severity dynamic;

};

};

zone "."IN {

type hint;

file "named.ca";

};

include"/etc/named.rfc1912.zones";

include "/etc/named.root.key";

区域文件配置,加入stu31.com这个区域:

[[email protected]]# cat /etc/named.rfc1912.zones
zone"stu31.com" IN {
        type master;
        file "stu31.com.zone";
};

区域解析库文件配置:

[[email protected] named]#cat stu31.com.zone
$TTL 600
$ORIGIN stu31.com.
@       IN     SOA     ns1.stu31.com.  root.stu31.com. (
                        2014121301
                        1H
                        5M
                        3D
                        6H)
        IN     NS      ns1.stu31.com.
        IN     MX  5   mail
ns1     IN     A       172.16.31.31
www     IN     A       172.16.31.31
www1    IN     A       172.16.31.31
www2    IN     A       172.16.31.31
mail    IN     A       172.16.31.31
pop3    IN     CNAME   mail
iamp4   IN     CNAME   mail

测试DNS服务器可用性:

二.Httpd服务器配置

创建网站目录及加入测试网页:

[[email protected] named]#mkdir -pv /web/vhosts/www1
[[email protected] named]#vim /web/vhosts/www1/index.html
www1.stu31.com
[[email protected] named]#mkdir -pv /web/vhosts/www2
[[email protected] named]#vim /web/vhosts/www2/index.html
www2.stu31.com

配置httpd的主配置文件/etc/httpd/conf/httpd.conf,我列出了主要配置:

[[email protected] named]#vim /etc/httpd/conf/httpd.conf

#DocumentRoot"/var/www/html"

NameVirtualHost 172.16.31.31:80

<VirtualHost172.16.31.31:80>

DocumentRoot /web/vhosts/www1

ServerName www1.stu31.com

ErrorLog "/var/log/httpd/www1.err"

CustomLog"/var/log/httpd/www1.access" combind

<Location/server-status>

SetHandler server-status

Authtype   Basic

Authname   "status area"

AuthUserFile  /etc/httpd/users/.htpasswd

Require valid-user

</Location>

</VirtualHost>

<VirtualHost172.16.31.31:80>

DocumentRoot /web/vhosts/www2

ServerName www2.stu31.com

ErrorLog"/var/log/httpd/www2.err"

CustomLog"/var/log/httpd/www2.access" combind

</VirtualHost>

上面蓝色部分配置是用户认证配置,下面我们需要检查语法:

[[email protected] named]#httpd -t
Syntax OK

针对用户认证配置,我们需要建立用户访问的认证用户文件:

[[email protected] named]#mkdir /etc/httpd/users
[[email protected] named]# htpasswd-c -m /etc/httpd/users/.htpasswd status
New password:
Re-type newpassword:
Adding passwordfor user status

完成后我们就可以启动httpd服务,来进行用户认证测试:

[[email protected] named]#service httpd restart
Stoppinghttpd:                                           [FAILED]
Startinghttpd:                                            [  OK  ]

三.用户认证测试:

输入用户名和密码认证:

可以查看apache 服务器状态信息:

2、为上面的第2个虚拟主机提供https服务,使得用户可以通过https安全的访问此web站点;

(1)要求使用证书认证,证书中要求使用的国家(CN)、州(Henan)、城市(Zhengzhou)和组织(stu31)

(2)设置部门为tech,主机名为www2.stu31.com,邮件为[email protected]

HTTPS加密传输配置过程

(a) 建立私有CA认证服务器

[[email protected] named]# cd /etc/pki/CA/

#构建CA自有私钥文件

[[email protected] CA]# (umask 077; openssl genrsa-out private/cakey.pem 2048)  
Generating RSA private key, 2048 bit longmodulus
...............+++
...........+++
e is 65537 (0x10001)

#生成自签署证书

[[email protected] CA]# openssl req -new -x509 -keyprivate/cakey.pem -out cacert.pem -days 3560
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what iscalled a Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter ‘.‘, the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:stu31
Organizational Unit Name (eg, section)[]:tech
Common Name (eg, your name or your server‘shostname) []:www2.stu31.com
Email Address []:[email protected]

#生成索引数据库文件

[[email protected] CA]# touch index.txt

#序列号文件创建

[[email protected] CA]# touch serial
[[email protected] CA]# echo 01 >serial
[[email protected] CA]# ls
cacert.pem certs  crl  index.txt newcerts  private  serial

CA服务器建立完毕。

(b) 为httpd服务器生成证书

#httpd服务器生成私钥

[[email protected] CA]# mkdir /etc/httpd/certs
[[email protected] CA]# cd /etc/httpd/certs
[[email protected] certs]# (umask 077; opensslgenrsa -out httpd.key 2048)
Generating RSA private key, 2048 bit longmodulus
...........................................................................................................................................................................................+++
.............................................................................................+++
e is 65537 (0x10001)

#生成证书签署请求文件

[[email protected] certs]# openssl req -new -keyhttpd.key -out httpd.csr -days 3650
You are about to be asked to enterinformation that will be incorporated
into your certificate request.
What you are about to enter is what iscalled a Distinguished Name or a DN.
There are quite a few fields but you canleave some blank
For some fields there will be a defaultvalue,
If you enter ‘.‘, the field will be leftblank.
-----
Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:HA
Locality Name (eg, city) [Default City]:ZZ
Organization Name (eg, company) [DefaultCompany Ltd]:stu31
Organizational Unit Name (eg, section)[]:tech
Common Name (eg, your name or your server‘shostname) []:www2.stu31.com
Email Address []:[email protected]
 
Please enter the following ‘extra‘attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:

(c) 配置httpd服务使用数字证书

#CA服务器签署请求证书

[[email protected] certs]# ls
httpd.csr httpd.key
[[email protected] certs]# openssl ca -in httpd.csr-out httpd.crt -days 3650
Using configuration from /etc/pki/tls/openssl.cnf
Check that the request matches thesignature
Signature ok
Certificate Details:
       Serial Number: 1 (0x1)
       Validity
           Not Before: Dec 13 05:30:19 2014 GMT
           Not After : Dec 10 05:30:19 2024 GMT
       Subject:
            countryName               = CN
           stateOrProvinceName       = HA
           organizationName          = stu31
           organizationalUnitName    = tech
           commonName                =www2.stu31.com
           emailAddress              = [email protected]
       X509v3 extensions:
           X509v3 Basic Constraints:
                CA:FALSE
           Netscape Comment:
                OpenSSL Generated Certificate
           X509v3 Subject Key Identifier:
               9A:84:73:63:C0:82:7F:45:21:9C:BA:2B:4C:FB:C3:87:7C:BA:63:58
           X509v3 Authority Key Identifier:
               keyid:1C:57:C2:12:E4:D3:A6:4F:9A:7A:C6:53:7F:5B:7B:86:1E:75:0D:57
 
Certificate is to be certified until Dec 1005:30:19 2024 GMT (3650 days)
Sign the certificate? [y/n]:y
 
 
1 out of 1 certificate requests certified,commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

(d)配置https服务器加密传输

针对Apache httpd软件默认配置中:

httpd软件默认没有使用ssl模块,需要安装相应的模块程序包

[[email protected] certs]# yum install mod_ssl -y
[[email protected] ~]# rpm -qa mod_ssl
mod_ssl-2.2.15-39.el6.centos.x86_64

安装之后会在/etc/httpd/conf.d/目录下生成ssl.conf的配置文件,我们配置https就在此文件中配置:

[[email protected] conf.d]# ls
mod_dnssd.conf  README ssl.conf  welcome.conf

配置ssl.conf文件,重要配置都在下面文件中了:

[[email protected] conf.d]#vim  /etc/httpd/conf.d/ssl.conf
LoadModule ssl_module modules/mod_ssl.so
Listen 443
<VirtualHost 172.16.31.31:443>
         DocumentRoot"/web/vhosts/www2"
         ServerNamewww2.stu31.com:443
         SSLEngineon
         SSLCertificateFile/etc/httpd/certs/httpd.crt
         SSLCertificateKeyFile/etc/httpd/certs/httpd.key
</VirtualHost>

测试文件语法:

[[email protected] conf.d]# httpd -t
Syntax OK

重启httpd服务

[[email protected] conf.d]# service httpd restart
Stopping httpd:                                           [  OK  ]
Starting httpd:                                           [  OK  ]

查看服务监听端口:

[[email protected] conf.d]# ss -tunl |grep 443
tcp   LISTEN     0      128                   :::443                  :::*

到windows端进行测试:

先将CA服务器的证书安装进windows中;将cacert.pem发送到windows中,改名cacert.crt,安装证书:

使用chrom浏览器进行测试

实验完成!(*^__^*)

 

时间: 2024-10-20 15:01:42

CentOS6服务管理之WEB-httpd用户认证控制和https在httpd上的实现的相关文章

CentOS6服务管理之DNS-主从DNS服务器的搭建

接上一篇:CentOS6服务管理之DNS-本地DNS服务器的搭建 下面我们来搭建主从DNS服务器 实验环境: CentOS release 6.6(Final)  两台 IP地址: 172.16.31.3      DNS1        主DNS服务器端 172.16.31.4      DNS2        从DNS服务器端 我们要架设一个DNS服务器一般需要下面三个软件程序包: bind-libs.x86_64      #提供库文件 bind-utils.x86_64     #提供工

CentOS6服务管理之WEB-Apache httpd配置文件详解

Apache HTTP Server(简称Apache)是Apache软件基金会的一个开放源代码的网页服务器,可以在大多数电脑操作系统中运行,由于其跨平台和安全性.被广泛使用,是最流行的Web服务器端软件之一.它快速.可靠并且可通过简单的API扩充,将Perl/Python等解释器编译到服务器中. 其程序包是httpd: [[email protected] ~]# rpm -qa httpd httpd-2.2.15-39.el6.centos.x86_64 httpd是yum安装或者是rpm

Tornado web.authenticated 用户认证浅析

在Web服务中会有用户登录后的一系列操作, 如果一个客户端的http请求要求是用户登录后才能做得操作, 那么 Web服务器接收请求时需要判断该请求里带的数据是否有用户认证的信息. 使用Tornado框架开发Web服务, 框架里提供了tornado.web.authenticated的 decorator 的辅助开发者做用户登录认证, 即开发者在实现一个 handler(对应一个url资源, 继承于tornado.web.RequestHandler)时,该 url的资源操作需要有用户认证或者登录

httpd用户认证,单个文件的用户认证,域名跳转,记录访问日志

针对httpd用户加验证 修改虚拟主机配置文件. vim /usr/local/apache2.4/conf/extra/httpd-vhosts.conf //把123.com那个虚拟主机编辑成如下内容<VirtualHost *:80>DocumentRoot "/data/wwwroot/www.123.com"ServerName www.123.com<Directory /data/wwwroot/www.123.com> //指定认证的目录Allo

CentOS6服务管理之DNS-RNDC管理DNS的实现

RNDC管理DNS的实现 rndc:(Remote NameDomain Controller)基于套接字与named服务通信,控制named服务完成特定操作.是指通过bind 软件引进的远程控制通道,代替unix 信号来控制 named 进程,可以用来对配置进行重新载入,是一款安全软件. rndc 通过一个 TCP 连接与域名服务器通信,发送经过数字签名认证的命令.在当前版本的rndc 和 named 中,唯一支持的认证算法是 HMAC-MD5,在连接的两端使用共享密钥.它为命令请求和名字服务

CentOS6服务管理之WEB-http协议详解

超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网上应用最为广泛的一种网络协议.设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法.通过HTTP或者HTTPS协议请求的资源由统一资源标识符(Uniform Resource Identifiers,URI)来标识.收录在RFC 2616中. 注: 1.Request For Comments(RFC),是一系列以编号排定的文件.文件收集了有关互联网相关信息,以及UNIX和互联网社区

CentOS6服务管理之DNS-源码安装Bind-9.10

源码安装bind 1.准备源码包: bind官网:http://www.isc.org/downloads/bind/ [[email protected] ~]#ll -rw-r--r--   1 root root 8356463 Dec 11 11:16 bind-9.10.1-P1.tar.gz 2.编译环境正常,未安装rpm的bind程序包 [[email protected] ~]#yumgroupinstall Development tools [[email protected

CentOS6服务管理之DNS-本地缓存DNS服务器

实验环境: CentOS release 6.6(Final)  两台 IP地址: 172.16.31.3      DNS1 172.16.31.4      DNS2 我们要架设一个本地dns缓存服务器一般需要下面三个软件: bind-libs.x86_64      #提供库文件 bind-utils.x86_64     #提供工具包 bind.x86_64           #提供主程序包 确认安装: [[email protected] ~]# rpm -qa bind-libs

Linux -- Web服务器配置之用户认证;Perl语言解释器的安装

一.用户认证 用户认证在网络安全中是非常重要的技术之一,它是保护网络系统资源的第一道防线.用户认证控制着所有登录并检查访问用户的合法性,其目标是仅让合法用户以合法的权限访问网络系统的资源.当用户第一次访问了启用用户认证目录下的任何文件,浏览器会显示一个对话框,要求输入正确的登录用户名和口令进行用户身份的确认.若是合法用户,则显示所访问的文件内容.此后访问该目录的每个文件时,浏览器会自动送出用户名和密码,不用再输入了,直到关闭浏览器为止.用户认证功能起到了一个屏障的作用,限制非授权用户非法访问一些