ssl加密的方法[互聯(lián)網(wǎng)+]_第1頁
ssl加密的方法[互聯(lián)網(wǎng)+]_第2頁
ssl加密的方法[互聯(lián)網(wǎng)+]_第3頁
ssl加密的方法[互聯(lián)網(wǎng)+]_第4頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、ssl加密的方法關鍵詞: ssl加密的方法 隨著計算機網(wǎng)絡技術的發(fā)展,方便快捷的互連網(wǎng)使人們漸漸習慣了從Web頁上收發(fā)E-mail、購物和交易,這時Web頁面上需要傳輸重要或敏感的數(shù)據(jù),例如用戶的銀行帳戶、密碼等,所以網(wǎng)絡安全就成為現(xiàn)代計算機網(wǎng)絡應用急需解決的問題?,F(xiàn)行網(wǎng)上銀行和電子商務等大型的網(wǎng)上交易系統(tǒng)普遍采用HTTP和SSL相結合的方式。服務器端采用支持SSL的Web服務器,用戶端采用支持SSL的瀏覽器實現(xiàn)安全通信。SSL是Secure Socket Layer(安全套接層協(xié)議)的縮寫,可以在Internet上提供秘密性傳輸。Netscape公司在推出第一個Web瀏覽器的同時,提出了SS

2、L協(xié)議標準,目前已有3.0版本。SSL采用公開密鑰技術。其目標是保證兩個應用間通信的保密性和可靠性,可在服務器端和用戶端同時實現(xiàn)支持。目前,利用公開密鑰技術的SSL協(xié)議,已成為Internet上保密通訊的工業(yè)標準。本文著重在SSL協(xié)議和SSL程序設計兩方面談談作者對SSL的理解。SSL協(xié)議初步介紹安全套接層協(xié)議能使用戶/服務器應用之間的通信不被攻擊者竊聽,并且始終對服務器進行認證,還可選擇對用戶進行認證。SSL協(xié)議要求建立在可靠的傳輸層協(xié)議(TCP)之上。SSL協(xié)議的優(yōu)勢在于它是與應用層協(xié)議獨立無關的,高層的應用層協(xié)議(例如:HTTP,F(xiàn)TP,TELNET等)能透明地建立于SSL協(xié)議之上。SS

3、L協(xié)議在應用層協(xié)議通信之前就已經(jīng)完成加密算法、通信密鑰的協(xié)商及服務器認證工作。在此之后應用層協(xié)議所傳送的數(shù)據(jù)都會被加密,從而保證通信的私密性。通過以上敘述,SSL協(xié)議提供的安全信道有以下三個特性:1.數(shù)據(jù)的保密性信息加密就是把明碼的輸入文件用加密算法轉換成加密的文件以實現(xiàn)數(shù)據(jù)的保密。加密的過程需要用到密匙來加密數(shù)據(jù)然后再解密。沒有了密鑰,就無法解開加密的數(shù)據(jù)。數(shù)據(jù)加密之后,只有密匙要用一個安全的方法傳送。加密過的數(shù)據(jù)可以公開地傳送。2.數(shù)據(jù)的一致性加密也能保證數(shù)據(jù)的一致性。例如:消息驗證碼(MAC),能夠校驗用戶提供的加密信息,接收者可以用MAC來校驗加密數(shù)據(jù),保證數(shù)據(jù)在傳輸過程中沒有被篡改過

4、。3.安全驗證加密的另外一個用途是用來作為個人的標識,用戶的密匙可以作為他的安全驗證的標識。SSL是利用公開密鑰的加密技術(RSA)來作為用戶端與服務器端在傳送機密資料時的加密通訊協(xié)定。目前,大部分的Web 服務器及瀏覽器都廣泛支持SSL 技術。當瀏覽器試圖連接一個具有SSL認證加密的服務器時,就會喚醒一個SSL會話,瀏覽器檢查認證,必須具備下面三個條件:1)有一個權威機構發(fā)放證書,當然可以創(chuàng)建自我簽訂的證書(x509 結構)。2)證書不能過期。3)證書是屬于它所連接的服務器的。只有全部具備了這三個條件,瀏覽器才能成功完成認證。通過這三個條件,用戶能確認其瀏覽器連接到正確的服務器,而不是連接到

