nginx 升級1.12 開啟HTTP2
最近把網站升級到了HTTPS, 之后還將把當前一些應用的WebSocket 連接升級為 WSS連接,以安全地傳輸消息。最開始我本是為了測試 HTTP2 不限制請求并發數在切片請求中的優勢。 但為了實現這一點,就順手給網站在 Godaddy 上申請了域名和解析,并且通過Let's Encrypt (這篇博文很清楚) 申請了SSL 證書。
ssllabs 安全評測
關于OpenSSL 和 Nginx 新版本的本地編譯安裝就不多說了,我基本都是在linux 云服務器上搞,注意make 之前給Nginx configure 一下, 使得編譯時導出這倆與HTTP2相關的module
.configure --prefix=/etc/nginx --with-http_ssl_module --with-http_v2_module
make 結束后,便會在objs 文件夾中生成按照剛才配置編譯的 nginx,軟連接一下即可,殺掉原來的nginx 服務實例。啟動這個帶有http2 module 的nginx,在網站配置中加入對端口的監聽,并采用HTTP2 協議即可:
# ssl configuration
listen 443 ssl http2 default_server;
ssl on;
# ... 指定 證書和密鑰地址
開啟HSTS
這回主要記一下關于STS 的事兒。HTTP Strict Transport Security (通常簡稱為HSTS) 是一個安全功能,它通過服務器response header的形式告訴瀏覽器只能通過HTTPS訪問當前資源, 禁止HTTP方式.
摘自:https://developer.mozilla.org
一個網站接受一個HTTP的請求,然后跳轉到HTTPS,用戶可能在開始跳轉前,通過沒有加密的方式和服務器對話,比如,用戶輸入http://foo.com或者直接foo.com。
這樣存在中間人攻擊潛在威脅,跳轉過程可能被惡意網站利用來直接接觸用戶信息,而不是原來的加密信息。
網站通過HTTP Strict Transport Security通知瀏覽器,這個網站禁止使用HTTP方式加載,瀏覽器應該自動把所有嘗試使用HTTP的請求自動替換為HTTPS請求
現實案例
你連接到一個免費WiFi接入點,然后開始瀏覽網站,訪問你的網上銀行,查看你的支出,并且支付一些訂單。很不幸,你接入的WiFi實際上是黑客的筆記本熱點,他們攔截了你最初的HTTP請求,然后跳轉到一個你銀行網站一模一樣的釣魚網站。 現在,你的隱私數據暴露給黑客了。
Strict Transport Security解決了這個問題;只要你通過HTTPS請求訪問銀行網站,并且銀行網站配置好Strict Transport Security,你的瀏覽器知道自動使用HTTPS請求,這可以阻止黑客的中間人攻擊的把戲。
Nginx 設置HSTS
編輯你的Nginx具體網站配置文件,在SSL Configuration 中添加SSL key和cert 簽名證書,并且配置add header,讓每一個http response 都具有STS 字段。
// nginx 網站部分配置內容
# ssl configuration
listen 443 ssl http2 default_server;
ssl on;
ssl_certificate [cert 路徑]
ssl_certificate_key [private key 路徑]
add_header Strict-Transport-Security "max-age=63072000; includeSubdomains; "
-
max-age 表示STS 策略的過期時間,也就是瀏覽器在收到帶有 Strict Transport Security -
response header 多久后過期,就可以轉為http 請求. - includeSubdomains 表明 STS 策略也應用到 當前域名的子域名。
如此這般,就已經開啟了STS,這使得服務器每次response都告訴瀏覽器所有請求都強制使用https,就算用戶手動輸入http 地址也會在瀏覽器內部替換為https 請求,在根源上杜絕瀏覽器與服務器建立非安全連接。
寫在最后
為什么我一定要對網站啟用https,主要是為了測試 https 對數據傳輸的加密,網站性能。特別是涉及到用戶個人聊天記錄、支付信息等隱私數據,必須采用 SSL加密傳輸,才能防止數據傳輸過程被中間人劫持、篡改。
如今網絡安全形式愈演愈烈,不論是阿里巴巴還是百度,都在幾年前率先全站升級為HTTPS,GeoQ Ana這樣的在線制圖平臺也采用HTTPS 來實現用戶隱私數據(往往是商業數據)的上傳,保證平臺的數據安全性。
So,作為一個兼職網絡安全的前端工程師,希望大家注意安全,哈哈哈。
參考文章:
快速搭建HTTP2 網站
你所不知道的 HSTS
一休哥升級到HTTP2的網站 ,
前后端都經過SSL 加密的資源代理DEMO
注意安全系列第一篇