練習題:分別使用httpd-2.2和httpd-2.4實現;
1、建立httpd服務,要求:
(1) 提供兩個基于名稱的虛擬主機:
www1.stuX.com,頁面文件目錄為/web/vhosts/www1;錯誤日志為/var/log/httpd/www1/error_log,訪問日志為/var/log/httpd/www1/access_log;
www2.stuX.com,頁面文件目錄為/web/vhosts/www2;錯誤日志為/var/log/httpd/www2/error_log,訪問日志為/var/log/httpd/www2/access_log;
(2) 通過www1.stuX.com/server-status輸出其狀態信息,且要求只允許提供賬號的用戶訪問;
(3) www1不允許192.168.1.0/24網絡中的主機訪問;
2、為上面的第2個虛擬主機提供https服務,使得用戶可以通過https安全的訪問此web站點;
(1) 要求使用證書認證,證書中要求使用國家(CN),州(Beijing),城市(Beijing),組織為(MageEdu);
(2) 設置部門為Ops, 主機名為www2.stuX.com;
首先,分析題目,我們要提供一臺機器上實現兩個https那就必須基于兩個ip來實現,也就是說,要有兩個網卡,同時,我們做實驗,那就得提供一個CA。
前提準備:
centos7:http服務(ip:172.16.253.111/16,172.16.200.200/16)
centos6:CA證書機構(172.16.252.194/16 )
1、我們首先搭建一個私有CA,然把給httpd服務簽一個證書,然后把CA的證書給導入到要訪問httpd服務器的客戶端上。
(1)創建所需要的文件/CA 目錄下
touch index.txt
touch serial
echo 01 > serial
(2)CA自簽證書:
(3)、為自己創建密鑰:
(umask 077; openssl genrsa -out private/cakey.pem 2048)
2、openssl req -new -x509 -key /etc/pki/CA/priviate/cakey.pem -days 3600 -out /etc/pki/CA/cacert.pem
(4)發證
用到證書http服務的主機生成證書請求:
(umask 077; openssl genrsa -out /etc/httpd/ssl/httpd.key 2048)
openssl req -new -key /etc/httpd/ssl/httpd.key -out /etc/httpd/ssl/httpd.csr -days 365
scp /etc/httpd/ssl/httpd.csr root@172.16.252.194:/tmp //傳輸證書請求
把請求文件傳輸給CA
CA簽署證書,并將證書發還給請求者:
openssl ca -in /tmp/httpd.csr -out /etc/pki/CA/certs/httpd.crt -days 365
查看證書中的信息:
openssl x509 -in /etc/pki/CA/certs/httpd.crt -noout -text|-subject|-serial
3、接下來就搭建httpd服務:
yum install httpd mod_ssl //httpd的ssl是以模塊的方式提供的
mkdir /web/vhosts/www{1,2} -pv //創建文件目錄
htpasswd -b -c /etc/httpd/ssl/.htpasswd x y //給x用戶y密碼,-b 沒有這文件自動創建
#NameVirtualhost *:80 //2.2版本的httpd上添加此項內容,2.4的版本就不用添加此項,服務會自動識別
<VirtualHost 172.16.200.200:80> //這里是基于IP地址來做的虛擬主機
ServerName www1.stu19.com //服務器的名稱
DocumentRoot “/web/vhosts/www1” //此虛擬機的物理地址
<Directory “/web/vhosts/www1”> //在2.4的版本中,是要顯示的給目錄施加權限,要不然是拒絕訪問
Options None //目錄訪問權限的指令
Allowoverride None //本目錄的權限設置不允許被目錄下的.htaccess配置文件的內容覆蓋
<RequireAll> //在2.4的版本中需要這寫來指定給予哪些用戶訪問的權限
require all granted //給予所有人權限
# require not ip 172.16.251.150 //不允許這個ip地址的訪問
</RequireAll> //標簽結尾符
</Directory> //目錄標簽結尾符
<Location /server-status> //允許mod_status模塊產生狀態報告
SetHandler server-status //打開內鍵處理器
Allowoverride None
AuthType Basic //添加認證方式,以basic的方式來進行用戶權限控制
AuthName “Pleas input the user & passwd,OK?” //提示信息
AuthUserFile “/etc/httpd/ssl/.htpasswd” //用戶帳號和密碼存放的文件位置
require valid-user //允許文件中的所有用戶訪問
</Location> //標簽結尾
CustomLog logs/www1/access_log common //定義正常訪問日志的格式和位置,logs是相對位置
ErrorLog logs/www1/error_log //錯誤日志位置
</VirtualHost> //標簽結尾
修改/etc/httpd/conf.d/ssl.conf文件,將:
SSLCertificateKeyFile /etc/httpd/ssl/httpd.key
SSLCertificateFile /etc/httpd/ssl/httpd.crt
這兩個選項一定要改成你的證書和密鑰的位置,這樣才能以https的方式來訪問。
還剩一個操作,我就不做了。同理,只需要在多復制一個ssl.conf文件出來對應www2.stu19.com,并且在去簽一個www2.stu19.com的證書,并對應虛擬主機的配置就可以的。(中間遇到一個坑,最新的chrome5.8是不支持SSLv3的,所以,用老的瀏覽器,或者別的瀏覽器去做https)
原創文章,作者:dance_man,如若轉載,請注明出處:http://www.www58058.com/77549