5、一些想盜取用戶密碼等重要信息的虛假的服務器上。在當今的電子商務中還有一項被廣泛使用的安全協(xié)議是SET協(xié)議。SET(Secure Electronic Transaction,安全電子交易)協(xié)議是由VISA和MasterCard兩大信用卡公司于1997年5月聯(lián)合推出的規(guī)范。SET能在電子交易環(huán)節(jié)上提供更大的信任度、更完整的交易信息、更高的安全性和更少受欺詐的可能性。SET交易分三個階段進行:用戶向商家購物并確定支付;商家與銀行核實;銀行向商家支付貨款。每個階段都涉及到RSA對數(shù)據(jù)加密,以及RSA數(shù)字簽名。使用SET協(xié)議,在一次交易中,要完成多次加密與解密操作,故有很高的安全性,但SET協(xié)議比SS

6、L協(xié)議復雜,商家和銀行都需要改造系統(tǒng)以實現(xiàn)互操作。在Linux 下,比較流行支持SSL認證的是OpenSSL服務器。OpenSSL項目是一個合作的項目,開發(fā)一個健壯的、商業(yè)等級的、完整的開放源代碼的工具包,用強大的加密算法來實現(xiàn)安全的Socket層(Secure Sockets Layer,SSL v2/v3)和傳輸層的安全性(Transport Layer Security,TLS v1)。這個項目是由全世界的志愿者管理和開發(fā)OpenSSL工具包和相關文檔。如何在Linux下配置OpenSSL服務器,首先從OpenSSL的主頁(/)上下載openss

7、l-version.tar.gz軟件包來編譯安裝,與Apache服務器配合可以建立支持SSL的Web服務器,并可以使用自我簽訂的證書做認證,關于如何編譯、安裝OpenSSL服務器,可以參考一下OpenSSL HOWTO文檔。SSL 程序設計初步介紹SSL 通訊模型為標準的C/S 結構,除了在 TCP 層之上進行傳輸之外,與一般的通訊沒有什么明顯的區(qū)別。在這里,我們主要介紹如何使用OpenSSL進行安全通訊的程序設計。關于OpenSSL 的一些詳細的信息請參考OpenSSL的官方主頁 。在使用OpenSSL前,必須先對OpenSSL 進行初始化,以下的三

8、個函數(shù)任選其一:SSL_library_init(void);OpenSSL_add_ssl_algorithms();SSLeay_add_ssl_algorithms();事實上 后面的兩個函數(shù)只是第一個函數(shù)的宏。如果要使用OpenSSL的出錯信息,使用SSL_load_error_strings (void)進行錯誤信息的初始化。以后可以使用void ERR_print_errors_fp(FILE *fp) 打印SSL的錯誤信息。一次SSL連接會話一般要先申請一個SSL 環(huán)境,基本的過程是:1. SSL_METHOD* meth = TLSv1_client_method(); 創(chuàng)建本

9、次會話連接所使用的協(xié)議,如果是客戶端可以使用SSL_METHOD* TLSv1_client_method(void); TLSv1.0 協(xié)議SSL_METHOD* SSLv2_client_method(void); SSLv2 協(xié)議SSL_METHOD* SSLv3_client_method(void); SSLv3 協(xié)議SSL_METHOD* SSLv23_client_method(void); SSLv2/v3 協(xié)議服務器同樣需要創(chuàng)建本次會話所使用的協(xié)議:SSL_METHOD *TLSv1_server_method(void);SSL_METHOD *SSLv2_server_m

10、ethod(void);SSL_METHOD *SSLv3_server_method(void);SSL_METHOD *SSLv23_server_method(void);需要注意的是客戶端和服務器需要使用相同的協(xié)議。2申請SSL會話的環(huán)境 CTX,使用不同的協(xié)議進行會話,其環(huán)境也是不同的。申請SSL會話環(huán)境的OpenSSL函數(shù)是SSLK_CTX* SSL_CTX_new (SSL_METHOD*); 參數(shù)就是前面我們申請的 SSL通訊方式。返回當前的SSL 連接環(huán)境的指針。然后根據(jù)自己的需要設置CTX的屬性,典型的是設置SSL 握手階段證書的驗證方式和加載自己的證書。void SSL_

11、CTX_set_verify (SSL_CTX* , int , int* (int, X509_STORE_CTX*) )設置證書驗證的方式。第一個參數(shù)是當前的CTX 指針,第二個是驗證方式,如果是要驗證對方的話,就使用SSL_VERIFY_PEER。不需要的話,使用SSL_VERIFY_NONE.一般情況下,客戶端需要驗證對方,而服務器不需要。第三個參數(shù)是處理驗證的回調函數(shù),如果沒有特殊的需要,使用空指針就可以了。void SSL_CTX_load_verify_locations(SSL_CTX*, const char* , const char*);加載證書;第一個參數(shù)同上,參數(shù)二是

