1. IIS設置 1.1 創建SSL證書 點擊左側菜單欄頂部,點擊“功能視圖”里的“伺服器證書”: 點擊“創建自動簽名證書”創建自動簽名證書: 1.2 設置SSL證書 點開網站,在“功能視圖”里點擊“SSL設置”: 如圖,設置SSL: 1.3 綁定SSL證書 點開網站,在右側“操作”欄點擊“綁定”: ...
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);
參考資料:
C# MVC 網站將http強制跳轉到https
IBM AppScan
安全掃描:加密會話(SSL)Cookie 中缺少 Secure 屬性 處理辦法