1. 程式人生 > >全站從http升級到https(WordPress部落格)

全站從http升級到https(WordPress部落格)

640?wx_fmt=jpeg

87testing.com

最近幾年HTTPS取代HTTP已經成為大趨勢,HTTP是超文字傳輸協議,資訊是明文傳輸的,而HTTPS是安全超文字傳輸協議,需要證書和提供安全連線,換句話說,HTTPS是嵌套了SSL加密的HTTP連線,其內容由SSL先加密,然後再傳輸。

簡單來講,HTTPS是加過密的HTTP。由於網路上傳輸的資料是加密的,使用者在瀏覽網頁時,除了使用者自己可以看到當前在看什麼網頁,其他第三方是無法得知使用者在做什麼的。比如使用者在網上登入或輸入其他敏感資訊進行傳輸時一旦使用HTTPS,那麼資料傳輸就不是明文了,對於第三方來講就無法獲取你的敏感資訊。

那麼既然去趨勢,自己也嘗試著將自己的部落格由HTTP升級到HTTPS,特做下記錄和總結。以防後續再用,或者給需要的人做參考。

SSL證書選擇

可以選擇騰訊雲、阿里雲合作的賽門鐵克簽署的證書,申請後可以免費使用一年,據說,一年後可以繼續申請,再換個證書就行了,有待驗證,具體可在如下頁面做申請,這裡也不過多描述,申請的時候都有詳細的說明。640?wx_fmt=png

申請完成後,進行下載,裡面有apache、nginx等對應服務的證書:640?wx_fmt=png

SSL證書的配置

可先參考:https://cloud.tencent.com/document/product/400/4143

Ubuntu下的apache2目錄結構是:

  1. 預設站點在/var/www/

  2. 配置檔案在/etc/apache2/

  3. 日誌在/var/log/apache/

  4. 啟動指令碼是/etc/init.d/apache2

etc/apache2下的資料夾與檔案

  1. apache2.confApache的主要配置檔案,包含全域性配置。

  2. envvarsApache2環境變數設定。

  3. ports.conf:配置Apache監聽的埠。

  4. mods-available:這個目錄包含模組和模組配置檔案,不是所有的模組都有配置檔案。

  5. mods-enabled:持有/etc/apache2/mods-available目錄下檔案的連結,當該目錄下有一個模組檔案和其配置檔案,那麼Apache重啟後該模組將生效。

  6. sites-available:這個目錄包含Apache虛擬主機的配置檔案。虛擬主機允許Apache配置多個站點併為每個站點配置不同的引數。後面下面配置的時候會配置80埠的http

    重定向為443https

  7. sites-enabled:持有/etc/apache2/sites-available目錄下檔案的連結。當Apache重啟後,該目錄中包含的站點將會被啟用。

  • 下面以apache為例,將對應apache目錄下的檔案上傳到伺服器某一目錄檔案,比如我的全部放在目錄/etc/apache2/sslcert

  • 安裝openssl執行:

  1. sudo apt-get install openssl

  • 開啟ssl模組執行:

  1. sudo a2enmod ssl

  • 進入/etc/apache2/ports.conf檢視是否監聽Listen 443,沒有就加上

  • 配置ssl虛擬站點,安裝openssl後會在/etc/apache2/site-available目錄下生成default-ssl檔案,此時需要建立一個軟連線到/etc/apache2/sites-enabled目錄下:

  1. sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf

如下軟連線就建立好了:640?wx_fmt=png

  • 修改 001-ssl.conf 配置

  1. SSLEngine on

  2. SSLCertificateFile/etc/apache2/sslcert/2_www.87testing.com.crt

  3. SSLCertificateKeyFile/etc/apache2/sslcert/3_www.87testing.com.key

  4. SSLCertificateChainFile/etc/apache2/sslcert/1_root_bundle.crt

  • 配置好後重啟:

  1. sudo service apache2 restart

這時候訪問https://87testing.com,就可以正常開啟可信任了

設定HTTP重定向為HTTPS

  • 啟動重定向: sudo a2enmod rewrite #啟動rewrite mod

  • 設定http埠重定向,在網站根目錄wordpress下新建.htaccess檔案,在檔案中輸入內容:

  1. RewriteEngineOn

  2. RewriteCond%{SERVER_PORT}80

  3. RewriteRule^(.*)$ https://www.87testing.com/$1 [R=301,L]

  4. RewriteCond%{HTTP_HOST}^87testing.com [NC]

  5. RewriteRule^(.*)$ https://www.87testing.com/$1 [L,R=301]

將資料庫寫死的http修改為https

伺服器上進入當前資料庫:

  1. Update wp_options set option_value =https://87testing.com’ where option_id in(1,2);

  2. update wp_posts set post_content = replace(post_content,'http://87testing.com','https://87testing.com');

最後重啟下apache服務:

  1. sudo service apache2 restart

此時不管輸入87testing.com就可以正常跳轉到https://87testing.com,並且可信任了。。。640?wx_fmt=png