12、證書文件的名稱,參數(shù)三是證書文件的路徑;int SSL_CTX_use_certificate_file(SSL_CTX *ctx, const char *file, int type);加載本地的證書;type 指明證書文件的結構類型;失敗返回-1int SSL_CTX_use_PrivateKey_file(SSL_CTX *ctx, const char *file, int type);加載自己的私鑰;type 參數(shù)指明私鑰文件的結構類型;失敗返回-1加載了證書和文件之后,就可以驗證私鑰和證書是否相符:BOOl SSL_CTX_check_private_key (SSL_CTX*)

13、;3既然SSL 使用TCP 協(xié)議,當然需要把SSL attach 到已經(jīng)連接的套接字上了:SSL* SSL_new (SSL_CTX*); 申請一個SSL 套節(jié)字;int SSL_set_rfd (SSL*); 綁定只讀套接字int SSL_set_wfd (SSL*); 綁定只寫套接字int SSL_set_fd ( SSL*); 綁定讀寫套接字綁定成功返回 1, 失敗返回0;4 接下來就是SSL 握手的動作了int SSL_connect (SSL*); 失敗返回 -15. 握手成功之后,就可以進行通訊了,使用SSL_read 和SS_write 讀寫SSL 套接字代替?zhèn)鹘y(tǒng)的read 、w

14、riteint SSL_read (SSL *ssl, char *buf, int num );int SSL_write (SSL *ssl, char *buf, int num);如果是服務器,則使用 SSL_accept 代替?zhèn)鹘y(tǒng)的 accept 調用int SSL_accept(SSL *ssl);6. 通訊結束,需要釋放前面申請的 SSL資源int SSL_shutdown(SSL *ssl); 關閉SSL套接字;void SSL_free (ssl); 釋放SSL套接字;void SSL_CTX_free (ctx); 釋放SSL環(huán)境;OpenSSL 雖然已經(jīng)發(fā)展到了0.9.9

15、6版本,但是它的文檔還很少,甚至連最基本的man 函數(shù)手冊都沒有完成。所以,本文緊緊是講述了使用OpenSSL 進行程序設計的框架。更加詳細的資料可以參考OpenSSL 的文檔或者 Apache mod_ssl 的文檔。通過以上的介紹,我想讀者對SSL協(xié)議已經(jīng)有了一定的了解,作者有機會將會繼續(xù)給大家介紹SSL協(xié)議的其他方面的內容。SSL原理解密本文出自:范曉明RSA公鑰加密在計算機產業(yè)中被廣泛使用在認證和加密??梢詮腞SA Data Security Inc.獲得的RSA公鑰加密許可證。公鑰加密是使用一對非對稱的密碼加密或解密的方法。每一對密碼由公鑰和私鑰組成。公鑰被廣泛發(fā)布。私鑰是隱密的,不

16、公開。用公鑰加密的數(shù)據(jù)只能夠被私鑰解密。反過來,使用私鑰加密的數(shù)據(jù)只能用公鑰解密。這個非對稱的特性使得公鑰加密很有用。使用公鑰加密法認證認證是一個身份認證的過程。在下列例子中包括甲和乙,公鑰加密會非常輕松地校驗身份。符號數(shù)據(jù) key意味著數(shù)據(jù)已經(jīng)使用密碼加密或解密。假如甲想校驗乙的身份。乙有一對密碼,一個是公開的,另一個是私有的。乙透露給甲他的公鑰。甲產生一個隨機信息發(fā)送給乙。甲乙:random-message乙使用他的私鑰加密消息,返回甲加密后的消息。 乙甲:random-message乙的私鑰甲收到這個消息然后使用乙的以前公開過的公鑰解密。他比較解密后的消息與他原先發(fā)給乙的消息。如果它們完

17、全一致,就會知道在與乙說話。任意一個中間人不會知道乙的私鑰,也不能正確加密甲檢查的隨機消息。除非你清楚知道你加密的消息。用私鑰加密消息,然后發(fā)送給其他人不是一個好主意。因為加密值可能被用來對付你,需要注意的是:因為只有你才有私鑰,所以只有你才能加密消息。所以,代替加密甲發(fā)來的原始消息,乙創(chuàng)建了一個信息段并且加密。信息段取自隨機消息(random-message)并具有以下有用的特性:1. 這個信息段難以還原。任何人即使偽裝成乙,也不能從信息段中得到原始消息;2. 假冒者將發(fā)現(xiàn)不同的消息計算出相同的信息段值;3. 使用信息段,乙能夠保護自己。他計算甲發(fā)出的隨機信息段,并且加密結果,并發(fā)送加密信息

