WordPress 開啟全站 HTTPS

自從 CNNIC 頒發的子證書發生了中間人攻擊這些事件之後,SSL 連接以及 HTTPS 變得越來越流行了。這時候我們從“使用 SSL 保護你的登錄信息以及後台頁面”變成了推薦“SSL無處不在“,使用全局 SSL 加密,有效避免用戶在訪問網頁的時候造成隱私的洩露。而且,根據谷歌站長的最新教程當中的介紹表示,使用 https 對 SEO 更有好處(國內就別想了,但谷歌的爬蟲真的會更看重 Https 網站。)另外,升級到 Https,也不需要在谷歌站長工具裡做什麼——支持平滑升級,唯一的缺點恐怕是收錄會波動一小段時間。

谷歌支持到 HTTPS 的平滑遷移

谷歌支持到 HTTPS 的平滑遷移

這裡,我們要感謝 startssl如果™ ,如果不是他們,恐怕我們這些微小站長個人博客博主就無緣 SSL 了。

由於這個原因,落格不在使用 StartSSL 的免費證書了,而是轉而使用備受關注的 讓我們來加密 項目,這樣你可以很方便地獲得個人免費證書。不過,如果你和我一樣是把博客扔在虛擬主機,那我想你可能需要這個網站以支持虛擬主機的 cPanel 等後台配置。

對於如何申請證書這個問題,這裡暫時略過不講,總之這篇文章假定你至少擁有了一個有效簽名的證書以及對應的域名。

關於 HTTPS 的那點不得不講的事情

HTTPS 使用443端口來驗證你的鏈接,通過 SSL、TLS 這種低層的加密技術來保證你的連接是安全的,由於 SSL 這種協議在 IP 層面上,所以建立安全握手的時候甚至還沒有發生 HTTP 數據的交換,這就導致了 SSL 這個本身針對域名進行簽名的證書卻需求你有一個獨立的 IP 地址。不過,現實很快就無情地證明——IPv4 地址終究會被用盡。虛擬主機應運而生,這時候我們很慶幸的還​​能有一個獨立的域名和空間,但 IP 地址卻是共享的

Web 服務器通過區分來自不同域名的請求來在同一 IP 的同一端口上提供不同的網站服務,這就導致了一個嚴重的問題:“SSL 證書綁定給誰?”事實上虛擬主機確實很難支持 SSL,一不小心就會導致同 IP 下的其他域名提示證書不正確。不過,現如今的主流瀏覽器都支持了一個新的協議:SNI

使用 SNI,將允許 Web 服務器在同一 IP 上單獨為每一個域名提供證書。

所以說,如果你想要在一個 IP 上綁定多個域名的證書,或者說你依舊使用著經濟實惠的虛擬主機,想要綁定證書,那麼就需要確定你的主機可以支持 SNI——當然了,目前主流的服務器比如 Nginx的阿帕奇 等都已經支持,唯獨要點名的是 IIS 貌似還是不支持的。

至於瀏覽器,蘋果瀏覽器、鉻、Firefox 等知名瀏覽器都已經支持,要點名的是 IE 系列貌似 5678 都不太好使。

好了,扒完了背景,我們正式開始操作:

由於落格依舊是虛擬主機配置,這裡我們講如何用 cPanel 來開啟 SSL:

一、開啟 SSL 訪問支持

登錄你的 的cPanel,如果你的虛擬主機支持 SNI 技術(就看服務商給不給力了),那麼你應該可以在 cPanel 面板中的“安全”分類裡邊找到“SSL / TLS”功能按鈕。

“安全”分類裡的“SSL/TLS”

“安全”分類裡的“SSL/TLS”

點擊進入之後你就會看到上傳私鑰公鑰以及綁定域名的鏈接,依次進入上傳之,然後選擇去綁定鏈接裡綁定自己的域名“萬維網”即可。(這裡要注意,如果你和落格一樣使用的是一類證書,那麼你應該沒有資格簽泛域名證書,裸域應該也是不行的。)

綁定之後,你的博客應該就已經能夠使用 Https 來訪問了,不過,這才剛剛開始。

二、開啟訪問 HTTPS 301重定向

