http网站转换成https网站
https,https的本地測試環(huán)境搭建,asp.net結(jié)合https的代碼實現(xiàn),http網(wǎng)站轉(zhuǎn)換成https網(wǎng)站之后遇到的問題
一:什么是https
SSL(Security?? Socket?? Layer)全稱是加密套接字協(xié)議層,它位于HTTP協(xié)議層和TCP協(xié)議層之間,用于建立用戶與服務(wù)器之間的加密通信,確保所傳遞信息的安全性,同時SSL安全機制是依靠數(shù)字證書來實現(xiàn)的。?
?? SSL基于公用密鑰和私人密鑰,用戶使用公用密鑰來加密數(shù)據(jù),但解密數(shù)據(jù)必須使用相應(yīng)的私人密鑰。使用SSL安全機制的通信過程如下:用戶與IIS服務(wù)器建立連接后,服務(wù)器會把數(shù)字證書與公用密鑰發(fā)送給用戶,用戶端生成會話密鑰,并用公共密鑰對會話密鑰進行加密,然后傳遞給服務(wù)器,服務(wù)器端用私人密鑰進行解密,這樣,用戶端和服務(wù)器端就建立了一條安全通道,只有SSL允許的用戶才能與IIS服務(wù)器進行通信。?
?? 提示:SSL網(wǎng)站不同于一般的Web站點,它使用的是“HTTPS”協(xié)議,而不是普通的“HTTP”協(xié)議。因此它的URL(統(tǒng)一資源定位器)格式為“https://網(wǎng)站域名”。
?
二:https的本地測試環(huán)境搭建
1:win7/windows server 2008R2中 IIS7/IIS7.5 搭配https本地測試環(huán)境
2:windows server 2003中IIS6.0 搭配https本地測試環(huán)境
?
三:asp.net 結(jié)合 https的代碼實現(xiàn)
????? https是由IIS,瀏覽器來實現(xiàn)的傳輸層加密,不需要特意的編碼。。。平時怎么在asp.net里面編寫代碼,就怎么寫。
????? 很可能要問,為什么我的站點使用了https之后,用firebug之類的軟件查看值提交的時候,還是會顯示明文呢?例如,博客園的登陸界面提交。
http://passport.cnblogs.com/login.aspx
為什么這里還是能看到明文的用戶名和密碼呢?
原因是因為:https(ssl)的加密是發(fā)生在應(yīng)用層與傳輸層之間,所以,在傳輸層看到的數(shù)據(jù)才是經(jīng)過加密的,而我們捕捉到的http post的,是應(yīng)用層的,是還沒經(jīng)過加密的數(shù)據(jù)。
支付寶也是https的,但是他的同時也增加了安全控件來保護密碼, 以前認(rèn)為這個只是用來防鍵盤監(jiān)聽的,其實,看下面http post截獲的密碼:這個安全控件把給request的密碼也先加了密,緊接著https再加次密,果然是和錢打交道的,安全級別高多了:)
?
四:http網(wǎng)站轉(zhuǎn)換成https網(wǎng)站之后遇到的問題
?
整站https還是個別的頁面采用https?網(wǎng)站的連接是使用相對路徑?還是絕對路徑?
如果是整站都是https,那么會顯得網(wǎng)頁有些慢,如果是個別頁面采用https,那么如何保證從https轉(zhuǎn)換到http的時候的url的準(zhǔn)確性呢?
比如我們用http的時候,網(wǎng)站的頭部底部都是用的相對路徑,假如你的頁面是?http://aa/index.aspx? 你跳轉(zhuǎn)到?https://aa/login.aspx?這里怎么來跳轉(zhuǎn)?只能把超鏈接寫死
<a href=”https://aa/login.aspx”>登陸</a>? 但是這樣的話,你跳轉(zhuǎn)過去之后的頁面 ,所有的相對路徑都變成了https開頭了,這樣很影響網(wǎng)站的效率。
?
雖然使用絕對地址可以解決,但是那樣顯然不好移植。
?
下面就是使用第三方的組件,來解決上面的這個問題
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這個版本
1: 我們來看看測試項目
?
admin 文件夾,需要登錄之后,才能訪問。admin里面的 login.aspx? 可以訪問。整個admin文件夾都需要https訪問
contact.aspx 需要https 訪問
default.aspx 和 view.aspx 采用 http 訪問
鏈接我們都采用相對路徑,并沒有寫死成?http://www.xx.com/a.aspx?? 或者是?https://www.xx.com/a.aspx
?
下面我們開始用SecuritySwith來實現(xiàn)上面的https和http訪問的規(guī)則
2:在項目上,添加引用 SecuritySwitch.dll? ,并且添加 智能提示
這樣,只能提示就有了。
?
?
?
3:然后我們在web.config里面添加設(shè)置? 。根據(jù)IIS的不同,還分為?IIS6 IIS7.X(經(jīng)典模式)? 以及?IIS7(集成模式)?的不同的配置,這里我們是按照IIS6 IIS7.X的(經(jīng)典模式)來配置的.
只看看里面的 SSL配置即可
<?xml version="1.0"?> <configuration><!--SSL配置1開始--><configSections><section name="securitySwitch" type="SecuritySwitch.Configuration.Settings, SecuritySwitch" /></configSections><securitySwitch baseInsecureUri="http://webjoeyssl" baseSecureUri="https://webjoeyssl" xmlns="http://SecuritySwitch-v4.xsd" mode="On"><!--如果你的http和https僅僅只有一個s的區(qū)別,那么這里的base的2個url可以不寫,那為什么還要搞這2個url呢?因為比如你的 baseInsecureUri (基本不安全網(wǎng)址) 是 http://www.qq.com而你的 baseSecureUri (基本安全網(wǎng)址) 是 https://safe.qq.com 然后這個時候你訪問一個需要https的頁面,假如是 login.aspx?return=joey 假如你是通過http://www.qq.com/login.aspx?return=joey訪問的,那么這個頁面會跳轉(zhuǎn)到http://safe.qq.com/login.aspx?return=joey --><paths><add path="~/contact.aspx"/><add path="~/admin/login.aspx"/><add path="~/admin" /><!--這里的admin因為不僅是 admin 文件夾,而且還包含類似的 adminNews.aspx adminQQ.aspx 頁面"--><!--但是如果是 ~/admin/ 就是專門指admin文件夾--></paths></securitySwitch><!--SSL配置1結(jié)束—> <appSettings /><system.web><compilation debug="true"></compilation><!-- 內(nèi)置票據(jù)認(rèn)證 start--><authentication mode="Forms"><forms name="mycook" loginUrl="admin/login.aspx" protection="All" path="/" /></authentication> <!--SSL配置2 如果是 IIS <= 6.x, IIS 7.x 經(jīng)典模式--><httpModules><add name="SecuritySwitch" type="SecuritySwitch.SecuritySwitchModule, SecuritySwitch" /></httpModules><!--SSL配置2結(jié)束--></system.web><!--SSL配置2 如果是IIS7.X 集成模式--><!--<system.webServer><validation validateIntegratedModeConfiguration="false" /><modules>--><!-- for IIS 7.x 集成模式 --><!--<add name="SecuritySwitch" type="SecuritySwitch.SecuritySwitchModule, SecuritySwitch" /></modules></system.webServer>--><!--如果是IIS7.X 集成模式 SSL配置2 結(jié)束—> </configuration>4:其他就沒有你什么事情了,url的 http 后臺 https 的切換,都是securitySwitch?來控制
五:asp.net 內(nèi)置票據(jù)認(rèn)證 securitySwitch 的實現(xiàn)(就是上面說的 admin 需要登錄才能訪問)看下文
???http://www.cnblogs.com/naniannayue/archive/2012/11/23/2784568.html?
?
六:securitySwitch? 4.2 中文幫助文檔
???http://www.cnblogs.com/naniannayue/archive/2012/11/23/2784653.html
原文鏈接:https://www.cnblogs.com/naniannayue/archive/2012/11/19/2777389.html?更多專業(yè)前端知識,請上 【猿2048】www.mk2048.com
總結(jié)
以上是生活随笔為你收集整理的http网站转换成https网站的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 滚动条位置判断
- 下一篇: ExtJs的Reader