18、段返回甲。甲能夠計算出相同的信息段并且解密乙的消息認證乙。這個技術僅僅描繪了數(shù)字簽名。通過加密甲產生的隨機消息,乙已經(jīng)在甲產生的消息簽名。因此我們的認證協(xié)議還需要一次加密。一些消息由乙產生:甲乙:你好,你是乙么?乙甲:甲,我是乙信息段甲,我是乙 乙的私鑰當你使用這個協(xié)議,乙知道他發(fā)送給乙的消息,他不介意在上面簽名。他先發(fā)送不加密的信息,甲,我是乙。,然后發(fā)送信息段加密的消息版本。甲可以非常方便地校驗乙就是乙,同時,乙還沒有在他不想要的信息上簽名。提交公鑰那么,乙怎樣以可信的方式提交他的公鑰呢?看看認證協(xié)議如下所示:甲乙:你好乙甲:嗨,我是乙,乙的公鑰甲乙:prove it乙甲:甲,我是乙 信息

19、段甲,我是乙 乙的私鑰在這個協(xié)議下,任何人都能夠成為乙。所有你所要的只是公鑰和私鑰。你發(fā)送給甲說你就是乙,這樣你的公鑰就代替了乙的密碼。然后,你發(fā)送用你的私鑰加密的消息,證明你的身份。甲卻不能發(fā)覺你并不是乙。為了解決這個問題,標準組織已經(jīng)發(fā)明了證書。一個證書有以下的內容:* 證書的發(fā)行者姓名* 發(fā)行證書的組織* 標題的公鑰* 郵戳證書使用發(fā)行者的私鑰加密。每一個人都知道證書發(fā)行者的公鑰(這樣,每個證書的發(fā)行者擁有一個證書)。證書是一個把公鑰與姓名綁定的協(xié)議。通過使用證書技術,每一個人都可以檢查乙的證書,判斷是否被假冒。假設乙控制好他的私鑰,并且他確實是得到證書的乙,就萬事大吉了。這些是修訂后的

20、協(xié)議:甲乙:你好乙甲:嗨,我是乙,乙的校驗甲乙:prove it乙甲:甲,我是乙 信息段甲, 我是乙 乙的私鑰現(xiàn)在當甲收到乙的第一個消息,他能檢查證書,簽名(如上所述,使用信息段和公鑰解密),然后檢查標題(乙的姓名),確定是乙。他就能相信公鑰就是乙的公鑰和要求乙證明自己的身份。乙通過上面的過程,制作一個信息段,用一個簽名版本答復甲。甲可以校驗乙的信息段通過使用從證書上得到的公鑰并檢查結果。如果一個黑客,叫H甲H:你好H不能建立一個令甲相信的從乙的消息。交換密碼(secret)一旦甲已經(jīng)驗證乙后,他可以發(fā)送給乙一個只有乙可以解密、閱讀的消息:甲乙:secret乙的公鑰唯一找到密碼的方法只有使用乙

21、的私鑰解碼上述的信息。交換密碼是另一個有效使用密碼加密的方法。即使在甲和乙之間的通訊被偵聽,只有乙才能得到密碼。使用密碼作為另一個secret-key增強了網(wǎng)絡的安全性,但是這次這是一個對稱的加密算法(例如DES、RC4、IDE甲)。因為甲在發(fā)送給乙之前產生了密碼,所以甲知道密碼。乙知道密碼因為乙有私鑰,能夠解密甲的信息。但他們都知道密碼,他們都能夠初始化一個對稱密碼算法,而且開始發(fā)送加密后的信息。這兒是修定后的協(xié)議:甲乙:你好乙甲:嗨,我是乙,乙的校驗甲乙:prove it乙甲:甲,我是乙 信息段甲,我是乙 乙的私鑰甲乙:ok 乙,here is a secret secret乙的公鑰乙甲:

22、some messagesecret-key黑客竊聽那么如果有一個惡意的黑客H在甲和乙中間,雖然不能發(fā)現(xiàn)甲和乙已經(jīng)交換的密碼,但能干擾他們的交談。他可以放過大部分信息,選擇破壞一定的信息(這是非常簡單的,因為他知道甲和乙通話采用的協(xié)議)。甲H:你好H乙:你好乙H:嗨,我是乙,乙的校驗H甲:嗨,我是乙,乙的校驗甲H:prove itH乙:prove it乙H:甲,我是乙 信息段甲,我是乙 乙的私鑰H甲:甲,我是乙 信息段甲,我是乙 乙的私鑰甲H:ok 乙,here is a secret secret 乙的公鑰H乙:ok 乙,here is a secret secret 乙的公鑰乙H:some

