您好,登錄后才能下訂單哦!
目錄:
(一)了解Apache的基本配置
(二)配置動態頁面:CGI、WSGI、SSI
(三)搭建一個社區動力論壇
(四)配置虛擬主機
(五)配置HTTPS
Apache是世界使用排名第一的Web服務器軟件,它是Apache軟件基金會的一個開放源碼的網頁服務器。它可以運行在幾乎所有廣泛使用的計算機平臺上,由于其跨平臺和安全性被廣泛使用,是最流行的Web服務器軟件之一。它快速、可靠并且可通過簡單的API擴充,將Perl/Python等解釋器編譯到服務器中。
本來它只是用于小型或實驗Internet網絡,后來逐步擴充到各種Unix系統中,尤其對Linux的支持相當完美。Apache有多種產品,可以支持SSL技術,支持多個虛擬主機。Apache是以進程為基礎的結構,進程要比線程消耗更多的系統開支,不太適合于多處理器環境,因此在一個Apache Web站點擴容時,通常是增加服務器或擴充集群節點而不是增加處理器。到目前為止Apache仍然是世界上用的最多的Web服務器,市場占有率達60%左右。世界上很多著名的網站如Amazon、Yahoo!、W3Consortium、Financial Times等都是Apache的產物,它的成功之處主要在于它的源代碼開放、有一支開放的開發隊伍、支持跨平臺的應用(可以運行在幾乎所有的Unix、Windows、Linux系統平臺之上)以及它的可移植性等方面。
(一)了解Apache的基本配置
平常我們通過瀏覽器瀏覽網頁的時候,其實訪問的就是一個Web服務器,搭建了Web服務器后,客戶端通過瀏覽器訪問時之間使用的是http協議(HyperText Transfer Protocol)即超文本傳輸協議,它所使用的端口是80。
(1.1)我們在vms001主機上搭建一個Web服務器,首先使用yum在vms001主機上安裝相關的軟件包。
(1.2)接著將服務重啟一下,并設置開機自動啟動,由于防火墻服務是開啟的,所以還需要設置防火墻允許通過http和https請求。最后進入/etc/httpd/conf/目錄下,編輯httpd.conf文件。
(1.3)包含的文件為conf.modules.d/目錄下的所有后綴為conf的配置文件,這個目錄的指向并不清晰,其實默認情況下指的就是/etc/httpd/conf.modules.d/目錄。
(1.4)在httpd.conf文件中的Listen端口參數是可以根據需要進行添加的,但是要記得修改端口的上下文。可以參考/etc/ssh/目錄中的sshd_config配置文件(圖1-4至圖1-7)
(1.5)User和Group設置的都是apache,表示httpd進程設置的屬主和屬組為apache,其中ServerAdmin表示設置的是管理員的郵箱地址,在系統出問題時,會發送郵件報告給管理員。
(1.6)當我們的服務器上有多個站點時,例如www.a.com 和www.b.com ,這個時候就需要設置對應的ServerName,因為兩個站點都是使用同一個IP地址,所以只有設置好了對應的ServerName條目,服務器才可以正常的外部客戶端的訪問做區分。
(1.7)DocumentRoot主要指明的是網頁文件默認存放的文件路徑,一般我們的主頁都是放在/var/www/html/目錄下。一般在/var/www/html/目錄下是沒有文件存在的,所以當輸入Web服務的IP地址時,默認看到的是Apache的測試頁。
(1.8)如果在/var/www/目錄中創建了子目錄,但是沒有為子目錄單獨設置權限,則子目錄會繼承上層目錄/var/www/目錄中的權限。
(1.9)我們在/var/www/html/目錄下創建一個xx目錄,并創建5個html文件,在/etc/httpd/conf/目錄下的httpd.conf文件中給xx目錄也創建一個單獨的權限屬性設置。注意Options選項有Indexes,表示如果沒有index.html主頁則會將xx目錄下的所有文件以索引的方式顯示出來,接著將服務重啟一次# systemctl restart httpd.service,當然Indexes選項只對/var/www/html/目錄往下目錄有效,對/var/www/html/目錄本身無效,因為如果/var/www/html/目錄下沒有index.html主頁則會顯示測試頁的信息。
(1.10)在Options目錄下的FollowSymLinks選項表示允許顯示/var/www/html/xx/目錄下軟鏈接到其他目錄位置的文件,此時我們創建一個www軟鏈接到/www目錄,那么在瀏覽器輸入http://192.168.26.101/xx/www/ 時,就會鏈接到/www目錄中的index.html文件。
(1.11)AllowOverride參數表示是否允許此目錄里的.htaccess這個文件生效,在此處為了進行驗證效果我們將默認的none設置為authconfig。在/var/www/html/xx/目錄中創建的一個配置文件.htaccess文件中進行編輯,并創建對應的密碼文件.htpasswd,將服務重啟后,發現登錄/xx/目錄便需要進行密碼認證了。
(1.12)在httpd.conf配置文件中Directory目錄下的Require參數一般有如下的
Require all denied:拒絕所有客戶端訪問
Require all granted:允許所有客戶端訪問
Require ip 192.168.26.100 192.168.26.130:允許某一個網段IP地址訪問
Require local:只允許本機訪問
(1.13)在httpd.conf配置文件中IfModule目錄下的DirectoryIndex參數設置的是默認主頁,一般值為index.html,如果沒有默認主頁則會顯示目錄中的所有索引信息。而在Files目錄下的Require參數則是設置.ht后綴的隱藏文件的權限,例如.htaccess默認權限是拒絕。
(1.14)ErrorLog錯誤日志默認是存放在ServerRoot下的logs/error_log當中,我們知道ServerRoot的默認值是/etc/httpd目錄。其中/etc/httpd/logs/目錄中的內容和/var/log/httpd/目錄中的信息一致。
(1.15)Alias參數主要作用是設置別名,可以任意的設置一個訪問的名稱,例如/hello,同時別名前后兩個要一致,如果有"/",則兩個都要加"/";如果沒有"/",則兩個都不要加。此處都沒有加(圖1-33)。設置完Alias信息后還要對創建的目錄設置Directory信息,此處直接填寫創建的目錄信息/zz即可,會自動應用到下面的所有子目錄。這種應用很常見,例如我們安裝Zabbix監控的時候,訪問系統就是使用這種方式。
(二)配置動態頁面:CGI、WSGI、SSI
(2.1)公共網關接口(Common Gateway Interface,CGI)是Web 服務器運行時外部程序的規范。首先我們創建一個CGI頁面,進入到/var/www/cgi-bin/目錄下創建一個aa.pl的perl腳本文件
(2.2)除了寫Perl腳本實現功能,我們也可以使用shell腳本實現,我們在/var/www/cgi-bin目錄下創建一個aa.sh的腳本文件,也是可以正常的在頁面顯示的。
(2.3)WSGI是Web Server Gateway Interface的縮寫。以層的角度來看,WSGI所在層的位置低于CGI。是用python實現動態頁面的一種功能,比如openstack dashboard。使用WSGI功能是需要先安裝相關的軟件包的。
(2.4)服務器端包含 SSI,是英文 Server Side Includes的簡寫。SSI是一種可以指揮服務器動態聲稱網頁內容的HTML指令。我們在/var/www/html/xx/目錄下創建一個index.html的主頁(圖1-50),在httpd.conf的配置文件中添加Includes選項,并將主頁后綴有index.html修改為index.shtml,便可以實現SSI的頁面訪問了。
(2.5)我們也可以將SSI打印時間的部分更換為腳本文件進行顯示。
(2.6)如果我們希望訪問http://192.168.26.101/xx/ 的時候能自動跳轉到http://192.168.26.101/xx/index.shtml 下面,則可以使用地址的重寫方式在httpd.conf 配置文件中配置解決。
(三)搭建一個社區動力論壇
(3.1)我們創建一個社區動力的論壇,首先在根目錄下創建一個/bbs目錄,并在/xx目錄下創建一個Discuz目錄,并將論壇程序包Discuz!X3.2拷貝到Discuz目錄中。
(3.2)接著在/etc/httpd/conf目錄下的httpd.conf配置文件中添加別名和目錄設置的配置信息。
(3.3)由于系統中是啟用了SELinux的,所以需要修改一下所設置目錄的上下文信息,并將httpd服務重啟一下。
(3.4)接著我們進入數據庫中設置root的登錄數據庫的密碼為redhat
(3.5)在Mariadb數據庫中創建一個數據庫名為blog,創建一個用戶bob,登錄blog數據庫的密碼是redhat,而且對數據庫有所有的操作權限。
(3.6)此時在瀏覽器輸入http://192.168.26.101/bbs ,便可以正常的進入到了Discuz社區動力的安裝界面。
(3.7)我們安裝時先臨時設置/bbs目錄的權限為777,并停止一下SELinux。
(3.8)在安裝數據庫界面設置好對應的數據庫名稱和對應的用戶密碼信息,這樣我們的論壇網站便搭建了起來。
(3.9)我們輸入在安裝向導設置的用戶名和密碼信息,便可以進入管理員的登錄界面了,并進行相關的版塊設置。
(3.10)此時我們的社區動力論壇便可以正常的提供服務了。
(四)配置虛擬主機
(4.1)在/etc/httpd/conf/目錄下的httpd.conf配置文件中的IncludeOptional參數表示將/etc/httpd/conf.d/目錄下的所有配置文件全部都會加載進來。
(4.2)虛擬主機指的是在同一臺服務器上搭建多個站點,例如在server端上有兩個主機名www.a.com和www.b.com ,它們解析出的地址都是網卡eth0端口的1.1.1.1的IP地址。接著我們從客戶端PC發出向www.a.com 的主機地址的請求,雖然訪問的IP地址都是1.1.1.1,但在PC端發出的報文中數據包包頭會標記自己需要訪問的是www.a.com 的信息。此時在服務器端會通過httpd.conf配置文件中的ServerName字段的設置進行標記,通過定義不同的主機名來實現區分不同的站點。配置虛擬主機常見的有三種配置方式:1、基于主機名的虛擬主機(4.3至4.9);2、基于IP地址的虛擬主機(4.10至4.12);3、基于端口的虛擬主機。
(4.3)接著我們在/etc/unbound/local.d/目錄中創建一個baidu.conf的配置文件。
(4.4)我們使用vms002主機進行測試,將vms002主機的DNS服務器設置為192.168.26.101,發現此時訪問不同的域名中的主機解析的IP地址是一致的。
(4.5)我們將/usr/share/doc/httpd-2.4.6/httpd-vhosts.conf的模板文件拷貝到conf.d/目錄下并命名為vhost.conf文件名。
(4.6)在/etc/httpd/conf.d/目錄中的vhost.conf配置文件中填寫如下的配置信息。
(4.7)在vhost.conf配置文件中,我們需要添加對虛擬主機/baidu目錄的設置,這樣就可以正常的訪問vms001.baidu.com虛擬主機地址了。
(4.8)由于配置了虛擬主機,所以如果在/etc/httpd/conf.d/目錄下的vhost.conf配置文件中填寫了虛擬主機的地址,那么就一定要將原始vms001.example.com主機的配置信息也寫入vhost.conf配置文件中。
(4.9)此時我們通過vms002主機訪問vms001.example.com主機和vms001.baidu.com主機都能夠訪問到對應域名的主頁信息了。這個就是我們基于主機名的虛擬主機的配置。
(4.10)然后我們配置基于IP地址的虛擬主機配置。
# ip addr show dev eno16777728
# ip addr add 192.168.26.110/24 dev eno16777728
# ip addr show dev eno16777728
(4.10)接著我們在/etc/unbound/local.d/目錄下的baidu.conf配置文件中修改主機對應的IP地址信息。
(4.11)我們進入到/etc/httpd/conf.d/目錄中,在vhost.conf配置文件中,將不同的虛擬主機的IP地址填寫到對應的VirtualHost參數位置。
(4.12)此時在vms002主機上訪問vms001.baidu.com虛擬主機的地址是可以正常的訪問的,而且訪問vms001.example.com虛擬主機的地址也是可以正常的訪問的。
(五)配置HTTPS
通常我們訪問一個站點的時候,比如瀏覽網頁瀏覽搜狐新聞的時候使用的是HTTP協議,所有的內容都是以明文的方式傳輸的,由于客戶瀏覽的新聞都是公開的,所以傳輸數據并沒有很強的安全性傳輸的需求。但有時候例如我們在訪問支付寶時,由于會涉及到用戶名密碼以及帳戶資金操作等情況,此時我們是不希望這些信息在互聯網中以明文的方式傳輸,否則會對我們的信息造成一定的安全隱患。所以此時我們應該使用HTTPS協議,即超文本傳輸安全協議(Hypertext Transfer Protocol Secure)來進行通信,https是使用SSL對傳輸層進行加密,即https=http+tls/ssl。
一般來說加密有三種類型,即對稱加密、非對稱加密和哈希函數。對于對稱加密來說,使用的密鑰是相同的,加密是使用什么密鑰,解密也就需要使用一致的密鑰。客戶端A(PC端)使用密鑰123對數據進行加密后將數據傳遞給客戶端B(支付寶錢包),客戶端B接收到數據后也要使用密鑰123才可以對數據進行解密,但是客戶端B應該怎樣獲取到客戶端A使用的密鑰123呢?通過互聯網郵件明文傳輸可能會被Hacker竊取,通過電話告知也可能會被竊聽,對稱加密算法的難點在于不知道怎樣將密鑰安全的傳輸。對稱加密算法的優點:速度快且安全;對稱加密算法的缺點:無法保證安全的傳輸密鑰。常見的AES,DES算法都是屬于對稱加密算法。
非對稱加密主要是包含公鑰和私鑰密鑰對,其中公鑰是可以公開明文傳輸的,私鑰是非公開的需要用戶獨立保存的。非對稱加密通常是有兩類作用,包括數據加密和數字簽名。其中數據加密是使用公鑰加密,私鑰解密。例如客戶端A(PC端)向客戶端B(支付寶錢包)傳輸數據,客戶端B有一個公鑰和一個私鑰,此時客戶端A獲取客戶端B的公鑰B公將數據進行加密,加密完成后在網絡中明文傳輸是沒有關系的,此時客戶端B獲取到加密的數據后,使用自己的私鑰B私進行解密。
所以常見的做法是將對稱加密和非對稱加密結合起來使用,客戶端A向客戶端B傳輸數據,客戶端A使用密鑰123對數據加密后將數據以明文的方式在互聯網傳輸給客戶端B,接著客戶端A獲取到客戶端B的公鑰B公,將密鑰123使用B公加密也傳輸給客戶端B,此時客戶端B使用B私對密鑰123進行解密,在使用解密后的密鑰123解密客戶端A傳輸過來的加密信息,從而完成了互聯網安全傳輸。
有時候在網絡傳輸的過程中,客戶端A(PC端)向客戶端B(支付寶錢包)傳輸信息,當客戶端B將自己的公鑰B公發送給客戶端A的時候,可能遇到客戶端C(Hacker)將客戶端B的公鑰截取了,客戶端C將自己的公鑰C公偽裝成B公并發送給客戶端A,客戶端A便開始用C公加密數據并發送給客戶端C,客戶端C再使用C私解密數據,獲得了機密文件,接著客戶端C再使用客戶端B的公鑰B公將獲取到的文件加密傳輸給客戶端B。這個時候客戶端A與客戶端B感覺是直接通信的,卻并不知道中間還有客戶端C的Hacker存在。
因為我們無法保證客戶端A在接收到客戶端B的公鑰B公一定是客戶端B的,所以此時可以用數字簽名解決這個問題,數字簽名是使用私鑰加密、公鑰解密,例如客戶端A首先使用哈希函數對傳輸的文件產生一個哈希碼,接著客戶端A使用私鑰A私對生成的哈希碼加密,然后客戶端A將原始數據和A私生成的哈希碼報文一起傳遞給客戶端B,客戶端B接收到信息后,會使用A的公鑰A公進行解密,得到一個哈希碼,接著客戶端B使用哈希函數對原始傳輸的文件生成一個新的哈希碼,并和A公解密得到的哈希碼進行比較,如果兩個哈希碼相同,表示數據在傳輸過程中沒有被修改過。
由于A客戶端可以生成任意多個密鑰對,所以此時遇到的問題是我們沒有辦法證明A私和客戶端A之間的必然聯系,所以在互聯網中存在著一個機構CA即證書授權中心(certificate authority,CA),它作為電子商務交易中受信任的第三方,承擔公鑰體系中公鑰的合法性檢驗的責任。CA中心為每個使用公開密鑰的用戶發放一個數字證書,數字證書的作用是證明證書中列出的用戶合法擁有整數中列出的公開密鑰。CA機構的數字簽名使得Hacker不能偽造和篡改證書。它負責生產,分配并管理所有參與網上交易的個體所需的數字證書,因此是安全電子交易的核心環節。證書授權中心(CA)是管理和簽發安全憑證和信息安全密鑰的網絡機構。注冊中心(RA)對申請者所提供的數字證書進行驗證,CA驗證后簽發證書。內容包括申請者的個人信息,公共密鑰和認證有效期,作為網上身份證明的依據。例如在網絡交易中,支付寶會自己生成一對密鑰包括公鑰和私鑰,支付寶會用私鑰生成一個csr證書請求文件,并發送給CA驗證,CA通過審核后會頒發一個證書給支付寶,此時這個證書就是公鑰,是CA做過了數字簽名認證后的支付寶的公鑰。此時客戶端準備和支付寶進行通信,它們之間協商是使用對稱加密算法來進行通信的,接著客戶端PC使用自己生成的對稱加密算法的密鑰123加密數據并發送給支付寶,但是此時支付寶并不知道加密的密鑰123具體是什么,所以也無法解密數據。此時支付寶會將從CA頒發的證書發送給客戶端PC,客戶端PC得到的證書文件本質就是支付寶的公鑰,客戶端PC得到的支付寶公鑰上有CA機構的數字簽名,而在瀏覽器中一般都內置了常見CA的公鑰文件,我們知道數字簽名是私鑰加密、公鑰解密,此時客戶端的瀏覽器使用使用內置的CA公鑰認證證書,如果認證通過說明這個確實是來自支付寶的公鑰文件。而數據的非對稱加密是使用公鑰加密,私鑰解密,此時瀏覽器將密鑰123使用支付寶的公鑰加密后傳輸給支付寶,支付寶獲得后使用自己的私鑰解密數據得到了密鑰123,最后使用密鑰123解密對稱加密的文件從而獲得客戶端PC傳遞過來的數據信息。
(5.1)進入到/etc/httpd/conf目錄下,首先創建一個支付寶端的私鑰證書client.key,接著創建一個自簽名的支付寶的公鑰證書client.pem,最后再創建一個CA的私鑰client.ca
(5.2)進入到/etc/httpd/conf.d/目錄中,編輯ssl.conf配置文件。配置完成后將Web服務重啟一下。
(5.3)在vms002主機上測試https://www.baidu.com/ 的訪問情況。
(5.4)記住需要在/etc/httpd/conf.d/目錄下的vhost.conf和ssl.conf文件中都開啟SSL的驗證,并配置好密鑰信息,這樣就可以使用https訪問不同的虛擬主機了。
(5.5)接下來使用基于IP地址的虛擬主機實驗一次,https://vms001.baidu.com 可以正常的訪問,https://vms001.example.com 不能正常訪問
—————— 本文至此結束,感謝閱讀 ——————
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。