將自己的站點升級成HTTPS的(瘋狂踩坑)過程

Keen King發表於2019-03-05

前言

又是一個陰雨天沒有課的下午@( ̄- ̄)@

和舍友打完兩把英雄聯盟,又開啟了掘金開始刷面經。(實習面試很慌啊!)

看到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證書的,在如下的介面購買即可

將自己的站點升級成HTTPS的(瘋狂踩坑)過程

配置Apache支援HTTPS

前面一頓操作,將獲得的證書檔案下載到了自己的電腦上

將自己的站點升級成HTTPS的(瘋狂踩坑)過程
下面開始重頭戲,也是踩了不少坑的地方 也放一下阿里雲官方的配置文件 然而我們自己安裝的Apache目錄和官方的是不一樣,許多配置檔案都分散到了各個檔案中。

開啟Ubuntu的OpenSSL使Apache載入SSL模組

使用命令sudo a2enmod ssl載入Apache的SSL模組。

Apache載入SSL模組後,會在/etc/apache2/sites-available下生成default-ssl.conf檔案,我們在終端使用sudo許可權,通過vi編輯器開啟。

將自己的站點升級成HTTPS的(瘋狂踩坑)過程
這個檔案需要做以下修改:

  1. 第一個VirtualHost標籤 改成 *:443
  2. ServerName 換成自己的域名
  3. 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]
複製程式碼

然後重啟伺服器,測試我的部落格網站咯~

將自己的站點升級成HTTPS的(瘋狂踩坑)過程
嘻嘻,大功告成!

相關文章