linux下關於apache站點安全以及https

apache web 站點安全

想必大家都知到在windows server 2003上可以建web服務器,而且可以實現身份驗證、來源控制以及加密訪問。


121540945.jpg

121543309.jpg

121547924.jpg

其實在linux下也可以實現,下面我會給大家詳細解釋並操作 :使用虛擬機建立web服務器


首先安裝httpd文件

121755491.jpg

122001892.jpg

案例1:身份認證

原理:

在很多網站對用戶的訪問權限進行了嚴格的限制,用戶在訪問某些資源時需要給出“用戶名/口令”來確認自己的身份。目前,使用最多的身份認證方法是將用戶名、口令存放在一個數據庫中,當用戶要訪問某些受限制的資源時,要在某一個頁面中輸入用戶名和口令,程序將用戶輸入的用戶名和口令與數據庫存放的“用戶名/口令"相比較,如果輸入正確,則正常使用資源,否則,資源訪問被拒絕。但是,這種身份認證方式有兩個很大的問題,一方面只要用戶有一次身份認證成功,就可以記錄下受限資源的鏈接地址,在下一次訪問時只需輸入該地址,而無需通過身份認證過程就可訪問受限資源;另一方面用戶可以在受限制的資源的超級鏈接處點右鍵,選擇“屬性",就可以查看到受限制資源的鏈接地址,直接訪問該地址,使身份認證不能達到預期的效果。

Apache實現身份認證的基本原理是:當系統管理員啓動身份認證功能後,可以在要限制的目錄中添加一個默認名“.htaccess"的文件。當用戶訪問該路徑下的資源時,系統就會彈出一個對話框,要求用戶輸入“用戶名/口令"。也就是說,它的身份認證功能不是人爲由程序控制,而是由系統直接控制的。這樣就避免了用戶記錄需要認證的資源的超級鏈接,不會下次直接訪問資源。


首先,配置httpd.conf

[root@server1 httpd]# vim /etc/httpd/conf/httpd.conf

在(327行)修改如下所示:

allowoverride all (可以實現身份驗證)

來到站點的主目錄下(站點主目錄在/var/www/html目錄下)

[root@server1 Server]# cd /var/www/html/

[root@server1 html]# echo "welcome" >index.html(建個網頁)

再創建說明文件 .htaccess

122217254.jpg


進入/var/www/目錄下創建.htpasswd並添加賬戶:

122359107.jpg

122401511.jpg


查看

122430513.jpg

啓動apache服務,並驗證:

[root@server1 www]# service httpd start

打開瀏覽器

123333568.jpg

123206289.jpg


案例2:來源控制

只需要在/etc/httpd/conf/httpd.conf(332,333行)加以修改:

123555289.jpg


案列3:加密訪問 https (http+ssl)

HTTPS(全稱:Hypertext Transfer Protocol over Secure Socket Layer),是以安全爲目標的HTTP通道,簡單講是HTTP的安全版。即HTTP下加入SSL層,HTTPS的安全基礎是SSL,因此加密的詳細內容就需要SSL。 它是一個URI scheme(抽象標識符體系),句法類同http:體系。用於安全的HTTP數據傳輸。https:URL表明它使用了HTTP,但HTTPS存在不同於HTTP的默認端口及一個加密/身份驗證層(在HTTP與TCP之間)。這個系統的最初研發由網景公司進行,提供了身份驗證與加密通訊方法,現在它被廣泛用於萬維網上安全敏感的通訊,例如交易支付方面。

它是由Netscape開發並內置於其瀏覽器中,用於對數據進行壓縮和解壓操作,並返回網絡上傳送回的結果。HTTPS實際上應用了Netscape的安全套接層(SSL)作爲HTTP應用層的子層。(HTTPS使用端口443,而不是像HTTP那樣使用端口80來和TCP/IP進行通信。)SSL使用40 位關鍵字作爲RC4流加密算法,這對於商業信息的加密是合適的。HTTPS和SSL支持使用X.509數字認證,如果需要的話用戶可以確認發送者是誰。

也就是說它的主要作用可以分爲兩種:一種是建立一個信息安全通道,來保證數據傳輸的安全;另一種就是確認網站的真實性。

HTTPS和HTTP的區別

一、https協議需要到ca申請證書,一般免費證書很少,需要交費。

二、http是超文本傳輸協議,信息是明文傳輸,https 則是具有安全性的ssl加密傳輸協議。

三、http和https使用的是完全不同的連接方式,用的端口也不一樣,前者是80,後者是443。

四、http的連接很簡單,是無狀態的;HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,比http協議安全。

數字摘要

這個非常簡單,我們在下載文件的時候經常會看到有的下載站點也提供下載文件的“數字摘要“,供下載者驗證下載後的文件是否完整,或者說是否和服務器上的文件”一模一樣“。其實,數字摘要就是採用單項Hash函數將需要加密的明文“摘要”成一串固定長度(128位)的密文,這一串密文又稱爲數字指紋,它有固定的長度,而且不同的明文摘要成密文,其結果總是不同的,兒同樣的明文其摘要必定一致。 因此,“數字摘要“叫”數字指紋“可能會更貼切一些。“數字摘要“是https能確保數據完整性和防篡改的根本原因。

拓撲圖

211258821.jpg

一、實現CA

第一步編輯openssl.cnf文件

[root@server1 ~]#vim /etc/pki/tls/openssl.cnf

211324944.jpg



修改(88,90行)如圖:

211324938.jpg

修改(134,147行)默認值如圖:

211324322.jpg

創建需要的目錄和文件

[root@server1 CA]# mkdir certs newcerts cr1

[root@server1 CA]# touch index.txt serial

[root@server1 CA]# echo "01" >serial(初始值爲01)

第二步:先建私鑰文件

[root@server1 CA]#openssl genrsa 1024 >private/cakey.pem

[root@server1 CA]# chmod 600 private/cakey.pem(修改權限)

生成證書:

[root@server1 CA]# openssl req -new -key private/cakey.pem -x509 -out cacert.pem(給自己頒發證書)

212935151.jpg在本目錄查詢

212151335.jpg

二、搭建web服務器

第一步:結合ssl安裝mod_ssl模塊:

211731765.jpg

第二步:申請證書

創建並進入certs目錄:

[root@server1 ~]# mkdir -pv /etc/httpd/certs

在目錄下建httpd.key放私鑰文件:

[root@server1 certs]# openssl genrsa 1024 >httpd.key

[root@server1 certs]# chmod600 httpd.key


建httpd.req放請求文件:

212331707.jpg

建httpd.cert放證書文件:

212445346.jpg

現在查看數據庫文件(本來爲空的,發現現在已添加)

[root@server1 certs]# cd /etc/pki/CA/

[root@server1 CA]# cat index.txt

V140824012802Z01unknown/C=CN/ST=BEIJING/O=abc/OU=tec/CN=www.abc.com

三、捆綁

編輯/etc/httpd/conf.d/ssl.conf文件(112、119行)如圖:

212651823.jpg

不使用明文訪問的話需要編輯 vim /etc/httpd/conf/httpd.conf

在(134行)將80端口禁掉

213516656.jpg

配置完成;接着需要在瀏覽器上修改

訪問服務器,會出現以下情況:

213642432.jpg

213643638.jpg

我們需要安裝證書

213732432.jpg213731397.jpg


接着就可以訪問了

213855159.jpg

213801236.jpg

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章