在上一篇文章中我們已經實現了本地node服務使用https訪問了,看上一篇文章效果可以看如下:
但是如果我們現在使用http來訪問的話,訪問不了。如下圖所示:
因此我現在首先要做的是使用nginx配置下,當用戶在瀏覽器下輸入http請求的時候使用nginx重定向到https下即可。因此我們現在需要做一個簡單的nginx重定向功能。
因此在我們的nginx中需要加如下重定向配置:
server { listen xxx.abc.com; server_name xxx.abc.com; rewrite ^/(.*)$ https://$host$1 permanent;}
因此nginx主要的配置代碼如下:
server { listen xxx.abc.com; server_name xxx.abc.com; rewrite ^/(.*)$ https://$host$1 permanent;}server { listen 443 ssl; server_name xxx.abc.com; ssl_certificate cert/server.crt; ssl_certificate_key cert/server.key; ssl_session_cache shared:SSL:1m; ssl_session_timeout 5m; ssl_ciphers HIGH:!aNULL:!MD5; ssl_prefer_server_ciphers on; location / { proxy_pass http://localhost:3001; }}
如上配置后,我們需要重新啟動下nginx即可生效,我們在瀏覽器下輸入域名 http://xxx.abc.com 后 會自動重定向到 https://xxx.abc.com/ 了,我們再來看下 我們網絡上的請求有2個請求,如下所示:
如上請求可以看到,瀏覽器首先會向網站發起一次http請求(http://xxx.abc.com), 在得到一個重定向響應后,再會發起一次https請求并得到最終的響應內容。對用戶來講,它的操作是透明的,用戶體驗也是不錯的,但是在https鏈接之前會存在一次明文的http請求和重定向。那么攻擊者可以以中間人的方式劫持http請求。來進行后續的攻擊。比如竊聽數據。篡改請求或響應、跳轉到釣魚網站等操作。因此http請求是不夠安全的,所以最近幾年所有的網站都要以https來訪問的。
那么以劫持http請求并跳轉到釣魚網站類為列子,來看看大致的劫持流程是如下這個樣子的。
操作步驟如下:
1. 瀏覽器會發起一次http請求(比如http://xxx.abc.com). 發出請求后,攻擊者會以中間人的身份來劫持該http請求。
2. 攻擊者劫持該http請求后,會把當前請求轉發給釣魚網站(比如 http://xxx.yyy.com)。
3. 釣魚網站會返回假冒的網頁內容。
4. 最后攻擊者把假冒的網頁內容返回給瀏覽器。
如上http請求根本就沒有重定向到https網站到,而是攻擊者直接劫持了http請求,最終把釣魚網站返回給瀏覽器了。因此如果直接http重定向的話,會存在一次http請求明文的問題,因此直接使用http重定向是不安全的,因此就出現了HSTS來解決這個問題。下面我們來認識下HSTS吧。
新聞熱點
疑難解答