摘要:技巧和訣竅:在IIS 7.0上使用自我簽署憑證來啟用SSL
【原文位址】Tip/Trick: Enabling SSL on IIS 7.0 Using Self-Signed Certificates
【原文發表日期】 Friday, April 06, 2007 12:31 AM
SSL允許瀏覽器與web伺服器在一個安全的通道上交換資訊,以防範竊聽,篡改和消息偽造。你應該總是在登錄頁面(用戶在上面輸入用戶名和密碼),以及網站上其他所有安全敏感的網頁上使用SSL,譬如,那些顯示財務或個人資訊的帳號網頁。
在Windows早期的IIS版本上配置SSL很痛苦,搞清楚如何安裝和管理憑證,然後如何將憑證與一個網站相關聯,我敢說是大多數web開發人員並不知道怎麼做的事情。
好消息是,IIS 7.0使配置和啟用SSL成為小菜一碟。IIS 7.0現在對建立「自我簽署憑證(Self Signed Certificates)」也有內建的支持,自我簽署憑證允許你輕鬆地建立測試或個人憑證,然後你可以用之來為開發或測試目的對一個網站快速啟用SSL。
使用IIS 7.0的話,你可以在30秒內對一個現有的網站完成啟用SSL。下面的教程示範該怎麼來做。
第一步:建立一個新網站
我們先使用新的IIS 7.0管理工具建立一個新的網站。這個管理工具是對以前IIS管理工具的完全覆寫的結果(是使用Windows Forms全部用受管理程式碼寫成的),提供了對web特性更邏輯的組織。它對所有的ASP.NET和IIS設置提供了一個GUI管理體驗:
要在機器上建立一個新的網站,在左手的樹形視圖視窗裡右擊「網站(Web Sites)」節點,選擇「添加網站(Add Web Site)」上下文選單選項。輸入適當的細節建立一個新的網站:
Windows Vista上IIS7的一個很棒的特性是,你現在可以在本機上擁有的網站數目不再受限制(早期Windows客戶機上IIS版本只允許一個網站)。早期Windows客戶機IIS版本的10個並發請求的限制在IIS 7.0上也不再存在。
我們完成上面的步驟後,在我們的IIS web伺服器上就有一個嶄新的網站在運行了。
第二步:建立一個新的自我簽署憑證
在把SSL規則繫結到我們的新網站之前,我們首先需要引入和建立一個安全憑證來用於SSL繫結。
在IIS 7.0中,可以這麼來管理憑證,點擊左手樹形視圖管理器裡的根機器節點(root machine node),然後在右邊的特性視窗裡選擇「伺服器憑證(Server Certificates)」圖案:
這會列出在機器上註冊了的所有憑證,並允許你引入或者建立新的憑證。
我也可以去象Verisign這樣的憑證機構購買一個憑證,然後用這個管理介面來引入。或者,我也可以建立一個「自我簽署憑證」,這是個測試憑證,我可以在開發期間用來測試我的網站。可以這麼做,在管理工具的右手邊點擊「建立自我簽署憑證(Create Self-Signed Certificate)」連結:
給憑證輸入一個名字 (譬如:「test」),點擊OK. 然後IIS7就會自動為你建立一個自我簽署加密憑證(self-signed crypto certificate),同時與機器註冊該憑證:
第三步: 為我們的網站啟用HTTPS繫結
要給我們在前面建立的網站啟用SSL,在左手邊的樹形視圖視窗裡選擇網站節點,然後在螢幕右手邊的「操作(actions)」視窗裡點擊「繫結(Bindings)」連結:
這會調出一個對話框,上面列出了將訪問者(traffic)導向該網站的所有的繫結規則 (即,該網站的主機頭(host-header)/IP位址/端點組合):
要給網站啟用SSL,我們要點擊「添加(Add)」按鈕。這會調出一個「添加繫結(add binding)」對話框,我們可以用來添加HTTPS協定支持。我們可以從對話框上的SSL憑證下拉框裡選擇我們先前建立的自我簽署憑證, 這麼做表明在SSL上給內容加密時,我們要使用那個憑證:
點擊OK,我們就給我們的網站啟用了SSL:
第四步:對我們的網站做測試
給網站添加一個「default.aspx」網頁,然後在瀏覽器裡輸入 https://localhost/default.aspx 來試著訪問該頁,注意這裡「https」(而不是「http」)的用法,表示你要透過SSL來連接。
如果你使用IE7,你會看到這個謹防欺詐(anti-phishing)的錯誤訊息:
如果這發生的話,別怕,這只不過是IE想幫你,向你表明你本地機器的自我簽署憑證看上去有點可疑。點擊「繼續連接這個網站(Continue to this website)」連結跳過這個安全警告,繼續連接到該網站上。你會發現你的default.aspx網頁現在是在SSL保護下運行的:
至此,全部完成!
附錄:幾個關於SSL的注意事項
最後,幾個涉及SSL的注意事項:
- IIS 7.0管理工具有個「SSL設置(SSL Settings)」節點,你可以針對每個網站,目錄或者文件來做選擇,這允許你控制特定的資源執行時是否需要SSL請求。這對login.aspx這樣的網頁來說很有用,因為你要保證只有在加過密的通道上提交資訊時,用戶才能輸入他們的身份資訊。假如你配置login.asp需要SSL的話,IIS 7.0就會堵截瀏覽器的訪問,除非是透過SSL來訪問的。
- 在ASP.NET網頁或處理器(handler)裡,你可以透過檢查Request.IsSecure屬性,用程式設計的手法檢查當前請求是否使用了SSL(假如進來的瀏覽器請求是透過SSL的,該屬性會傳回true)。
- 你可以設置web.config文件中的 <forms> 配置部分的「requireSSL」屬性,要求ASP.NET的表單認證系統確保表單認證cookie只有在啟用了SSL的網頁和URLs上才可以設置和使用。這避免了駭客在不受SSL保護的網頁上試著攔截認證cookie,然後試著從另外的機器上使用「重試攻擊(Replay Attack)」來冒充用戶的危險。
想瞭解更多IIS 7.0資訊的話,請閱讀我以前的寫的IIS 7.0 綜述的部落格文章,也一定要去看一下www.iis.net網站。
想閱讀我的其他「技巧和訣竅」部落格文章的話,請訪問我的技巧和訣竅匯總網頁。
希望本文對你有所幫助,
Scott