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

前言

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

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

看到HTTP協議和HTTPS的區別apache

  • HTTPS就是身披 SSL( Secure Socket Layer )外殼的 HTTP,運行於 SSL 上,SSL 運行於 TCP 之上,是添加了加密和認證機制的 HTTP。就是在HTTP(應用層)和TCP(傳輸層)之間添加了一層SSL協議。
  • HTTPS默認運行在443端口,而HTTP默認運行在80端口。
  • HTTPS因爲須要證書的加密機制,因此安全性更高,但同時CPU和內存的消耗也更多。
  • HTTPS使用共享密鑰加密和公開密鑰加密並用的混合加密機制
  • 百度和谷歌也會優先收錄HTTPS站點哦~

看到這裏我不由想起來,我每次打開本身的站點時候都會看到地址欄旁邊有個不安全的標誌,看着但是着實讓人難受,不如來搞個HTTPS吧!安全

準備SSL證書

我購買的是阿里雲的服務器,經過谷歌瞭解到阿里雲是提供免費的SSL證書的,在以下的界面購買便可 bash

配置Apache支持HTTPS

前面一頓操做,將得到的證書文件下載到了本身的電腦上 服務器

下面開始重頭戲,也是踩了很多坑的地方 也放一下 阿里雲官方的配置文檔 然而咱們本身安裝的Apache目錄和官方的是不同,許多配置文件都分散到了各個文件中。

開啓Ubuntu的OpenSSL使Apache加載SSL模塊

使用命令sudo a2enmod ssl加載Apache的SSL模塊。編輯器

Apache加載SSL模塊後,會在/etc/apache2/sites-available下生成default-ssl.conf文件,咱們在終端使用sudo權限,經過vi編輯器打開。 ide

這個文件須要作如下修改:

  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]
複製代碼

而後重啓服務器,測試個人博客網站咯~

嘻嘻,大功告成!
相關文章
相關標籤/搜索