23、 messagesecret-keyH甲:Garblesome messagesecret-key H忽略一些數(shù)據(jù)不修改,直到甲和乙交換密碼。然后H干擾乙給甲的信息。在這一點上,甲相信乙,所以他可能相信已經(jīng)被干擾的消息并且盡力解密。需要注意的是,H不知道密碼,他所能做的就是毀壞使用秘鑰加密后的數(shù)據(jù)。基于協(xié)議,H可能不能產生一個有效的消息。但下一次呢?為了阻止這種破壞,甲和乙在他們的協(xié)議中產生一個校驗碼消息(message authentication code)。一個校驗碼消息(MAC)是一部分由密碼和一些傳輸消息產生的數(shù)據(jù)。信息段算法描述的上述特性正是它們抵御H的功能:MAC= Digest

24、some message,secret 因為H不知道密碼,他不能得出正確的值。即使H隨機干擾消息,只要數(shù)據(jù)量大,他成功的機會微乎其微。例如,使用HD5(一個RSA發(fā)明的好的加密算法),甲和乙能夠發(fā)送128位MAC值和他們的消息。H猜測正確的MAC的幾率將近1/18,446,744,073,709,551,616約等于零。這是又一次修改后的協(xié)議:甲乙:你好乙甲:嗨,我是乙,乙的校驗甲乙:prove it乙甲:嗨,我是乙,乙的校驗甲,我是乙信息段甲,我是乙 乙的私鑰ok 乙,here is a secret secret 乙的公鑰some message,MACsecret-key現(xiàn)在H已經(jīng)無技可

25、施了。他干擾了得到的所有消息,但MAC計算機能夠發(fā)現(xiàn)他。甲和乙能夠發(fā)現(xiàn)偽造的MAC值并且停止交談。H不再能與乙通訊。OpenSSL FAQ參考資料: /linux_server/0360apache.php#www_ssl_files20.5 建立連線加密網(wǎng)站 (https) 及防砍站腳本從本章一開始的 20.1 就談過 http 這個通訊協(xié)定是明碼傳送資料,而那個 https 才是加密傳輸?shù)模∧羌用艿姆椒ㄊ峭高^ SSL 啊,這個 SSL 就是以 openssl 軟體來提供的一個加密函式庫。更多與 https 有關的資訊,請參考 20.1.4 吧!20

26、.5.1 SSL 所需軟體與憑證檔案及預設的 https要達成讓 apache 支援 https 協(xié)定的話,你必須要有 mod_ssl 這個軟體才行!請先自行使用 yum 去裝好這個軟體吧! 同時,我們的 CentOS 5.x 也已經(jīng)預設提供了 SSL 機制所需要的私鑰與憑證檔案囉!相關軟體提供的檔案如下: /etc/httpd/conf.d/ssl.conf:mode_ssl 提供的 Apache 設定檔; /etc/pki/tls/private/localhost.key:系統(tǒng)私鑰檔,可以用來製作憑證的! /etc/pki/tls/certs/localhost.crt:就是加密過的憑證

27、檔!(signed certificate) 既然系統(tǒng)都已經(jīng)幫我們搞定了,那麼就讓我們直接來瀏覽一下,看看系統(tǒng)預設提供的 https 是長的什麼模樣吧! 打開你的瀏覽器,輸入 https:/你的IP 來連線看看:圖 20.5-1、在 firefox 底下看到的 SSL 安全問題圖示就如同本章 20.1.4 談到的,因為我們這個 Apache 網(wǎng)站並沒有將此憑證向 CA 註冊,因此就會出現(xiàn)上述的訊息了! 這就類似 ssh 連線時,系統(tǒng)需要你輸入 yes 是一樣的啦!要接受憑證後才能夠進行加密的功能。所以,請點選上圖中的箭頭 1,此時就會延伸出箭頭 2 的位置,按下去吧!然後就會出現(xiàn)如下所示:圖

28、20.5-2、在 firefox 底下接受一把私有的憑證所需要的流程如果你確定這個網(wǎng)站是你自己的可信任網(wǎng)站,那就按下 1 及 2 的箭頭處!如果還想要看一下這個網(wǎng)站所提供的相關憑證內容, 就按下 3 箭頭的地方:圖 20.5-3、在 firefox 底下觀察憑證的詳細內容由於這個憑證檔案的建置是在第一次啟動 Linux 時就安裝好了憑證檔,而在 CentOS 5.x 底下,預設的憑證有效期限為 1 年,所以你就會看到上圖中箭頭 2 所指的,簽發(fā)日到到期日共有一年??!當你按下關閉後,就能夠看到實際的 https:/ 提供的網(wǎng)站內容囉!這就是預設的 SSL 網(wǎng)站啦!你的重要資訊可以放在這裡讓資料在

