1. 程式人生 > >https的本地測試環境搭建 http網站轉換成https網站之後的問題

https的本地測試環境搭建 http網站轉換成https網站之後的問題

  http://www.admin5.com/article/20150525/600227.shtml

一:什麼是https

  SSL(Security Socket Layer)全稱是加密套接字協議層,它位於HTTP協議層和TCP協議層之間,用於建立使用者與伺服器之間的加密通訊,確保所傳遞資訊的安全性,同時SSL安全機制是依靠數字證書來實現的。

  SSL基於公用金鑰和私人金鑰,使用者使用公用金鑰來加密資料,但解密資料必須使用相應的私人金鑰。使用SSL安全機制的通訊過程如下:使用者與IIS伺服器建立連線後,伺服器會把數字證書與公用金鑰傳送給使用者,使用者端生成會話金鑰,並用公共金鑰對會話金鑰進行加密,然後傳遞給伺服器,伺服器端用私人金鑰進行解密,這樣,使用者端和伺服器端就建立了一條安全通道,只有SSL允許的使用者才能與IIS伺服器進行通訊。

  提示:SSL網站不同於一般的Web站點,它使用的是“HTTPS”協議,而不是普通的“HTTP”協議。因此它的URL(統一資源定位器)格式為“https://網站域名”。

  二:https的本地測試環境搭建

  1:win7/windows server 2008R2中 IIS7/IIS7.5 搭配https本地測試環境

  2:windows server 2003中IIS6.0 搭配https本地測試環境

  三:asp.net 結合 https的程式碼實現

  https是由IIS,瀏覽器來實現的傳輸層加密,不需要特意的編碼。。。平時怎麼在asp.net裡面編寫程式碼,就怎麼寫。

  很可能要問,為什麼我的站點使用了https之後,用firebug之類的軟體檢視值提交的時候,還是會顯示明文呢?例如,部落格園的登陸介面提交。

  http://passport.cnblogs.com/login.aspx

image
image

  為什麼這裡還是能看到明文的使用者名稱和密碼呢?

  原因是因為:https(ssl)的加密是發生在應用層與傳輸層之間,所以,在傳輸層看到的資料才是經過加密的,而我們捕捉到的http post的,是應用層的,是還沒經過加密的資料。

  加密的資料只有客戶端和伺服器端才能得到明文

  客戶端到服務端的通訊是安全的

  支付寶也是https的,但是他的同時也增加了安全控制元件來保護密碼, 以前認為這個只是用來防鍵盤監聽的,其實,看下面http post截獲的密碼:這個安全控制元件把給request的密碼也先加了密,緊接著https再加次密,果然是和錢打交道的,安全級別高多了:)

image

  四:http網站轉換成https網站之後遇到的問題

  整站https還是個別的頁面採用https?網站的連線是使用相對路徑?還是絕對路徑?

  如果是整站都是https,那麼會顯得網頁有些慢,如果是個別頁面採用https,那麼如何保證從https轉換到http的時候的url的準確性呢?

  比如我們用http的時候,網站的頭部底部都是用的相對路徑,假如你的頁面是 http://aa/index.aspx 你跳轉到 https://aa/login.aspx 這裡怎麼來跳轉?只能把超連結寫死

  登陸 但是這樣的話,你跳轉過去之後的頁面 ,所有的相對路徑都變成了https開頭了,這樣很影響網站的效率。

  雖然使用絕對地址可以解決,但是那樣顯然不好移植。

  下面就是使用第三方的元件,來解決上面的這個問題

  http://www.codeproject.com/Articles/7206/Switching-Between-HTTP-and-HTTPS-Automatically-Ver

  步驟 先下載dll檔案 http://code.google.com/p/securityswitch/downloads/list 我選擇的是 SecuritySwitch v4.2.0.0 - Binary.zip這個版本

image

  1: 我們來看看測試專案

image

  admin 資料夾,需要登入之後,才能訪問。admin裡面的 login.aspx 可以訪問。整個admin資料夾都需要https訪問

image

  contact.aspx 需要https 訪問

image

  default.aspx 和 view.aspx 採用 http 訪問

image

  連結我們都採用相對路徑,並沒有寫死成 http://www.xx.com/a.aspx 或者是 https://www.xx.com/a.aspx

image

  下面我們開始用SecuritySwith來實現上面的https和http訪問的規則

  2:在專案上,新增引用 SecuritySwitch.dll ,並且新增 智慧提示

image
image
image

  這樣,只能提示就有了。

image

  3:然後我們在web.config裡面新增設定 。根據IIS的不同,還分為 IIS6+ IIS7.X(經典模式) 以及 IIS7(整合模式) 的不同的配置,這裡我們是按照IIS6+IIS7.X的(經典模式)來配置的.

  只看看裡面的 SSL配置即可

1

2

3

  4:其他就沒有你什麼事情了,url的 http 後臺 https 的切換,都是securitySwitch 來控制