進行虛擬主機配置html
NameVirtuaHost *:80算法
表示基於名稱的虛擬主機 *:80表示監聽本機全部IP的80端口上提供HTTP服務,*能夠設置爲具體IP
<VirtualHost *:80>
serveradmin 管理員郵箱
servername 域名
serveralias 別名 能夠設置多個域名指向同一個站點
errorlog 錯誤日誌
customlog 訪問日誌
</VirtualHost>
虛擬主機的配置是局部優先原則,也就是http_vhost.conf配置了,那麼就不會從主配置文件http.conf中讀取了apache
2.apache-conf-extra-httpd-ssl.conf的做用瀏覽器
支持SSL加密配置安全
2.1SSL加密?服務器
SSL(Secure Sockets Layer 安全套接層),及其繼任者傳輸層安全(Transport Layer Security,TLS)是爲網絡通訊提供安全及數據完整性的一種安全協議。TLS與SSL在傳輸層對網絡鏈接進行加密。網絡
SSL是Netscape公司所提出的安全保密協議,在瀏覽器(如Internet Explorer、Netscape Navigator)和Web服務器(如Netscape的Netscape Enterprise Server、ColdFusion Server等等)之間構造安全通道來進行數據傳輸,SSL運行在TCP/IP層之上、應用層之下,爲應用程序提供加密數據通道,它採用了RC四、MD5以及RSA等加密算法,使用40 位的密鑰,適用於商業信息的加密。同時,Netscape公司相應開發了HTTPS協議並內置於其瀏覽器中,HTTPS實際上就是HTTP over SSL,它使用默認端口443,而不是像HTTP那樣使用端口80來和TCP/IP進行通訊。HTTPS協議使用SSL在發送方把原始數據進行加密,而後在接受方進行解密,加密和解密須要發送方和接受方經過交換共知的密鑰來實現,所以,所傳送的數據不容易被網絡黑客截獲和解密。性能
SSL協議可分爲兩層:①. SSL記錄協議(SSL Record Protocol):它創建在可靠的傳輸協議(如TCP)之上,爲高層協議提供數據封裝、壓縮、加密等基本功能的支持。 ②.SSL握手協議(SSL Handshake Protocol):它創建在SSL記錄協議之上,用於在實際的數據傳輸開始前,通信雙方進行身份認證、協商加密算法、交換加密密鑰等。測試
缺點:網站
然而,加密和解密過程須要耗費系統大量的開銷,嚴重下降機器的性能,相關測試數據代表使用HTTPS協議傳輸數據的工做效率只有使用HTTP協議傳輸的十分之一。假如爲了安全保密,將一個網站全部的Web應用都啓用SSL技術來加密,並使用HTTPS協議進行傳輸,那麼該網站的性能和效率將會大大下降,並且沒有這個必要,由於通常來講並非全部數據都要求那麼高的安全保密級別。
SSL加密並不保護數據中心自己,而是確保了SSL加密設備的數據中心安全,能夠監控企業中來往於數據中心的最終用戶流量。從某個角度來看,數據中心管理員能夠放心將加密裝置放在某個地方,須要使用時再進行應用,數據中心應該會有更合理的方法來應對利用SSL的惡意攻擊,須要找到SSL加密應用的最佳實踐。
用途:
1)認證用戶和服務器,確保數據發送到正確的客戶機和服務器;
2)加密數據以防止數據中途被竊取;
3)維護數據的完整性,確保數據在傳輸過程當中不被改變。
2.2 SSL的工做流程:
服務器認證階段:
1)客戶端向服務器發送一個開始信息「Hello」以便開始一個新的會話鏈接;
2)服務器根據客戶的信息肯定是否須要生成新的主密鑰,如須要則服務器在響應客戶的「Hello」信息時將包含生成主密鑰所需的信息;
3)客戶根據收到的服務器響應信息,產生一個主密鑰,並用服務器的公開密鑰加密後傳給服務器;
4)服務器回覆該主密鑰,並返回給客戶一個用主密鑰認證的信息,以此讓客戶認證服務器。
用戶認證階段:在此以前,服務器已經經過了客戶認證,這一階段主要完成對客戶的認證。經認證的服務器發送一個提問給客戶,客戶則返回(數字)簽名後的提問和其公開密鑰,從而向服務器提供認證。
2.3SSL體系結構
SSL的體系結構中包含兩個協議子層,其中底層是SSL紀錄協議層(SSL Record Protocol Layer);高層是SSL握手協議層(SSL HandShake Protocol Layer)。
2.3.1
SSL紀錄協議層
紀錄協議層的做用是爲高層協議提供基本的安全服務。SSL紀錄協議針對HTTP協議進行了特別的設計,使得超文本的傳輸協議HTTP可以在SSL運行。紀錄封裝各類高層協議,具體實施壓縮解壓縮、加密解密、計算和校驗MAC等與安全有關的操做。
2.3.2SSL握手協議層
SSL握手協議層包括SSL握手協議(SSL HandShake Protocol)、SSL密碼參數修改協議(SSL Change Cipher Spec Protocol)、應用數據協議(Application Data Protocol)和SSL告警協議(SSL Alert Protocol)。握手層的這些協議用於SSL管理信息的交換,容許應用協議傳送數據之間相互驗證,協商加密算法和生成密鑰等。SSL握手協議的做用是協調客戶和服務器的狀態,使雙方可以達到狀態的同步。
2.4SSL的會話狀態
會話(Session)和鏈接(Connection)是SSL中兩個重要的概念,在規範中定義以下。
(1)SSL鏈接:用於提供某種類型的服務數據的傳輸,是一種點對點的關係。通常來講,鏈接的維持時間比較短暫,而且每一個鏈接必定與某一個會話相關聯。
(2)SSL會話:是指客戶和服務器之間的一個關聯關係。會話經過握手協議來建立。它定義了一組安全參數。
一次會話過程一般會發起多個SSL鏈接來完成任務,例如一次網站的訪問可能須要多個HTTP/SSL/TCP鏈接來下載其中的多個頁面,這些鏈接共享會話定義的安全參數。這種共享方式能夠避免爲每一個SSL鏈接單獨進行安全參數的協商,而只需在會話創建時進行一次協商,提升了效率。
每個會話(或鏈接)都存在一組與之想對應的狀態,會話(或鏈接)的狀態表現爲一組與其相關的參數集合,最主要的內容是與會話(或鏈接)相關的安全參數的集合,用會話(或鏈接)中的加密解密、認證等安全功能的實現。在SSL通訊過程當中,通訊算法的狀態經過SSL握手協議實現同步。
根據SSL協議的約定,會話狀態由如下參數來定義:
(1)會話標識符:是由服務器選擇的任意字節序列,用於標識活動的會話或可恢復的會話狀態。
(2)對方的證書:會話對方的X.509v3證書。該參數可爲空。
(3)壓縮算法:在加密以前用來壓縮數據的算法。
(4)加密規約(Cipher Spec):用於說明對大塊數據進行加密採用的算法,以及計算MAC所採用的散列算法。
(5)主密值:一個48字節長的祕密值,由客戶和服務器共享。
(6)可從新開始的標識:用於指示會話是否能夠用於初始化新的鏈接。
鏈接狀態能夠一下參數來定義:
(1)服務器和客戶器的隨機數:是服務器和客戶爲每一個鏈接選擇的用於標識鏈接的字節序列。
(2)服務器寫MAC密值:服務器發送數據時,生成MAC
(3)使用的密鑰,長度爲128 bit。
(4)客戶寫MAC密值,服務器發送數據時,用於數據加密的密鑰,長度爲128 bit 。
(5)客戶寫密鑰:客戶發送數據時,用於數據加密的密鑰,長度爲128 bit。
(6)初始化向量:當使用CBC模式的分組密文算法是=時,須要爲每一個密鑰維護初始化向量。
(7)序列號:通訊的每一端都爲每一個鏈接中的發送和接收報文維持着一個序列號。