.NET MVC實現SSL(https)加密傳輸全程攻略


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

  為了保證敏感數據的傳輸安全,我們在.net MVC開發的站點引入SSL加密。

 

  如何在代碼里實現?

  網上說了很多關於.net MVC使用https安全傳輸的方法,我都一一試過,遇到各種問題。后來參考國外一些文章,發現其實很簡單:只要在Global.asax.cs中的RegisterGlobalFilters方法里添加一個RequireHttpsAttribute的Filter就OK!

1         public static void RegisterGlobalFilters(GlobalFilterCollection filters) {
2             filters.Add(new HandleErrorAttribute());
3             filters.Add(new RequireHttpsAttribute());
4         }

  這樣設置后,整個站點都會被強迫使用https連接訪問。

  關於在發布到IIS前如何在本地使用https調試,參考Working with SSL at Development Time is easier with IISExpress,溫馨提醒:必須裝VS2010 SP1。

 

  如何在IIS上部署?

  為支持 SSL 通信,必須為 Web 服務器配置 SSL 證書。

  我的服務器環境:Windows 2003 Server SP2,IIS 6.0。其他版本操作系統和IIS設置會有所不同。

 

  一.安裝證書服務

  要想使用SSL安全機制功能,首先必須為Windows Server 2003系統安裝證書服務。

  進入“控制面板”,運行“添加或刪除程序”,接着進入“Windows組件向導”對話框,勾選“證書服務”選項,點擊“下一步”按鈕,接着選擇CA類型。這里選擇“獨立根CA”,點擊“下一步”按鈕,為自己的CA服務器取個名字,設置證書的有效期限,最后指定證書數據庫和證書數據庫日志的位置,就可完成證書服務的安裝。

 

  二.生成證書申請

1.啟動 IIS Microsoft 管理控制台 (MMC) 管理單元。
2.展開 Web 服務器名,選擇要安裝證書的 Web 站點。
3.右鍵單擊該 Web 站點,然后單擊“屬性”。
4.單擊“目錄安全性”選項卡。
5.單擊“安全通信”中的“服務器證書”按鈕,啟動 Web 服務器證書向導。
注意:如果“服務器證書”不可用,可能是因為您選擇了虛擬目錄、目錄或文件。返回第 2 步,選擇 Web 站點。
6.單擊“下一步”跳過歡迎對話框。
7.單擊“創建一個新證書”,然后單擊“下一步”。
8.該對話框有以下兩個選項:
• “現在准備申請,但稍后發送”
  該選項總是可用的。
• “立即將申請發送到在線證書頒發機構”
僅當 Web 服務器可以在配置為頒發 Web 服務器證書的 Windows 2003 域中訪問一個或多個 Microsoft 證書服務器時,該選項才可用。在后面的申請過程中,您有機會從列表中選擇將申請發送到的頒發機構。
單擊“現在准備申請,但稍后發送”,然后單擊“下一步”。
9.在“名稱”字段中鍵入證書的描述性名稱,在“位長”字段中鍵入密鑰的位長,然后單擊“下一步”。
向導使用當前 Web 站點名稱作為默認名稱。它不在證書中使用,但作為友好名稱以助於管理員識別。
10.在“組織”字段中鍵入組織名稱(例如 aabbcc),在“組織單位”字段中鍵入組織單位(例如“銷售部”),然后單擊“下一步”。 
注意:這些信息將放在證書申請中,因此應確保它的正確性。CA 將驗證這些信息並將其放在證書中。瀏覽您的 Web 站點的用戶需要查看這些信息,以便決定他們是否接受證書。
11.在“公用名”字段中,鍵入您的站點的公用名,然后單擊“下一步”。
重要說明:公用名是證書最后的最重要信息之一。它是 Web 站點的 DNS 名稱(即用戶在瀏覽您的站點時鍵入的名稱)。如果證書名稱與站點名稱不匹配,當用戶瀏覽到您的站點時,將報告證書問題。
如果您的站點在 Web 上並且被命名為 www.aabbcc.com,這就是您應當指定的公用名。
如果您的站點是內部站點,並且用戶是通過計算機名稱瀏覽的,請輸入計算機的 NetBIOS 或 DNS 名稱。
12.在“國家/地區”、“州/省”和“城市/縣市”等字段中輸入正確的信息,然后單擊“下一步”。
13.輸入證書申請的文件名。
該文件包含類似下面這樣的信息。

