全站從http升級到https(WordPress部落格)
87testing.com
最近幾年HTTPS取代HTTP已經成為大趨勢,HTTP是超文字傳輸協議,資訊是明文傳輸的,而HTTPS是安全超文字傳輸協議,需要證書和提供安全連線,換句話說,HTTPS是嵌套了SSL加密的HTTP連線,其內容由SSL先加密,然後再傳輸。
簡單來講,HTTPS是加過密的HTTP。由於網路上傳輸的資料是加密的,使用者在瀏覽網頁時,除了使用者自己可以看到當前在看什麼網頁,其他第三方是無法得知使用者在做什麼的。比如使用者在網上登入或輸入其他敏感資訊進行傳輸時一旦使用HTTPS,那麼資料傳輸就不是明文了,對於第三方來講就無法獲取你的敏感資訊。
那麼既然去趨勢,自己也嘗試著將自己的部落格由HTTP升級到HTTPS,特做下記錄和總結。以防後續再用,或者給需要的人做參考。
SSL證書選擇
可以選擇騰訊雲、阿里雲合作的賽門鐵克簽署的證書,申請後可以免費使用一年,據說,一年後可以繼續申請,再換個證書就行了,有待驗證,具體可在如下頁面做申請,這裡也不過多描述,申請的時候都有詳細的說明。
申請完成後,進行下載,裡面有apache、nginx等對應服務的證書:
SSL證書的配置
可先參考:https://cloud.tencent.com/document/product/400/4143
Ubuntu下的apache2目錄結構是:
–預設站點在/var/www/
–配置檔案在/etc/apache2/
–日誌在/var/log/apache/
–啟動指令碼是/etc/init.d/apache2
etc/apache2下的資料夾與檔案
apache2.conf:Apache的主要配置檔案,包含全域性配置。
envvars:Apache2環境變數設定。
ports.conf:配置Apache監聽的埠。
mods-available:這個目錄包含模組和模組配置檔案,不是所有的模組都有配置檔案。
mods-enabled:持有/etc/apache2/mods-available目錄下檔案的連結,當該目錄下有一個模組檔案和其配置檔案,那麼Apache重啟後該模組將生效。
sites-available:這個目錄包含Apache虛擬主機的配置檔案。虛擬主機允許Apache配置多個站點併為每個站點配置不同的引數。後面下面配置的時候會配置80埠的http
sites-enabled:持有/etc/apache2/sites-available目錄下檔案的連結。當Apache重啟後,該目錄中包含的站點將會被啟用。
下面以apache為例,將對應apache目錄下的檔案上傳到伺服器某一目錄檔案,比如我的全部放在目錄/etc/apache2/sslcert
安裝openssl執行:
sudo apt-get install openssl
開啟ssl模組執行:
sudo a2enmod ssl
進入/etc/apache2/ports.conf檢視是否監聽Listen 443,沒有就加上
配置ssl虛擬站點,安裝openssl後會在/etc/apache2/site-available目錄下生成default-ssl檔案,此時需要建立一個軟連線到/etc/apache2/sites-enabled目錄下:
sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
如下軟連線就建立好了:
修改 001-ssl.conf 配置
SSLEngine on
SSLCertificateFile/etc/apache2/sslcert/2_www.87testing.com.crt
SSLCertificateKeyFile/etc/apache2/sslcert/3_www.87testing.com.key
SSLCertificateChainFile/etc/apache2/sslcert/1_root_bundle.crt
配置好後重啟:
sudo service apache2 restart
這時候訪問https://87testing.com,就可以正常開啟可信任了
設定HTTP重定向為HTTPS
啟動重定向: sudo a2enmod rewrite #啟動rewrite mod
設定http埠重定向,在網站根目錄wordpress下新建.htaccess檔案,在檔案中輸入內容:
RewriteEngineOn
RewriteCond%{SERVER_PORT}80
RewriteRule^(.*)$ https://www.87testing.com/$1 [R=301,L]
RewriteCond%{HTTP_HOST}^87testing.com [NC]
RewriteRule^(.*)$ https://www.87testing.com/$1 [L,R=301]
將資料庫寫死的http修改為https
伺服器上進入當前資料庫:
Update wp_options set option_value =‘https://87testing.com’ where option_id in(1,2);
update wp_posts set post_content = replace(post_content,'http://87testing.com','https://87testing.com');
最後重啟下apache服務:
sudo service apache2 restart
此時不管輸入87testing.com就可以正常跳轉到https://87testing.com,並且可信任了。。。