Asp.Net MVC Https設置


1.   IIS設置

1.1 創建SSL證書

   點擊左側菜單欄頂部,點擊“功能視圖”里的“服務器證書”:

         點擊“創建自動簽名證書”創建自動簽名證書:

1.2 設置SSL證書

         點開網站,在“功能視圖”里點擊“SSL設置”:

         如圖,設置SSL:

1.3 綁定SSL證書

         點開網站,在右側“操作”欄點擊“綁定”:

         添加“網站綁定”,選擇https及剛剛創建的SSL證書,主機名(也就是域名)根據需要選設(IIS7默認不支持,需要在配置文件applicationHost.config里進行設置,詳見注):

         【注】域名也可以通過配置進行設置:

      打開C:\Windows\system32\inetsrv\config\applicationHost.config在里面找到

<bindings>
    <binding protocol="https" bindingInformation="*:443:" />
     <binding protocol="http" bindingInformation="*:80:www.yourdomain.com" />
</bindings>

  找到https的配置項目,修改為:

<binding protocol="https" bindingInformation="*:443:www.yourdomain.com"/>

  這里面需要注意的是:bindings節點有多個,需要找到你配置的站點,默認是

<binding protocol="https" bindingInformation="*:443" />

2.強制使用https

  MVC操作非常簡單,只需要在網站Index設置RequireHttps特性即可:

        [RequireHttps]
        public ActionResult Index()
        {
            return View();
        }

  這是一種投機的設置,合理的做法應該是在項目Global.asax文件 Application_Start中添加過濾:

 GlobalFilters.Filters.Add(new RequireHttpsAttribute());

3.https使用中的問題

3.1 百度地圖的問題

  https的網站使用百度地圖,如果你引用的地址沒寫對的話,加載不出來百度地圖,被認為是不安全的JS內容。解決方式:

  https://api.map.baidu.com/api?v=2.0&ak=你的密鑰&s=1

  加上s=1代表引用的是https的。

3.2 加密會話(SSL)Cookie 中缺少 Secure 屬性問題

       服務器開啟了Https時,cookie的Secure屬性應設為true,否則,在進行IBM AppScan安全掃描時,就會掃出下面的問題:

 

  解決辦法:

  1. 修改web.config,添加: 

<system.web>
  <httpCookies httpOnlyCookies="true" requireSSL="true" />
<system.web> 

  2. 修改后台寫Cookies時的設置 cookie.Secure = true:

1 HttpResponse response = HttpContext.Current.Response;
2 var cookie = new HttpCookie(key, value);
3 cookie.HttpOnly = true;
4 cookie.Path = "/";
5 cookie.Expires = DateTime.Now.AddHours(1);
6 cookie.Secure = true; 
7 response.AppendCookie(cookie);

 

參考資料:

IIS配置HTTPS

C# MVC 網站將http強制跳轉到https
IBM AppScan 安全掃描:加密會話(SSL)Cookie 中缺少 Secure 屬性 處理辦法


免責聲明!

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



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