-----BEGIN NEW CERTIFICATE REQUEST-----
MIIDZjCCAs8CAQAwgYoxNjA0BgNVBAMTLW1penJvY2tsYXB0b3Aubm9ydGhhbWVy...
-----END NEW CERTIFICATE REQUEST-----

這是您的證書申請的 Base 64 編碼表示形式。申請中包含輸入到向導中的信息,還包括您的公鑰和用您的私鑰簽名的信息。 
將此申請文件發送到 CA。然后 CA 會使用證書申請中的公鑰信息驗證用您的私鑰簽名的信息。CA 也驗證申請中提供的信息。
當您將申請提交到 CA 后,CA 將在一個文件中發回證書。然后您應當重新啟動 Web 服務器證書向導。
14.單擊“下一步”。該向導顯示證書申請中包含的信息概要。

15.單擊“下一步”,然后單擊“完成”完成申請過程。
證書申請現在可以發送到 CA 進行驗證和處理。當您從 CA 收到證書響應以后,可以再次使用 IIS 證書向導,在 Web 服務器上繼續安裝證書。

 

三.提交證書申請

1.使用“記事本”打開在前面的過程中生成的證書文件,將它的整個內容復制到剪貼板。
2.啟動 Internet Explorer,導航到 http://hostname/CertSrv,其中 hostname 是運行 Microsoft 證書服務的計算機的名稱,一般為localhost。
3.單擊“申請一個證書”,然后單擊“下一步”。
4.在“選擇申請類型”頁中,單擊“高級申請”,然后單擊“下一步”。
5.在“高級證書申請”頁中,單擊“使用 Base64 編碼的 PKCS#10 文件提交證書申請”,然后單擊“下一步”。
6.在“提交一個保存的申請”頁中,單擊“Base64 編碼的證書申請(PKCS #10 或 #7)”文本框,按住 CTRL+V,粘貼先前復制到剪貼板上的證書申請。 
7.在“證書模板”組合框中,單擊“Web 服務器”。
8.單擊“提交”。
9.關閉 Internet Explorer。

 

四.頒發證書

1.從“管理工具”程序組中啟動“證書頒發機構”工具。
2.展開您的證書頒發機構,然后選擇“掛起的申請”文件夾。
3.選擇剛才提交的證書申請。 
4.在“操作”菜單中,指向“所有任務”,然后單擊“頒發”。
5.確認該證書顯示在“頒發的證書”文件夾中,然后雙擊查看它。
6.在“詳細信息”選項卡中,單擊“復制到文件”,將證書保存為 Base-64 編碼的 X.509 證書。
7.關閉證書的屬性窗口。
8. 關閉“證書頒發機構”工具。

 

五.在IIS上安裝證書

1.如果 IIS尚未運行,則啟動它。
2.展開您的服務器名稱,選擇要安裝證書的 Web 站點。
3.右鍵單擊該 Web 站點,然后單擊“屬性”。
4.單擊“目錄安全性”選項卡。
5.單擊“服務器證書”啟動 Web 服務器證書向導。
6.單擊“處理掛起的申請並安裝證書”,然后單擊“下一步”。
7.輸入包含 CA 響應的文件的路徑和文件名,然后單擊“下一步”。
8.檢查證書概述,單擊“下一步”,然后單擊“完成”。

 

六.將站點配置為SSL訪問

1.如果 IIS尚未運行,則啟動它。
2.展開您的服務器名稱和 Web 站點。(這必須是已安裝證書的 Web 站點)
3.右鍵單擊某個虛擬目錄,然后單擊“屬性”。
4.單擊“目錄安全性”選項卡。
5.單擊“安全通信”下的“編輯”。
6.單擊“要求安全通道 (SSL)”。
  現在客戶端必須使用 HTTPS 瀏覽到此虛擬目錄。
7.單擊“確定”,然后再次單擊“確定”關閉“屬性”對話框。

OK!基本完成目標。現在可以使用https://xxx.xxx.xxx:xxx來訪問你的站點了。

 

 

本文部分內容參考:

http://czy4411741.blog.163.com/blog/static/342031272009020330935/

http://bbs.51cto.com/thread-16155-1-1.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM