前言
又是一個陰雨天沒有課的下午@( ̄- ̄)@
和舍友打完兩把英雄聯盟,又開啟了掘金開始刷面經。(實習面試很慌啊!)
看到HTTP協議和HTTPS的區別:
- HTTPS就是身披 SSL( Secure Socket Layer )外殼的 HTTP,執行於 SSL 上,SSL 執行於 TCP 之上,是新增了加密和認證機制的 HTTP。就是在HTTP(應用層)和TCP(傳輸層)之間新增了一層SSL協議。
- HTTPS預設執行在443埠,而HTTP預設執行在80埠。
- HTTPS由於需要證書的加密機制,所以安全性更高,但同時CPU和記憶體的消耗也更多。
- HTTPS使用共享金鑰加密和公開金鑰加密並用的混合加密機制
- 百度和谷歌也會優先收錄HTTPS站點哦~
看到這裡我不禁想起來,我每次開啟自己的站點時候都會看到位址列旁邊有個不安全的標誌,看著可是著實讓人難受,不如來搞個HTTPS吧!
準備SSL證書
我購買的是阿里雲的伺服器,通過谷歌瞭解到阿里雲是提供免費的SSL證書的,在如下的介面購買即可
配置Apache支援HTTPS
前面一頓操作,將獲得的證書檔案下載到了自己的電腦上
下面開始重頭戲,也是踩了不少坑的地方 也放一下阿里雲官方的配置文件 然而我們自己安裝的Apache目錄和官方的是不一樣,許多配置檔案都分散到了各個檔案中。開啟Ubuntu的OpenSSL使Apache載入SSL模組
使用命令sudo a2enmod ssl
載入Apache的SSL模組。
Apache載入SSL模組後,會在/etc/apache2/sites-available下生成default-ssl.conf檔案,我們在終端使用sudo許可權,通過vi編輯器開啟。
這個檔案需要做以下修改:- 第一個VirtualHost標籤 改成 *:443
- ServerName 換成自己的域名
- SSLCertificateFile、SSLCertificateKeyFile、SSLCertificateChainFile對應的分別是剛剛下載下來的三個檔案。
完成後:wq退出
然後需要把default-ssl.conf對映至/etc/apache2/sites-enabled資料夾
使用命令sudo ln -s /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-enabled/001-ssl.conf
進行建立軟連結操作。
官方文件中
SSLProtocol all -SSLv2 -SSLv3
# 新增SSL協議支援協議,去掉不安全的協議。
SSLCipherSuite HIGH:!RC4:!MD5:!aNULL:!eNULL:!NULL:!DH:!EDH:!EXP:+MEDIUM
# 使用此加密套件。
SSLHonorCipherOrder on
複製程式碼
在/etc/apache2/mods-available/ssl.conf
中修改
最後重新載入Apache配置檔案:sudo /etc/init.d/apache2 force-reload
重啟Apache服務:sudo /etc/init.d/apache2 restart
HTTP重定向至HTTPS
使用命令:sudo a2enmod rewrite
載入Apache的rewrite模組
開啟 /etc/apache2/apache2.conf
修改如下程式碼
<Directory /var/www/>
Options FollowSymLinks
AllowOverride ALL
Require all granted
</Directory>
複製程式碼
然後進入你的網站根目錄,使用命令touch.htaccess來建立.htaccess檔案
修改如下:
RewriteEngine on
RewriteCond %{HTTPS} !=on
RewriteRule ^(.*) https://%{SERVER_NAME}$1 [L,R]
複製程式碼
然後重啟伺服器,測試我的部落格網站咯~
嘻嘻,大功告成!