29、網(wǎng)路上傳輸更佳的安全!20.5.2 擁有自製憑證的 https建立憑證檔預設的憑證雖然已經(jīng)可以讓你順利的使用 https 了,不過,憑證的有效日僅有 1 年而已實在討厭 所以,我們還是得要自製憑證才行這個憑證的製作僅是私有 WWW 網(wǎng)站的用途,並沒有要拿去 CA 註冊喔! 那麼自製憑證需要什麼步驟呢?基本上需要的流程是:1. 先建立一把 private key 預備提供給 SSL 憑證簽章要求所用; 2. 最後建立 SSL 憑證 (test certificates)。 那麼建立憑證有沒有很困難呢?沒有啦!因為 CentOS 5.x 已經(jīng)幫我們寫好了 Makefile 了!你先到 /etc/p

30、ki/tls/certs 這個目錄下,然後直接輸入 make 這個指令,就能夠看到所有可行的目標動作!我們就可以很快速的建置好憑證喔! 不過,因為預設的私鑰檔需要加上密碼才能夠進行建立,所以我們還得要額外進行一下動作就是了。好! 現(xiàn)在假設我們要建立的是名為 vbird 的憑證!那麼底下流程中,所有的關鍵字就是 vbird!簡單流程如下所示:# 1. 先到 /etc/pki/tls/certs 去建立一把給 Apache 使用的私鑰檔案:rootwww # cd /etc/pki/tls/certsrootwww certs# make vbird.keyumask 77 ; /usr/bin/

31、openssl genrsa -des3 1024 vbird.key =其實是這個指令Generating RSA private key, 1024 bit long modulus.+.+e is 65537 (0x10001)Enter pass phrase: =這裡輸入這把私鑰的密碼,需要多於四個字元!Verifying - Enter pass phrase: =再一次!# 2. 將剛剛建立的檔案中,裡面的密碼取消掉!不要有密碼存在啦!rootwww certs# mv vbird.key vbird.key.rawrootwww certs# openssl rsa -in v

32、bird.key.raw -out vbird.keyEnter pass phrase for vbird.key.raw: =輸入剛剛的密碼啦!writing RSA keyrootwww certs# rm -f vbird.key.raw =舊的金鑰檔移除rootwww certs# chmod 400 vbird.key =權限一定是 400 才行!# 3. 建置所需要的最終憑證檔!rootwww certs# make vbird.crt SERIAL=2011052601umask 77 ; /usr/bin/openssl req -utf8 -new -key vbird.k

33、ey -x509 -days 365 -out vbird.crt -set_serial 2011052601 =可以加入日期序號You are about to be asked to enter information that will be incorporatedinto your certificate request.-Country Name (2 letter code) GB:TWState or Province Name (full name) Berkshire:TaiwanLocality Name (eg, city) Newbury:TainanOrganiz

34、ation Name (eg, company) My Company Ltd:KSUOrganizational Unit Name (eg, section) :DICCommon Name (eg, your name or your servers hostname) :www.centos.vbirdEmail Address :vbirdwww.centos.vbirdrootwww certs# ll vbird*-rw- 1 root root 1273 5月 26 15:37 vbird.crt =最終憑證檔!-rw- 1 root root 887 5月 26 15:04

35、vbird.key =系統(tǒng)私鑰檔這樣就建立好憑證檔了!接下來就是得要去處理 ssl.conf 這個設定內容喔!另外,這把憑證依舊只能使用 1 年!如果你想要建立十年的憑證,那就得要修改一下 Makefile 裡面的內容,將 365 改成 3650 即可!Tips:如果你曾經(jīng)多次重複進行上述的建立憑證動作,會發(fā)現(xiàn)到同一個憑證內容若製作多次,則最終用戶端瀏覽器會出現(xiàn)一些錯誤訊息, 導致無法連線!因此,建議多加一個序號 (SERIAL) 的參數(shù),可以修訂這個錯誤喔! 修改 ssl.conf 的內容,使用自製憑證修改 ssl.conf 的內容也是很簡單!只要修改兩個地方,亦即是檔案檔名的地方即可!ro

36、otwww # vim /etc/httpd/conf.d/ssl.confSSLCertificateFile /etc/pki/tls/certs/vbird.crt =約在 112 行SSLCertificateKeyFile /etc/pki/tls/certs/vbird.key /var/www/https/index.html# 2. 開始處理 ssl.conf 的內容囉!rootwww # vim /etc/httpd/conf.d/ssl.confListen 443 =預設的監(jiān)聽埠口!不建議修改! =就是虛擬主機的設定囉!DocumentRoot /var/www/http

