網站要使用https需要如下幾個步驟
1、申請https證書,現在已經有很多免費的https證書申請了
2、服務器中安裝證書
3、網站的連接全部改為https連接
Asp.Net Mvc網站中整站改為Https連接可以使用以下兩種方法
修改Global.asax.cs
在 Global.asax.cs
添加如下代碼
#if !DEBUG GlobalFilters.Filters.Add(new RequireHttpsAttribute()); #endif
這是配置了ASP.NET的程序,可以處理所有的經過ASP.NET處理的請求;但是對於存放在Web服務器上的其他資源文件(即不經過ASP.NET的程序的處理)無效。
如果有此需求,應該告知IIS服務器不要私自回復用戶請求,要求所有請求都必須由ASP.NET程序執行。
此時,在Web.config
下增加下面的內容,注意是根目錄的Web.config而不是Views文件夾的Web.config
<system.webServer> <modules runAllManagedModulesForAllRequests="true"/> <system.webServer>
修改Web.config部署全站HTTPS
插一句題外話,下個版本的ASP.NET據說要取消掉Web.config。
在IIS 7.0+的版本上,可以使用URL Rename來完成。Url Rename是指當IIS接收到某個請求后,先根據設定的規則進行更改請求地址后,在發送給網站程序。經測試本方法在Azure App Service (原名 Azure Websites)是可以使用的。
在Web.config的configuration
節點下,找到或添加system.webServer
節點,並在此節點下添加:
<rewrite> <rules> <!-- clear 會清除掉已有的rule,如果添加過別的rule,請注意確認--> <clear/> <rule name="Force HTTPS" enabled="true"> <match url="(.*)" ignoreCase="false" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite>
僅修改Release的Web.config
這樣就算輕松搞定了,但是在開發時,我們不希望要求HTTPS,這時可以通過只修改Release的Web.config來解決。
首先,不要修改Web.config
,而是找到Web.Release.config
(VS點開Web.config的小箭頭)。
在configuration
節點下添加如下內容:
<system.webServer> <rewrite xdt:Transform="Insert"> <rules> <!-- clear 會清除掉已有的rule,如果添加過別的rule,請注意確認--> <clear/> <rule name="Force HTTPS" enabled="true"> <match url="(.*)" ignoreCase="false" /> <conditions> <add input="{HTTPS}" pattern="off" /> </conditions> <action type="Redirect" url="https://{HTTP_HOST}/{R:1}" appendQueryString="true" redirectType="Permanent" /> </rule> </rules> </rewrite> </system.webServer>
這個如剛才的區別僅僅在於<rewrite xdt:Transform="Insert">
,關於如何整合這些內容,請參閱用於 Web 應用程序項目部署的 Web.config 轉換語法。