WordPress整站輕鬆開啟HTTPS

WordPress 科技 守望軒 2017-04-16

近兩年來HTTPS取代HTTP已經成為大勢所趨。早在2014年google Chromium安全團隊提議將所有的HTTP協議網站標註為不安全。現在,Chrome瀏覽器已經開始執行這一標準了。從 Chrome 56 開始,任何網頁,如果有輸入密碼或者信用卡資料的,卻沒有使用 HTTPS,將被 Chrome 瀏覽器標識為不安全;逐步的,任何沒有使用 HTTPS 協議的網頁chrome瀏覽器都會被標識為”不安全”,或者 “Not Secure”。

WordPress整站輕鬆開啟HTTPS

從chrome 56 版本開始,查看網站的SSL證書的方式做了調整,原來的版本可以點擊綠色的小鎖進入查看頁面,新版本的進入方式:按F12 ,打開開發者工具窗口,進入Security選項卡,然後點擊View certificate,如下圖所示:

WordPress整站輕鬆開啟HTTPS

HTTP是目前互聯網上使用最廣泛的傳輸協議,但是它沒有安全加密功能,很容易遭遇劫持,導致用戶流量、隱私被竊。HTTPS則會全程加密傳輸,並有第三方安全機構認證的數字證書。特別在中國,某些ISP服務商會通過寬帶上網服務,進行流量劫持,插入廣告代碼,使用HTTPS後,這些損招就無計可施了。

搜索引擎逐步支持HTTPS網站的收錄,HTTPS作為排名的因素之一,在SEO方面越來越重要。google搜索會把HTTPS作為排名的因素之一,雖然當前只是比較小的因素。2015年百度站長平臺發佈消息,百度對https頁面優先收錄、優先排名:

1、從相關性的角度,百度搜索引擎認為權值相同的站點,採用https協議的頁面更加安全,排名上會優先對待。

2、此次技術升級之後,百度搜索將同一個域名的HTTP版和HTTPS版作為一個站點來處理,優先收錄HTTPS頁面。

2017年1月1日,蘋果將對Apple Store裡所有應用啟用一項名為ATS的重要安全功能(App Transport Security,應用程序安全傳輸,簡稱 ATS),在啟用 ATS 之後,它會強制開發者的應用通過 HTTPS(而不是 HTTP)連接網絡服務。

我的網站是基於wordpress構建的,整站轉換成HTTPS,可以輕鬆搞定。

SSL證書的選擇

1、對於國內用戶來說,可以實用與百度雲、騰訊雲、阿里雲合作的賽門鐵克簽署的證書,一年免費,申請和使用都很方便。

2、自從Let’s Encrypt免費簽發證書後,SSL證書的價格就開始平民化了,有不少付費和收費的SSL可以選擇。Let’s Encrypt的證書雖然只有90的天,不過自動續期也很方便,對於小站來說,是很不錯的選擇。Let’s Encrypt的申請安裝方法可以參考文章:為你的Blog快速開啟https支持。在安裝證書的過程中要注意:需要停止web 服務器,比如 Nginx 、Apache ,否則可能報端口占用的錯誤。

3、因為篡改、偽造等問題,慎重選擇沃通、StartCom頒發的證書。

1)2016年9月30日,蘋果 Apple於iOS可信根證書列表中宣佈:屏蔽其對中級CA WoSign CA Free SSL Certificate G2( CA 沃通免費 SSL 證書 G2)的信任。

2)2016年10月24日,Mozilla在其安全博客公佈了對沃通CA和StartCom的最終處理措施:Mozilla 決定不再信任目前包含在 Mozilla 根證書項目中的沃通根證書(Root certificate)和StartCom 根證書今後頒發的服務器證書。即:它不再信任在10月21日之後簽發的沃通CA證書,並從 Firefox 51 起移除對4個沃通根證書的信任。

3)2016年10月31日,Google在其安全博客中宣佈了:從Chrome 56開始,不再信任WoSign和StartCom在2016年10月21日後頒發的證書。

4.SSL 要用 ECC 證書,即使因為某種原因必須要用 RSA 證書的,那麼也要用雙證書,就是 ECC + RSA兩個證書。在加密算法上,要去掉 RC4。

5.只使用 TLS 協議,包括 TLSv1.0, TLSv1.1,TLSv1.2。禁止 SSL 協議。

6.SSL 證書的簽名算法,要使用 SHA-2,不要使用已經被證明有嚴重缺陷的 SHA-1了。

調整wordpress網站配置

1.修改wordpress後臺配置中的地址改為https版本

WordPress整站輕鬆開啟HTTPS

通過上面的設置,絕大部分導航中的鏈接就由wordpress系統自動改為HTTPS版本。

2、對於正文中的內部鏈接需要手工修改,修改的方法有兩種:

1)直接在數據庫中更新,更新的sql如下:

update wp_posts set post_content = replace(post_content, ‘//www.watch-life.net/’,‘https://www.watch-life.net/’)

對於數據庫不熟悉的站長不推薦這種方法,對數據庫錯誤的更新對網站可能是毀滅性的打擊,建議更新前最好備份數據庫。

2)利用wordpress提供的api來重寫鏈接。在使用的主題(themes)的目錄下的 function.php加入如下代碼:

//轉換http為https

function change_ssl(){

if( is_ssl() ){

function change_ssl_main ($content){

$siteurl = get_option(‘siteurl’);

$upload_dir = wp_upload_dir();

$content = str_replace( ‘http:’.strstr($siteurl, ‘//’), strstr($siteurl, ‘//’), $content);

$content = str_replace( ‘http:’.strstr($upload_dir[‘baseurl’], ‘//’), strstr($upload_dir[‘baseurl’], ‘//’), $content);

return $content;

}

ob_start(“change_ssl_main”);

}

}

add_filter(‘get_header’, ‘change_ssl’);

這個方法優點是可逆,不會對網站的數據庫有什麼影響,可以使網站在HTTP和HTTPS之間自由轉換,推薦使用這種方法。

調整完內部鏈接後,檢查整個網站的頁面,包括首頁,欄目頁,內容頁,sitemap,頁面head部分內容,比如:css,js,canonical等,是否都轉換成了HTTPS版本。

整站301跳轉

整站如果啟用HTTPS後運行正常,就可以開始考慮進行整站301跳轉了。如果是Apache服務器,在.htaccess文件添加如下代碼:

RewriteEngine On

RewriteCond %{SERVER_PORT} 80

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [R=301,L]

RewriteCond %{HTTP_HOST} ^watch-life.net [NC]

RewriteRule ^(.*)$ https://www.watch-life.net/$1 [L,R=301]

如果是Nginx服務器,在nginx.conf配置如下代碼:

server {

listen 80 default_server;

server_name www.watch-life.net;

return 301 https://$server_name$request_uri;

}

以上代碼,更換相應的域名即可使用。注意修改或增加配置代碼後,需要重啟web 服務器。重啟後,訪問原來HTTP的版本,看是否301跳轉為HTTPS的版本。

自此,WordPress整站開啟HTTPS開啟工作全部完成。後續就是觀察各大搜索引擎抓取、收錄的情況。

----------------------------------------------------------

我的各大自媒體平臺統一名稱:守望軒

相關推薦

推薦中...