熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Java高級技術 >> 正文

安全連接方式SSL

2013-11-23 19:43:21  來源: Java高級技術 

  安全連接方式SSL
  通常的連接方式中通信是以非加密的形式在網絡上傳播的這就有可能被非法竊聽到尤其是用於認證的口令信息為了避免這個安全漏洞就必須對傳輸過程進行加密對HTTP傳輸進行加密的協議為HTTPS它是通過SSL(Secure socket layer)進行HTTP傳輸的協議不但通過公用密鑰的算法進行加密保證傳輸的安全性而且還可以通過獲得認證證書CA保證客戶連接的服務器沒有被假冒
  使用公用密鑰的方式可以保證數據傳輸沒有問題但如果浏覽器客戶訪問的站點被假冒這也是一個嚴重的安全問題這個問題不屬於加密本身而是要保證密鑰本身的正確性問題要保證所獲得的其他站點公用密鑰為其正確的密鑰而非假冒站點的密鑰就必須通過一個認證機制能對站點的密鑰進行認證當然即使沒有經過認證仍然可以保證信息傳輸安全只是客戶不能確信訪問的服務器沒有被假冒如果不是為了提供電子商務等方面對安全性要求很高的服務一般不需要如此嚴格的考慮
  下面我們就分幾節來談到如何在Apache服務器上實現SSL
  
  第一節SSL
  SSL除了可以用在Web服務器與浏覽器之間信息交換以外還可以支持其他我們所熟識的網絡應用以TCP/IP網絡層來看SSL是定位在網絡層之上的應用協議如圖
  HTTPFTPSMTP
  Secure Socket Layer
  TCP層
  IP層
  任何以TCP/IP層以上的網絡協議SSL都可以支持因此HTTPFTPSMTP等等皆是SSL的保護范圍SSL協議一共包含兩個部分SSL Handshake協議和SSL Record協議前者是負責通信前的一些參數協商後者則是定義SSL的內部數據格式
  SSL Handshake協議
   SSL中Handshake協議可以說是SSL的前置步驟就好象初次見面的兩個人回先自我介紹一番再開始談話一樣通信的餓雙方(商店的服務器與客戶計算機)先進行溝通協調有關SSL通信的參數設置其中包括
  ※通信中所使用的SSL版本※信息加密用的算法 ※客戶端的身份驗證要求 ※所使用的公開金鑰算法
  這個協議的餓大致步驟如下
  ()Client Hello:首先由客戶端計算機向服務器Say Hello並同時將客戶端計算機所能支持的安全模塊告訴對方以便溝通信息內容包括SSL協議版本本次聯機的餓識別碼以及加密模塊等
  ()Server Hello這時商店端服務器在收到這個信息後立即送出包含以下信息的響應信息給客戶端 ※服務器的數字證書讓客戶端可以檢查服務器的身份
  ※如果服務器要求雙方相互認證的話則送出認證請求的餓信息要求客戶端也提出識別身份的數字證書
  ※服務器用來加密的金鑰
  ()加解密參數當客戶端收到服務器的信息後就可根據要求來響應並且也將客戶端的公用金鑰也送給對方作為後續信息的加解密之用到這個階段為止通信雙方都已經達成了共識並准備傳送真正的信息內容
  ()HTTP數據流協調的工作已經大功告成了!這時雙方就可以HTTP協議來進行數據交換了
  SSL Record協議
  顧名思義Record協議是在描述SSL信息交換的過程中的記錄格式SSL協議是介於應用層和網絡層之間因此它回接收來自應用層的信息並加以包裝後交由下一層(也就是網絡層來傳送)
  第二節Apache上實現SSL
  雖然Apache服務器不支持SSL但Apache服務器有兩個可以自由使用的支持SSL的相關計劃一個為ApacheSSL它集成了Apache服務器和SSL另一個為Apache+mod_ssl它是通過可動態加載的模塊mod_ssl來支持SSL其中後一個是由前一個分化出的並由於使用模塊易用性很好因此使用范圍更為廣泛還有一些基於Apache並集成了SSL能力的商業Web服務器然而使用這些商業Web服務器主要是北美這是因為在那裡SSL使用的公開密鑰的算法具備專利權不能用於商業目的其他的國家不必考慮這個專利問題而可以自由使用SSL
  以下是我們安裝說需要的各部分說明
  apache_targz (服務器)
  mod_ssltargz (SSL接口模塊)
  openssltargz (ssl安全和算法類庫)
  mod_perltargz (perl接口模塊)
  rsareftarZ(RSA算法包)
  perl_targz(perl環境)
  如果你的系統是從頭裝起的話建議你留出一個叫/chroot的分區用來運行Apache
  至於這個分區的大小取決於你自已一般來說一個普通的網站有M也就夠了但你的系統如果早就運行了Apache你可以另外開辟一個分區或者選擇不用獨立分區來安裝僅僅在根下面開一個目錄
  
  另外我假定你的系統已經通過了一定的安全檢測——在安裝Apache之前(如果有其它漏洞存在的話你認為運行在其上的Apache會怎樣所謂覆巢之下焉有完卵:)檢測至少要包括(但不僅限於)——移除不安全的SUID程序升級某些守護進程去掉不必要的服務還假定你是的WEB SERVER是運行TCP/IP而且有自己的地址
  
  一平台
  以下測試都在下列平台下通過: 
  Slackware x distribution using gcc  and Perl v_
  Solaris  on Sparc using gcc v and Perl v_ 
  Digital UNIX VF distribution using gcc  and Perl v_ 
  二獲取所需要的軟件
  因為阿帕奇並沒有在她的包裡自己SSL因此我們必須先下載到這些加密網頁所必需的部份
  Apache Web Server  
  不必多說我們當然需要獲得這個web server現在的版本是阿帕奇是現在世界
  上使用最廣泛的web server
  
  mod_ssl  
  這是一個為Apachex web server提供強力加密的的軟件模塊它使用的是SSL v和v 以及TLS(Transport Layer Security)v 協議該軟件包是在BSD的license下開發的在非商業的情況下你可以自由地使用它要判斷該使用哪一個版本的mod_ssl很簡單它的版本號是格式的也就是說你如果用的是
  的Apache那麼就該用的mod_ssl
  
  mod_perl  
  Apachex 的perl接口模塊
  
  Open SSL  
  這一軟件包提供了SSL v/v(Secure Sockets Layer)及TLS v(Transport Layer Security) 協議的加密保護
  
  RSAref  用搜索引擎查找一下rsareftarZ應該就能找到了RSA加密算法的實現軟件包
  
  Perl減壓縮安裝(詳見Perl介紹)
  Perl是一種編程語言它是一種非常流行的編程語言在文本處理端口通信協調多個不同應用以及完成其他諸多任務時都受到人們的歡迎Perl同時也是一種頗有名氣的流行CGI編程語言不過這只是Perl諸多應用中的一種
  
  我們將把這些程序安裝於/usr/local目錄下 
  增加功能模塊可以給阿帕奇更強大的功能如果你需要更多的模塊的話自己去獲得它並且加載比如mod_php這一模塊也是現在流行的可以使阿帕奇提供php腳本支持……
  三軟件包的安裝
  
  在實際安裝前我們要決定我們將把web server安裝在什麼環境下對於一個對安全有相當高要求的人來說可以將服務器和軟件安裝於chroot環境chroot改變root 目錄並且僅在這一目錄中執行程序這提供了一個內建的小環境即使入侵者已經通過cgi程序或者其它辦法通過端口獲得了系統的進入權限它也只能夠在這一受限的環境中活動從安全角度考量這當然是最好的但對系統管理員來說這樣安裝相對麻煩一些還必須把一些必要的庫perl以及相關工具也搬到chroot中所以——你自己決定吧這裡我們介紹的是在chroot下安裝
  
  展開這些軟件包:
  
  #gzip d c apache_targz | tar xvf 
  #gzip d c mod_ssltargz | tar xvf 
  #gzip d c openssltargz | tar xvf 
  #gzip d c mod_perltargz | tar xvf 
  
  
  展開並且編譯rsaref
  
  #mkdir rsaref
  #cd rsaref
  #gzip d c /rsareftarZ | tar xvf 
  #tar xvf rsareftar
  #cp rp install/unix temp
  #cd temp
  #make
  #mv rsarefa librsarefa
  #cd //
  
  
  編譯OpenSSL
  
  #cd openssl
  #perl util/perlpathpl /usr/bin/perl (Path to Perl)
  #/config L`pwd`//rsaref/temp/
  #make
  #make test
  #cd 
  
  
  將mod_perl加到Apache的編譯選項裡
  
  #cd mod_perl
  #perl MakefilePL APACHE_PREFIX=/usr/local/apache \
  
  APACHE_SRC=/apache_/src \
  
  USE_APACI=
  
  你會得到下面的提示:
  
  Configure mod_perl with /apache_/src ? [y]
  
  直接按enter就是默認的yes
  
  然後Makefile會問你是否建立httpd可以用n選擇不
  
  #make
  #make install
  #cd 
  
  將mod_ssl加到Apache中
  
  #cd mod_ssl
  #/configure withapache=/apache_ \
  
  prefix=/usr/
From:http://tw.wingwit.com/Article/program/Java/gj/201311/27365.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.