細心的你這時候一定會發現,你的網站這時候雖然支持了 HTTPS 訪問,但是似乎也可以使用 HTTP 來訪問,考慮到搜索引擎目前收錄的都是你的 HTTP 鏈接,那麼如果不做點什麼的話恐怕這張 SSL 證書將會毫無用處!

我希望你的空間能夠支持 .htaccess的 ,如果你的博客開啟了偽靜態的話,那八成你的空間是支持的。 :)

我們使用 .htaccess的 文件來添加一個301重定向(其實還有其他各種遷移的辦法,但是谷歌大爺官方推薦使用301重定向)將所有的 HTTP 流量使用301重定向到 HTTPS 上邊去,當然,這樣還有一個潛在的問題:國內百度等搜索引擎的爬蟲不支持 HTTPS

我很好奇,為什麼在全世界都提倡 SSL無處不在 的情況下,我國國內的互聯網環境還是“明文走天下”,當然,這可能也跟那個“女朋友牆”有關係吧……(不然不好和諧了啊~)所以,我們還要單獨為國內的一些搜索引擎的爬蟲定制一下規則,如果檢測到他們的 UA,那麼就允許他們訪問 HTTP 流量。

在你博客空間的 萬維網 目錄(有的可能是 為public_html )下,找到 .htaccess的 文件,編輯它,在裡邊填入下列代碼:

對了,考慮到巨硬的 IE 大爺,我們把12345678都排除在外,讓它們妥妥的滾去訪問 HTTP 吧,省的各種警告煩心。

三、開啟登錄和後台的強制 SSL

雖然有了整站的重定向,但我們不妨還是將 WordPress 本身自帶的功能打開,以期更完善的兼容體驗——畢竟是301重定向。

還是找到你網站根目錄裡邊,這次要修改的文件是 config.php文件,直接在這個文件的末尾另起一行,追加兩行代碼:

四、站內鏈接支持

最主要的可能就是圖片的問題了,你在上傳到空間的附件都被 WordPress 標記為了絕對鏈接,而且全都妥妥的寫入了 “http://“。一般來講,是需要用數據庫替換的,不過這種方法有點小危險,我這裡給你推薦另外一個不錯的選擇:使用代碼讓 WordPress 在加載附件之前將鏈接替換就好了! ——畢竟,只是協議的問題,跟路徑沒有半毛錢的關係~

(我希望你使用了 WordPress 的子主題功能……)

找到當前主題下的 function.php 文件,編輯之,在裡邊代碼的末尾追加如下代碼:

另外,除了這個大頭意外,你還需要關心站內的各種內鏈:

  • 修改“菜單”當中的所有“自定義鏈接”為相對路徑;
  • 修改“設置”→“常規”裡的“站點地址”和“WordPress 地址”為 HTTPS;
  • 修改其他自己手賤寫入的絕對鏈接地址……

五、關心一下插件

現在,還剩下最後一個問題:插件的兼容性

是的沒錯!並不是所有的插件都會兼容 SSL!(尤其是國內的插件)

對了!關於 CNZZ 這個統計的話你只需要改動一下統計代碼就可以,將 HTTP 修改為 HTTPS 即可。不過國內比較常用的 JiaThis 社會化分享插件就無力了,只能割愛停刪

另外,曾今“我愛水煮魚”開發的相關文章插件:WordPress的相關帖子,後來賣給了老外,總是會加載一個站外的鏈接,如今還因為 女朋友牆 的問題導致這個 js 腳本各種菊花,只好果斷停刪

你可以使用任意瀏覽器,打開你的博客頁面之後隨便打開一篇文章,選擇類似於“檢查元素”的操作,查看報錯就可以了:要求是沒有任何紅色的錯誤,黃色的警告“⚠️”可以忽略。

關於刪除的插件那功能怎麼辦?

當然是找替換插件了,這裡針對如上的兩個插件,路由推薦兩個插件:

  • anyShare 它是一個功能簡潔十分輕量級的社會化分享插件,按鈕比較大(你可以稍後在這片文章末尾看到樣式),雖然說它已經10個月沒有更新,但我向你保證這玩意兒絕對兼容最新版本的 WordPress 並且功能完美。:)
  • 然而,另一個相關文章插件 這個是另外一個相關文章插件,再也沒有煩人的站外鏈接了,免費版功能足夠,而且同樣支持RSS,而且現在它的配置界面也不再那麼讓人望而生畏,對了!雖然它同樣被提示不兼容最新版——但我保證,這玩意兒同樣功能正常~

