前一章節我們提到HTTP與HTTPS兩者的差異,HTTPS在連線溝通時增加了安全性(Secure),也就是增加了SSL憑證,但通常開啟一個網頁時,有可能採用的是HTTP傳輸,不一定會強制使用HTTPS,此時瀏覽器就有可能會出現「您的連線不是私人連線」或者「此網站的安全性憑證有問題」等頁面,所以當我們新建一個網頁或網站後,就會希望網站的連線可以穩定以及安全。
HSTS技術就是讓瀏覽器瀏覽網站時,強制使用HTTPS進行連線傳輸,因為HTTPS有SSL的關係,所以可以減少Client和Server連線時被攻擊的可能性,增加網站傳輸的安全性,而當網站開啟HSTS之後,瀏覽器在收到一個HTTP網站的載入請求時,就會自動轉換成HTTPS的方式載入,即使後來SSL失效,導致HTTPS無法使用,使用者也無法繼續瀏覽。
1. 安裝SSL
安裝好的SSL可以透過瀏覽器的網址列觀看,前面會有一個鎖頭符號,點擊即可觀看網站的SSL憑證狀態,包含簽發者及到期日,至於如何安裝SSL的部分,可以參考前一章節。
2. 確定網站可以以HTTPS進行瀏覽
這邊以我瘋的官網當範例,在WordPress的後台中設定HTTP轉址為HTTPS,此時,就可以打開瀏覽器,並在網址列輸入 https://www.wowfuncode.com/ ,如果可以連線成功,就表示網站可以透過HTTPS進行傳輸。
3. 沒有混合內容(mixed content)問題
一個含有HTTP明文內容的HTTPS頁面稱為混合內容(mixed content)。簡言之,就是一個HTTPS的網站內容裡,有使用HTTP作為傳輸的內容。(其他的資訊可以參考:https://developer.mozilla.org/zh-TW/docs/Web/Security/Mixed_content)
這邊以我瘋的官網作範例,使用WordPress Plugin的套件HSTS Ready進行HSTS的設定,套件建議安裝方式有兩種:
可設定的參數為HSTS的期限,以及是否包含子網域。
當我們進入一個網站時,可以按「F12」或者滑鼠右鍵選單點擊「檢查」,就可以開啟開發人員工具,這時候點選上面選單「Network」,重新整理網頁後,這時候我們來看看網站的Headers,在Response Headers裡面有沒有strict-transport-security的標頭。
strict-transport-security的形式通常為以下幾種:
Strict-Transport-Security: max-age=<expire-time>
Strict-Transport-Security: max-age=<expire-time>; includeSubDomains
Strict-Transport-Security: max-age=<expire-time>; preload
其中
max-age=<expire-time>
>表示以秒計算的時間,告知瀏覽器應該保持強制HTTPS存取的時間有多長。
includeSubDomains
>若該標頭被聲明,則瀏覽器應該將強制使用HTTPS的狀態套用至該域名的所有子域。
preload
>參考 Preloading Strict Transport Security。 此非規範的一部份。
(詳細資訊可以參考:https://developer.mozilla.org/zh-TW/docs/Web/HTTP/Headers/Strict-Transport-Security)
而以我瘋網站為例,Header有宣告max-age及includeSubDomains,所以在瀏覽我們網站的子網域時,也都會透過HTTPS的方式進行傳輸。
其實在架站初期,我瘋的官網其實已經設定好HSTS的前置作業,後續也開啟了HSTS,但有時連線時還是會不穩定,偶爾會出現了「您的連線不是私人連線」頁面,一個網站的網址有HTTP、HTTPS及Domain的部分,在設置完確認HTTP及HTTPS沒問題後(WordPress端),就可以看看是不是Domain的問題,有時候還需要Domain供應商的設定才能完成整體的HTST,使用HTTPS除了較安全外,以GOOGLE的搜尋演算來說,也會考慮到網站是否使用HTTPS傳輸方式,所以如果想要提高網站曝光度,HTTPS及HSTS也會是重要的課題。
《精采文章同步發表》
1.我瘋FB粉絲專頁:https://www.facebook.com/我瘋程式工作室wowfuncode-102683961458110/
2.我瘋官網:https://www.wowfuncode.com/category/blog/