37、s =約84行,拿掉註解改掉目錄名稱ServerName *:443 =拿掉註解,並將主機名稱設定為 *SSLEngine on =有支援 SSL 的意思!SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOWSSLCertificateFile /etc/pki/tls/certs/vbird.crtSSLCertificateKeyFile /etc/pki/tls/certs/vbird.keyrootwww # /etc/init.d/httpd restart大部分都使用預設值,就是 DocumentRoot

38、 以及 ServerName 需要留意就是了。如此一來,我們就將 https, http 兩個完整的分開,你的重要資料需要加密的,終於有個可靠的地方擺放囉!_20.5.4 防砍站軟體幾個比較知名的網(wǎng)站管理員大概都有這樣的困擾,那就是網(wǎng)站常被砍站軟體所強力下載,結果造成主機的 CPU loading 過重,最後竟然會導致死掉唉!真是的人怕出名豬怕肥吶!先來解釋一下什麼是砍站吧!所謂的砍站,就是以類似多點連線下載的持續(xù)性訊息傳遞軟體進行網(wǎng)站資料的下載,而且, 一啟用該軟體,該軟體就將整個網(wǎng)站的內容都給他 download 下來,很厲害吧!沒錯!是很厲害,但是卻也害死人了怎麼說呢?因為這種軟體常常會

39、為了加快 download 的速度,所以採用多點連線的方式,也就是會持續(xù)不斷的向 Server 發(fā)出要求封包,而由於這些封包並不見得能夠成功的讓 Server 把資料傳導給 Client 端,常常會無法投遞就是啦!這樣的結果就是.造成 Server 要一直不斷的回應,又無法正確的回應出去, 此外,要求太過頻繁,結果主機應接不暇,最後.就當機了.真的是林老師鳥哥的鳥站主機古早以前,就是因為這樣的原因,導致服務常常斷斷續(xù)續(xù)的,並且,由於 CPU loading 太高,結果讓正常連線進來看資料的網(wǎng)友沒有足夠的資源,因此網(wǎng)頁開啟的速度就變的很慢唉 這些砍站的人,也太不道德啦!由於這種砍站軟體真的很麻煩

40、,一不注意馬上就又會被砍站而當機,三天兩頭就要重新開機一次,完全讓 Linux 的穩(wěn)定性無法發(fā)揮!真是氣死了後來,鳥哥就自行寫了一個 scripts 來擋這樣的 IP !我的作法是這樣的:1. 由於砍站軟體會多點連續(xù)下載,因此,同一個 IP 在同一個時間內,會有相當多的連線發(fā)生; 2. 由於他是重複不斷的要求連線,因此剛剛建立的連線在達成下載的目的後,會立刻死掉, 而又多生出其他的連線出來,因此,這個時候他的連線情況就變的相當?shù)牟徽A耍?3. 由於某些較舊的砍站軟體並不會欺騙主機,所以,會在主機的登錄檔裡面記錄住 Teleport 的標記! 4. 既然如此的話,那麼我就讓我的主機每分鐘去檢查

41、兩個東西(1)先檢查 log file ,如果有發(fā)現(xiàn)到相關的 Teleport 字詞,就將該 IP 抵擋掉;(2)使用 netstat 來檢查同一個 IP 的同時連線,如果該連線超過一個值(例如同時有 12 個連線)的話,那麼就將該 IP 抵擋掉! 5. 此外,由於上面的方案可能會將 Proxy 的 Client 端也同時抵擋掉,真是可憐??! 這個時候,這支程式就會主動的將(1)的情況的主機抵擋 3 天,至於(2)的情況則抵擋2小時! 過了該抵擋的時限後,該 IP 即可又連上我們的主機了! 大致上就是這樣吧!這樣的一程式需要與 iptables 相互配合,所以,請先查閱一下第九章的防火牆內容,

42、然後再來下載這支程式吧! 這支程式你可以在底下的網(wǎng)址下載喔! /download/index.php?action=detail&fileid=47詳細的安裝步驟鳥哥已經(jīng)以中文寫在該檔案裡面了,所以請先查看一下該檔案的前面說明部分吧!此外, Study Area 的 netman 大哥也已經(jīng)開發(fā)了一套很棒的防砍站的程式了! 在防堵砍站的原理上面是完全相同的,不過寫法可能不是很雷同就是了!如果有需要的話,也可以前往 Study-Area 搜尋一下囉! /viewtopic.php?t=1364320.

