擺脫瀏覽器束縛的一項靈活http加密技術

      當我們在瀏覽器的URL欄輸入網址時,絕大多數的協議頭都是http(如 http://www.csdn.net/),我們知道這樣的協議請求是通過明文在網絡上傳輸的,無論是協議請求或是傳輸數據都可以被截包工具輕易得到並能夠分析出用戶發送的個人信息,在一些比較敏感的情景下,比如用到金額交易方面的數據時就會用到加密技術,而openssl在這其中則扮演着舉足輕重的作用,在web服務器上安裝好openssl軟件包並做一些相關的配置(網上有很多關於服務器配置openssl,這裏不再闡述),而在瀏覽器上輸入https:// (如 https://www.csdn.net/),就可以與服務器建立起安全的加密通信協議,當然在一般的情況下,這已經可以滿足的絕大多數的加密情形,但是如果對於更加嚴密的系統,如在客戶端和服務器端應用自己獨特的加密算法或加密套件,https這種情形就行不通,因爲很多瀏覽器都是不開源的,比如IE,想加入自己的加密算法幾乎是不可能的事情,那我們怎麼樣才能用http協議(在瀏覽器的url欄內輸入如http://www.csdn.net/)並且達到https的加密效果並且可以適當的加入自己的加密算法呢?
     答案就是運用本地代理,在代理服務器上加密然後傳輸到Internet,通過代理服務器的數據也是通過openssl與遠端web服務器協商的加密握手過程。這樣做的好處有兩個,一個是在瀏覽器的url欄內的協議名字是http,第二個就是本地代理可以加入自己的算法更能保證加密的安全性。
     縱觀開源加密代理,比較優秀的就屬stunnel了,Stunnel是一個自由的跨平臺軟件,用於提供全局的TLS/SSL服務。針對本身無法進行TLS或SSL通信的客戶端及服務器,Stunnel可提供安全的加密連接。該軟件可在許多操作系統下運行,包括Unix-like系統,以Windows。Stunnel依賴於某個獨立的庫,如OpenSSL或者SSLeay,以實現下面的TLS或SSL協議。Stunnel由Michal Trojnara 和 Brian Hatch負責維護,遵照GNU通用公共許可證進行發佈。官方網站,http://stunnel.mirt.net
      stunnel的最大特點就是它是一款開源軟件,融合了開源的openssl技術,使得加密流程的安全性大大增加。
      具體配置:
      stunnel的代碼在這裏不做闡述,想加入自己算法的朋友請參照openssl與stunnel源碼。
      1.stunnel中有一個叫stunnel.conf的配置文件,在這個文件中可以配置如源端口號,目的Ip地址、端口號的信息,在這裏可以用源端口號配置stunnel接聽的本地端口號是多少,如3128,那麼在本地所有發送到3128的信息都會被stunnel截獲並加密,然後將密文發送到在這個文件中配置好的目的IP地址和目的端口號。

       stunnel.conf:

       

       cert = stunnel.pem
       socket = l:TCP_NODELAY=1
       socket = r:TCP_NODELAY=1
       client=yes

 

       [http2ssl]
       accept = 3128
       connect = 192.168.0.45:455


       [socks2ssl]
       accept = 4567

       connect =192.168.0.45:455


      2.瀏覽器方面配置,本文以IE爲例:Inernet屬性->連接->局域網設置->代理服務器->在地址中填入本地Ip地址:127.0.0.1,端口設置爲3128。也就是通過瀏覽器Url欄輸入的http請求通過代理服務器發送到stunnel偵聽好的端口(本文爲3128)。
      3.最後是服務器,在服務器開啓的openssl服務端口是偵聽在stunnel的配置文件中的目的端口號。然後通過方向代理明文傳到本地局域網的相關web服務器。
      注意:服務器一定要有代理功能,不然在整個會話中的session會保持不住。

發佈了18 篇原創文章 · 獲贊 5 · 訪問量 10萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章