最後,你可以到這個頁面來參考落格都使用了哪些狂拽炫酷吊的​​ WordPress 插件,這些插件至少都會兼容 SSL

 


 

這下,你的博客應該已經能夠完美的顯示出一個灰色的小鎖啦!

唉? !為什麼是灰色?知足吧,一類證書都是醬紫,想要綠色掏錢

對了,在 下是綠色了,但 蘋果瀏覽器 比較挑,是灰色的~

另:如果你的博客包含了同域名下的非 HTTPS 鏈接,Chrome 會出現黃色的三角警告,而 Safari 則是像普通鏈接一樣不在地址欄裡顯示小鎖

本文由 落格博客 原創撰寫:落格博客 » WordPress 開啟全站 HTTPS

轉載請保留出處和原文鏈接:https://www.logcg.com/archives/961.html

關於作者

R0uter

如非聲明,本人所著文章均為原創手打,轉載請註明本頁面鏈接和我的名字。

註釋

    1. 可以的!直接擼數據庫有風險,相對來說動態改鏈接則更方便一些(比如某天不用ssl了(雖然可能性不大……
      總之,有能力的話直接替換了也是可以噠,還更方便性能也好。

  1. 看完了博主寫的很詳細,anyShare這個插件我感覺沒有百度分享好用,只需要一段代碼不需要插件就能搞定。我也準備給博客加上https啊,沃通和Let’s Encrypt 兩家的免費ssl誰家的好呢?

  2. 大佬請教個問題,

    我已開啟綠鎖,但是如果友情連接的人不是HTTPS的時候,這個頁面就會顯示灰色,提示有非法的HTTP資源,這個連接不是本站的的連接,也不是圖片 JS 什麼資源,就一純連接。怎麼辦?

    1. 是這樣的,如果你的網站是https,而裡邊提供了http鏈接,那麼瀏覽器會認為你的頁面是不安全的。一種辦法是都提供https,另一種嘛就是去掉了。或者不管他。

  3. 使用的七牛插件,使用https後,縮圖還是本地圖片,而且是http的,怎麼處理?

    /* 替換圖片鏈接為 https */
    功能my_content_manipulator($內容){
    如果( is_ssl() ){
    $內容= str_replace函數(“HTTP://www.logcg.com/wp-content/uploads“, “HTTPS://www.logcg.com/wp-content/uploads“, $內容);
    }
    返回$內容;
    }
    的add_filter('內容', “my_content_manipulator”);
    這個替換不掉縮圖的圖片

    1. 一般來說這是個趨勢,現在各種一鍵腳本很多,甚至我的服務商都為空間用戶提供了一鍵部署功能!

      但要注意選擇合適的廠商到了簽發證書,比如 let’s encrypt 就不錯,或者其他便宜的免費的廠商,但注意不要使用 startssl 和 wosign 沃通,這兩家臭名遠揚。

  4. Safari的策略是只針對EV顯示綠色,以及綠色小鎖旁邊還有公司名稱。
    有綠色顯示公司名稱是EV證書的特權,ch也會用綠條顯示名稱。只不過ch在網頁中沒加載http資源時都是綠鎖

    1. 是的,ev證書太貴了,所以說難以獲得。普通證書自然就是灰色小鎖,而其他瀏覽器就很給面子,是鎖就綠色了。至於你說的ch…………我真不知那是什麼啊………………

    1. “由於這個原因,落格不在使用 StartSSL 的免費證書了,而是轉而使用備受關注的 Let’s Encrypt 項目,這樣你可以很方便地獲得個人免費證書。不過,如果你和我一樣是把博客扔在虛擬主機,那我想你可能需要這個網站以支持虛擬主機的 cPanel 等後台配置。” 我確實更新了的:)

          1. 1 我這是vps本來就是便宜貨所以沒面板的,amh是自己裝的QAQ 其次….我是學生忙+懶癌=需要自動續簽…所以我花了一上午弄那玩意….問人家官方不願意弄模塊說這玩意還是手動弄好….成果都是逼出來的QwQ我委屈,但我不說..

  5. 我網站很多插件對https不支持,所以想弄https強制跳轉到http的,是不是也可以Rewrite方式逆思維處理?>還有是不是刪除
    的RewriteCond %{HTTP_USER_AGENT} !MSIE /[1-8]\. [NC]
    這行的話就會讓IE大爺的全系列也遵守規則?謝謝~
    PS:本來打算全站用https的所以特地為了綠鎖頭和信息展示買了ssl,現在才發現…無卵用= =真別買

    1. 哈哈哈~~確實,我們個人用戶的話買ssl證書沒什麼用,我現在使用免費的encrypt everywhere,只要三個月一更新即可。如果你要反過來跳轉……請不寫規則即可。因為瀏覽器默認會走http,如果非要如此……確實可以按照你說的,反過來些rewrite……
      但我覺得吧,就默認就好啦。

      最後,能https,還是https,這樣是對讀者負責。

      1. https固然好,可是插件什麼都不支持啥也加載不出來紅叉一堆…腦袋大啦
        而且以前沒改站點的時候一直用的https,但是現在用https訪問的話會出錯所以想強制跳轉到http這樣的話照顧下加收藏夾的……
        (論自己修改插件能力的重要性…)

        1. 對於插件,我的態度是換而不是改,不是改不了而是人家要升級。你辛辛苦苦改了,回頭人家升級了全完了。換一個支持https的同功能插件是很容易的事情啊。
          不過要是懶得調試,那就http吧~只是沒有小綠鎖,看著心慌慌呢:)

          1. QAQ問題是有些插件並不是滿街是遍地有的程度..默契度難得的高了再改就麻煩很多了….
            插件的話我已經有過一次教訓了所以基本上順手的…不升級…
            至於綠鎖頭?ps一個不就好了╮(╯▽╰)╭(開玩笑)
            但是現在想想還是有個鎖頭更好點….嗯….得熬夜趕工了
            然後問一下Let’s Encrypt Authority X1 和Let’s Encrypt Authority X3有區別嗎….

          2. 1234有各自不同的用途,比如4號是作為災備的,平時不適用。12是前面幾代的證書,也不應該使用,不過如果你要兼容xp,那就需要使用x1;平常使用的話,就是用3.

    1. 我發現你好像使用了七牛的cdn來給博客加速了,那麼你需要去七牛的配置頁面獲取https鏈接而不是普通的http鏈接。要使用七牛的https鏈接,你可能需要保持你的七牛賬戶餘額大於10元並且進行實名認證:)

    1. 我刪了是因為這東西對落格來說用處不是太大,依照落格目前的訪問量來看,開了也就是佔用點內存罷了~哪裡需要那麼大的並發?有個靜態緩存足矣。

      1. # BEGIN WordPress的

        RewriteEngine敘述在
        #的RewriteCond %{HTTPS} !^ $上 [NC]
        #重寫規則 (.*) https://%{服務器名稱}%{REQUEST_URI} [大號,R = 301]
        的RewriteBase /
        重寫規則^指數 $ .PHP – [大號]
        的RewriteCond %{REQUEST_FILENAME} !-F
        的RewriteCond %{REQUEST_FILENAME} !-ð
        重寫規則 . /的index.php [大號]

        # END WordPress的
        規則如上,但是訪問不了,阿里雲的虛擬主機,請問博主有遇見過這個問題麼?

    1. 感謝樓主分享。WordPress盡量能不用就不用插件吧。當然根據自己的實際情況來定,附加個鏈接https://meirishou.org,剛剛整完的。還不錯!

  6. 我用了沃通的證書,現在全部頁面都是hppts的,但是輸入網址自動訪問的是hppt,要點下logo才會回到hppts,而且hppt登陸就是沒反應轉到hppts才會是登陸狀態 。。。。有什麼方法解決嗎,我百度幾天了沒一個教程

發表評論

您的電子郵件地址不會被公開. 必填字段標 *