43、6 重點回顧 WWW 的傳輸協(xié)定使用 HTTP (Hyper Text Transport Protocol) ,最早是由歐洲核子物理實驗室的伯納斯-李所發(fā)展的; WWW 在 server/client 端主要傳遞的訊息資料以 HTML (Hyper Text Markup Language) 語法為主; 為制訂與發(fā)佈 WWW 標準語法的組織,你撰寫網(wǎng)頁最好依據(jù)該站之標準為宜; Apache 是達成 WWW 伺服器的一項軟體,至於用戶端的瀏覽則使用瀏覽器,目前可使用 firefox 瀏覽器可達成的主機連結不止 http,可在網(wǎng)址列輸入對應的協(xié)定:/主機:po

44、rt/資源即可取得不同的資料; 若要 WWW 伺服器可以達成與使用者資訊互動,尚須要網(wǎng)頁程式語言 (如PHP, perl 等) 以及資料庫軟體 (如 MySQL, portgresql 等); 因為 http 使用的是明碼傳送,目前 WWW 可利用 SSL 等機制來進行資料加密的傳輸; Apache 的設定檔其實只有 httpd.conf 而已,其他的設定檔都是被 Include 進來的; Apache 的首頁目錄以 DocumentRoot 決定,首頁檔案則以 DirectoryIndex 決定; Apache 可以透過虛擬主機的設定以指定不同主機名稱到不同的 DocumentRoot 下;

45、 Apache 是多執(zhí)行緒的軟體,可以啟動多個程序來負責 WWW。主要的模組有 prefork 及 worker, 至於最大可連線的數(shù)量則以 MaxClients 來決定。 若要正確的讓瀏覽器顯示網(wǎng)頁的編碼格式,最好在網(wǎng)頁上宣告語系,並將 Apache 的設定檔 httpd.conf 內的 AddDefaultCharset 設定值取消; 在 Apache 可瀏覽的目錄權限設定上 (Options 參數(shù)),最好將 Indexes拿掉; 透過 AllowOverride 與 .htaccess 可讓使用者在自己管理的目錄下制訂自己的風格; Apache 本身提供一個 apachectl 的 sc

46、ript 讓使用者得以快速管理其 apache 的服務; Apache 分析的資料如果比較重要時,務必以 SSL 或者是保護目錄來保護。 20.7 本章習題 請問 LAMP 這個伺服器代表什麼意思? 這個名詞代表了 Linux + Apache + MySQL + PHP 這個 WWW 伺服器的組成! Apache 的設定檔檔名一般為何? Apache 的設定檔檔名為 httpd.conf ,不過,由於 httpd.conf 內容參數(shù)可以使用 include 額外設定檔名,所以也可能具有其他的額外設定檔喔! 在 Apache 的設定檔當中,哪一個參數(shù)是用來設定主網(wǎng)頁的? 設定主網(wǎng)頁的參數(shù)為:D

47、ocumentRoot 喔!後面接的是主網(wǎng)頁放置的目錄! 哪一個指令用來重新啟動與關閉 Apache ?(請以 Apache 本身提供的功能來說明) 其實不論是 RPM 還是 Tarball 都是使用 apachectl 這個檔案來啟動 apache 的,不過 RPM 已經(jīng)將該檔案整合到 /etc/init.d/httpd 裡面去而已 當我使用 ps -aux 的時候,發(fā)現(xiàn)好多的 httpd. 的程序,這是正常的嗎? 最多可以有幾個程序是在那個檔案的那個參數(shù)所設定的? 由於 Apache 預設為多執(zhí)行緒,所以啟動多個 processes 是正常的。至於啟動幾個 process 則由很多設定所處

48、理, 包括 MinSpareServers, MaxSpareServers, MaxClients 等等。 又,呈上題,這些程序 (process) 的 owner 與 group 是誰?該察看那個設定檔的那個參數(shù)? 同樣察看 httpd.conf 裡面的 User 與 Group 這兩個設定值! 如果今天我以 http:/your.ip 結果卻發(fā)現(xiàn)瀏覽器出現(xiàn)類似 FTP 的畫面(會列出該目錄下的所有檔案),這是什麼原因造成的?該如何避免? 這是由於在 httpd.conf 裡面,針對該目錄的設定參數(shù) Options 當中,設定了 Indexes 這個設定值,導致當找不到主頁時(通常是 index.html),就會將該目錄下的所有檔案秀出來!解決的方法就是拿掉 Options 裡面的 Indexes 設定值即可! 在 Apache 裡面 .htaccess 這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論