實驗需求
(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服務
# 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)
---