最近幾年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重定向為443的https。
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文件,在文件中輸入內容:
RewriteEngine On
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,並且可信任了。。。