1. 程式人生 > >讓網站永久擁有HTTPS-申請免費SSL證書並自動續期

讓網站永久擁有HTTPS-申請免費SSL證書並自動續期

為什麼要用HTTPS

網站沒有使用HTTPS的時候,瀏覽器一般會報不安全,而且在別人訪問這個網站的時候,很有可能會被運營商劫持,然後在網站裡顯示一些莫名其妙的廣告。 

有HTTPS的時候,通俗地講所有的資料傳輸都會被加密,你和網站之間的資料交流也就更加安全。

相關簡介

我們加密吧

  如果要啟用HTTPS,我們就需要從證書授權機構處獲取一個證書,讓我們加密就是一個證書授權機構。我們可以從讓加密獲得網站域名的免費的證書。

Certbot

Certbot是Let's Encrypt推出的獲取證書的客戶端,可以讓我們免費快速地獲取Let's Encrypt證書。

SSL超市

SSL超市一家國內的SSL證書提供商,同樣也擁有免費證書。提供而且豐富的工具https://www.sslchaoshi.com

獲取HTTPS證書

  獲取SSL證書的過程大體上都一樣。既可以圖形化,也可以命令列,最後實現的效果都完全一樣,大家各取所需。

命令列

安裝Certbot

進入Certbot的官網,選擇你所使用的軟體和系統環境,然後就會跳轉到對應版本的安裝方法,以Ubuntu + Nginx為例。

sudo apt-get update

sudo apt-get install software-properties-common

sudo add-apt-repository ppa:certbot / certbot

sudo apt-get update

sudo apt-get install certbot

申請證書

  安裝完成後執行:

certbot certonly --webroot -w / var / www / example -d example.com -d www.example.com

這條命令的意思是為以/無功/網路/例子為根目錄的兩個域名example.com和www.example.com申請證書。

  如果你的網站沒有根目錄或者是你不知道你的網站根目錄在哪裡,可以通過下面的語句來實現:

certbot certonly --standalone -d example.com -d www.example.com

圖形化

進入SSL的超市官網https://www.sslchaoshi.com註冊了賬號之後,選擇那個COMOD單域名證書,然後點確認購買,或者選擇一款測試版的證書進行購買錢測試使用

 

登陸該網址後,點選註冊,然後找到這款證書,(我看了是行業中最便宜的一款了)

點選“確認購買”

完成支付後點擊證書詳情(如果你要開發票的話就點選開發票就可以了)

輸入域名,並點選“生成CSR並提交申請”按鈕

這裡我選擇郵箱驗證方式,其它另外三種依照你的個人情況而定,反正就是為了驗證域名是不是你的而已。點選“確定”按鈕

 

這裡有個注意事項,郵箱採用驗證一定要是該域名的    所有者聯絡郵箱     大家可以到站長工具域名註冊查詢,查到的資訊如下

大約過幾分鐘,郵箱會收到一封驗證郵件,如下圖,複製②指向的一串驗證碼,點選①處的這裡連結

輸入驗證碼,點選“下一步>”按鈕

提示已經輸入正確的驗證碼,點選“關閉視窗”

大約等到10分鐘左右,再次登陸https://www.sslchaoshi.com,進入個人中心,可以看到已經成功申請SSL證書,點選檢視詳情

此時你可以點選證書打包下載,然後免費的SSL證書就可以下載到本地了,下載後可以看到SSL壓縮包內的檔案,

有各個WEB伺服器的證書,你可以根據你的WEB伺服器的版本選擇。

注意:如果提交CSR的時候選擇的是自己生成的CSR,打包下載的證書壓縮包裡沒有IIS目錄,需要使用者用CSR對應的私鑰和證書去生成IIS需要的PFX字尾證書

部署HTTPS證書

找到網站的Nginx配置檔案,找到聽80;,修改為listen 443;在這一行的下面新增以下內容:

ssl on;

ssl_certificate XXX / fullchain.pem; 修改為fullchain.pem所在的路徑 

 ssl_certificate_key XXX / privkey.pem; 修改為privkey.pem所在的路徑 

ssl_session_timeout 5m;

ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE:ECDH:AES:HIGH:!NULL:!aNULL:!MD5:!ADH:!RC4;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;

ssl_prefer_server_ciphers on;

儲存退出後,通過nginx -t來檢查配置檔案是否正確,有錯誤的話改之即可。配置檔案檢測正確之後,通過nginx -s reload來過載配置檔案。

然後通過訪問https://example.com來檢視是否配置成功。

如果發現無法訪問或者是載入不出來的話檢查一下443埠有沒有開啟!

設定HTTP強制跳轉HTTPS

上一步成功之後大家可能會發現通過原來的http://example.com無法訪問網頁了,因為HTTP預設走的是80埠,我們剛才將其修改為443埠了。在這裡我們可以在配置檔案的最後一行加入以下程式碼:

伺服器{

           聽80;

           server_name example.com; 這裡修改為網站域名

           重寫^(。*)$ https:// $ host $ 1 permanent;

}

意思是每一個通過80埠訪問的請求都會強制跳轉到443埠,這樣一來訪問http://example.com的時候就會自動跳轉到https://example.com了。

命令列下設定證書自動續期

有心的小夥伴可能會留意到我們剛才申請的整數的有效期只有90天,不是很長,可是我們可以通過Linux的自帶的cron的來實現自動續期,這樣就相當於永久了。

隨便找一個目錄,新建一個檔案,名字隨便起,在這裡以示例為例,在裡面寫入0 * / 12 * * * certbot renew --quiet --renew-hook“/etc/init.d/nginx重灌“,儲存。

然後在控制檯裡執行crontab例子一切都OK了。原理是示例裡存入了一個每天檢查更新兩次的命令,這個命令會自動續期伺服器裡存在的來自Certbot的SSL證書。然後把示例裡存在的命令匯入進Certbot的定時程式裡。

附:

其它環境下的證書部署

https://www.sslchaoshi.com/help/docs

Nginx的相關命令

nginx -t驗證配置是否正確

nginx -v檢視Nginx的版本號

服務nginx啟動啟動Nginx

nginx -s停止快速停止或關閉Nginx

nginx -s quit正常停止或關閉Nginx

nginx -s reload重新載入配置檔案

crontab的相關命令

cat / var / log / cron檢視crontab日誌

crontab -l檢視crontab列表

crontab -e編輯crontab列表

systemctl status crond.service檢視crontab服務狀態

systemctl restart crond.service重啟crontab