首页 » Linux » CentOS » 搭建httpd-2.2服务,设置访问认证及https的一个示例

搭建httpd-2.2服务,设置访问认证及https的一个示例

 

CentOS6上搭建httpd-2.2服务示例要求:

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

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

(3)www2不允许192.168.0.1/24网络中任意主机访问;

(4)为www2虚拟主机提供https服务;

实现过程:

第一个问题:

1、确定yum源配置正确,安装httpd-2.2服务。

#yum -y install httpd

2、创建两个基于名称的虚拟主机www1和www2,并创建www1和www2的目录(www1和www2的目录必须要在根下创建,默认根在/var/www下)。

#mkdir -pv /var/www/www{1,2}

#vim /etc/httpd/conf.d/vhost1.conf (这个必须在conf.d目录下并.conf结尾)

<VirtualHost 172.16.63.7:80>
ServerName www1
DocumentRoot /var/www/www1
Errorlog /var/log/httpd/www1.error_log
Customlog /var/log/httpd/www1.access_log combined
</VirtualHost>

#vim /etc/httpd/conf.d/vhost2.conf

<VirtualHost 172.16.63.7:80>
ServerName www2
DocumentRoot /var/www/www2
Errorlog /var/log/httpd/www2.error_log
Customlog /var/log/httpd/www2.access_log combined
</VirtualHost>

Errorlog:错误日志存放位置

Customlog:访问日志存放位置

3、修改httpd配置文件

#vim /etc/httpd/conf/httpd.conf

查找#ServerName www.example.com:80 把这行改为ServerName localhost:80 (去掉#的注释,默认这里的地址改成localhost)

查找#NameVirtualHost *:80 把这行改为NameVirtualHost 172.16.63.66:80 (去掉#的注释,172.16.63.66为CentOS6的IP地址,也就是本机)

注:在vim编辑器里按/输入你要查找的内容,按nN实现向下向上查找

#httpd -t 检查是否有错误,提示Syntax OK表示操作成功。

#service httpd start 启动httpd服务

4、测试

向这两个虚拟主机中分别添加一个主页文件。

#echo this is www1 > /var/www/www1/index.html

#echo this is www2 > /var/www/www2/index.html

如何才能测试这两个主页呢?(当前CentOS6是在VM里运行)

修改主机hosts文件,重定向,添加:

172.16.63.7 www1
172.16.63.7 www2

访问下www1和www2,结果如下

blog1 blog2

第二个问题:

1、修改vhost1.conf文件

#vim /etc/httpd/conf.d/vhost1.conf

<VirtualHost 172.16.63.7:80>
ServerName www1
DocumentRoot /var/www/www1
Errorlog /var/log/httpd/www1.error_log
Customlog /var/log/httpd/www1.access_log combined
<Location "/server-status">
SetHandler server-status
AuthType Basic
AuthName "tom access"
AuthUserFile "/etc/httpd/conf/.htpasswd"
Require user tom
</Location>
</VirtualHost>

2、创建帐号文件

#htpasswd -c -b /etc/httpd/conf/.htpasswd tom 123

提示Adding password for user tom创建成功

#service httpd reload 重载

3、测试

浏览器打开http://www1/server-status 会看到下图提示,此时只允许tom用户登录

blog3

输入用户tom密码123

登录成功页面如下;

blog4

第三个问题:

修改vhost2.conf文件

#vim /etc/httpd/conf.d/vhost2.conf

<VirtualHost 172.16.63.7:80>
ServerName www2
DocumentRoot /var/www/www2
Errorlog /var/log/httpd/www2.error_log
Customlog /var/log/httpd/www2.access_log combined
<Directory "/var/www/www1">
Options None
AllowOverride None
Deny from 192.168.0
</Directory>
</VirtualHost>

#service httpd reload 重载即可

第四个问题:

用另外一台主机创建CA,为这台主机的www2颁发证书

在另外一台主机虚拟主机上运行以下指令:

#(umask 077; openssl genrsa -out /etc/pki/CA/private/cakey.pem 2048) 创建私有CA

#openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem -out /etc/pki/CA/cacert.pem 生成一个自签证书

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:whsir
Organizational Unit Name (eg, section) []:yunwei
Common Name (eg, your name or your server's hostname) []:blog.whsir.com
Email Address []:admin@whsir.com

创建证书用到的数据库文件

#touch /etc/pki/CA/index.txt

#echo 01 > /etc/pki/CA/serial

在www2虚拟主机上运行以下指令:

安装ssl模块

#yum install mod_ssl

#mkdir /etc/httpd/ssl

#(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 1024) 生成私钥

#openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr 生成签署请求

Country Name (2 letter code) [XX]:CN
State or Province Name (full name) []:Beijing
Locality Name (eg, city) [Default City]:Beijing
Organization Name (eg, company) [Default Company Ltd]:whsir
Organizational Unit Name (eg, section) []:yunwei
Common Name (eg, your name or your server's hostname) []:www2
Email Address []:admin@whsir.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []: (这里密码直接回车可以为空)
An optional company name []:

#scp /etc/httpd/ssl/httpd.csr 172.16.63.66:/tmp 将签署请求发送给另外一台主机(172.16.63.66为另外一台主机的IP)

在另外一台主机主机下为www2签署证书:

#openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt 按y确认两次

#scp /etc/pki/CA/certs/httpd.crt 172.16.63.7:/etc/httpd/ssl 将签好的证书发回给www2(172.16.63.7为www2的主机IP)

在www2主机下修改ssl的配置文件:

#vim /etc/httpd/conf.d/ssl.conf

修改以下几行,有#注释的取消

DocumentRoot "/var/www/www2" 根的地址

ServerName www2:443 服务器名

SSLCertificateFile /etc/httpd/ssl/httpd.crt 密钥文件位置

SSLCertificateKeyFile /etc/httpd/ssl/httpd.key 私钥文件位置

#httpd -t 检查是否有错误

#service httpd reload 重载

#ss -lnt 此时查看443端口已经开启

使用curl命令测试https服务:

将另外一台主机的CA发给www2

#scp /etc/pki/CA/cacert.pem 172.16.63.7:/root/

在www2主机上运行

#vim /etc/hosts

添加重定向172.16.63.7 www2

#curl --cacert /root/cacert.pem https://www2

此时可看到返回结果this is www2

使用网页测试https服务:

以上另外一台主机和www2都是在VM里运行,现在我们来用本机测试一下www2这个站点能否通过加密访问!

首先更改本机的hosts文件,windows7的hosts在C:\Windows\System32\drivers\etc目录下

在hosts中添加172.16.63.7 www2

以Firefox浏览器访问https://www2/会提示你的连接并不安全(当然不安全了,因为还没导入证书)

此时我们需要导入证书:

在另外一台主机主机/etc/pki/CA/下,有个cacert.pem文件,将此文件导出到本机(windows7)

打开Firefox-->选项-->高级-->证书-->证书机构-->导入-->导入成功

此时再次访问https://www2结果如下:

blog5

原文链接:搭建httpd-2.2服务,设置访问认证及https的一个示例,转载请注明来源!

0