昨天博客的證書過期了,在更新證書的時候,順便在MySSL網站檢測了下站點安全情況,因為沒有開啟 HSTS 的原因,只有 A 而沒得 A+,於是給博客加上了 HSTS,並且順便開啟了全站 HTTPS。
Nginx 啟用 HSTS#
HSTS,HTTP 嚴格傳輸安全協議(HTTP Strict Transport Security)的簡稱,是一套由互聯網工程任務組發布的互聯網安全策略機制。其作用主要在於:
- 強制客戶端(如瀏覽器)使用 HTTPS 與伺服器建立連接
- 保護網站,減少會話劫持風險
開啟方法很簡單,以 lnmp 部署的網站為例,先切換到 nginx 站點配置目錄:
cd /usr/local/nginx/conf/
然後在 nginx 目錄下找到站點的配置文件,打開domain.com.conf
文件,在 Sever 443 下加入:
# HSTS
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
然後再去檢測的時候,就會發現,評分變成 A + 了:
開啟全站 HTTPS#
由於之前已經做了一部分的全站 HTTPS 工作,這次只是補充與完善,就簡單說明下,詳細的內容可以網上搜索一下。
1、登錄 Typecho 後台 -> 設置 -> 基本設置 -> 站點地址,將其改成 https 的域名;
2、編輯 Typecho 站點根目錄下的 config.inc.php 文件,並加入下面一行配置:
/** 開啟HTTPS */
define('__TYPECHO_SECURE__',true);
3、編輯主題文件夾下的 comments.php 文件,將 $this->commentUrl () 替換成:
echo str_replace("http","https",$this->commentUrl());
4、更新站點引用的附件地址為 https,執行下方 SQL 資料庫操作,其中 domain.com 為站點域名:
UPDATE `typecho_contents` SET `text` = REPLACE(`text`,'http://domain.com','https://domain.com');
5、通過 WEB 伺服器(Ningx)將 80 端口(HTTP)重定向到 443 端口(HTTPS),強制全站 HTTPS;
6、最後 F12 打開 Chrome 瀏覽器,就可以看到This page is secure (valid HTTPS)
的提示了。