天天看點

個人部落格網站更新http為https

原文作者:studytime

原文連結:https://www.studytime.xin/

針對個人部落格網站更新https,整理了下http和https的一些分析,以及配置方法

目錄

HTTP與HTTPS是什麼?

HTTP協定(超文本傳輸協定)是網際網路上應用最為廣泛的一種網絡協定,常被用于在web浏覽器和網站伺服器之間傳遞資訊,http協定傳輸資料是以明文方式進行傳送,如果中途被截獲,就可以讀取其中的資訊。還記得之前公司某一台醫療裝置的登入界面被截獲,頁面上都是廣告的情況。

為了解決HTTP協定的這一缺陷,就延伸出HTTPS協定 (安全套接字層超文本傳輸協定),HTTPS在HTTP的基礎上加入了SSL協定,SSL依靠證書來驗證伺服器的身份,為web浏覽器和伺服器之間的通信資料進行加密。

HTTPS協定的主要作用分為兩種:

  1. 建立一個資訊安全通道,來保證資料傳輸的安全
  2. 确認網站的真實性。

HTTP與HTTPS有什麼差別

  1. https協定需要到ca申請證書,一般免費證書較少,因而需要一定費用。
  2. http是超文本傳輸協定,資訊是明文傳輸,https則是具有安全性的ssl加密傳輸協定。
  3. http和https使用的是完全不同的連接配接方式,用的端口也不一樣,前者是80,後者是443。
  4. http的連接配接很簡單,是無狀态的;HTTPS協定是由SSL+HTTP協定建構的可進行加密傳輸、身份認證的網絡協定,比

證書申請配置流程

  1. 阿裡雲或者騰訊雲都有免費的證書,我的域名備案服務商是阿裡雲,所有我也就用阿裡雲了
  2. 登入阿裡雲->阿裡雲控制台->産品與服務->SSL證書(應用安全)->購買證書
  3. 購買證書->選擇品牌( Symantec)->證書類型選擇(免費型DV SSL)->立刻購買
  4. 證書申請錄入需要的資訊-> 證書綁定域名,所在地等
  5. 上傳:系統生成 CSR,點一下 建立。
  6. 完成上述後,送出稽核即可
  7. 如果正常,一般1,2個小時,證書就會稽核通過

如果一切正常,10 分鐘左右,申請的證書就會稽核通過。

個人部落格網站更新http為https

證書申請是需要驗證域名的,阿裡雲ssl證書的認證提供了三種

  • 自動 DNS 驗證,此時你需要在域名解析記錄中,增加一條TXT記錄,證明域名是你的,阿裡雲的域名的話就是自動增加一條認證記錄
  • 手工DNS驗證,需要自行在域名解析記錄中,增加一條TXT記錄,進行域名認證
  • 檔案認證,按照說明下載下傳認證檔案傳入伺服器中,域名指向目錄下,進行通路即可。

證書申請需要填寫的資訊:

個人部落格網站更新http為https

在域名的管理裡,因為我用了阿裡雲的 DNS 解析服務,是以會自動添加一條 CNAME 記錄,這條記錄就是驗證域名所有權用的:

個人部落格網站更新http為https

下載下傳證書

在阿裡雲證書管理目錄中,如果申請的證書通過稽核後,就可以進行下載下傳。可以選擇下載下傳不同的類型,常見的有nginx,以及apach等伺服器。根據自己網站的類型,選擇下載下傳對應的證書。上傳到伺服器目錄中,解壓後會擷取到兩個檔案,檔案字尾分别是 *.key,和 *.pem。

個人部落格網站更新http為https

配置 NGINX 的 HTTPS

證書上傳伺服器後,就需要去配置伺服器。不同的伺服器配置不一樣。因為我的項目運作環境是lnmp環境下。我的配置方法就是用的是nginx類型的。我的域名是 www.studytime.xin.

下載下傳并上傳證書執行個體

登入伺服器

ssh AliCloud

建立一個存儲證書的目錄:

sudo mkdir -p /usr/local/nginx/ssl/studytime

把申請并下載下傳下來的證書,上傳到上面建立的目錄的下面。

scp local_path [email protected]:/usr/local/nginx/ssl/studytime

證書上傳後的路徑:
/usr/local/nginx/ssl/studytime/1650160_studytime.xin.key
/usr/local/nginx/ssl/studytime/1650160_studytime.xin.pem
           

配置NGINX檔案

可以允許網站同時支援http以及https。http使用的預設斷後是80,https使用的預設頓口是443。

針對這個問題需要特殊說明下,伺服器必須開啟響應的80和443端口給外網。一般伺服器的安全組是預設開啟的,若沒有開啟可以自行搜尋處理,centos7怎麼開啟80和443端口等。

下面是一個基本的監聽 443 端口,使用了 SSL 證書的 NGINX 配置檔案,建立一個配置檔案:

touch /usr/local/nginx/conf/vhosts/studytime.conf

把下面的代碼粘貼進去:

server {
  listen       443;
  server_name  www.studytime.xin;
  ssl          on;
  root /data/wwwroot/blog;
  index index.html;
  ssl_certificate  /usr/local/nginx/ssl/studytime/1650160_studytime.xin.pem;
  ssl_certificate_key  /usr/local/nginx/ssl/studytime/1650160_studytime.xin.key;
  ssl_session_timeout 5m;
  ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
  ssl_ciphers AESGCM:ALL:!DH:!EXPORT:!RC4:+HIGH:!MEDIUM:!LOW:!aNULL:!eNULL;
  ssl_prefer_server_ciphers on;
}
           

上面的配置裡,ssl_certificate 與 ssl_certificate_key 這兩個指令指定使用了兩個檔案,就是你下載下傳的證書,解壓之後看到的那兩個檔案,一個是 *.pem,一個是 *.key。你要把這兩個檔案上傳到伺服器上的某個目錄的下面。

重新加載 NGINX 服務:

sudo nginx -s reload
           

驗證配置

在浏覽器上輸入帶 https 的網站位址:https://studytime.xin

如果正确的配置了讓伺服器使用 SSL 證書,會在位址欄上顯示一個綠色的小鎖頭圖示。

點開那個小鎖頭,會顯示安全連接配接,再打開 詳細資訊。

NGINX 配置使用 301 重定向,會讓對 HTTP 網頁的請求,重定向到 HTTPS 版本的網頁上。

server {
  listen        80;
  server_name   studytime.xin www.studytime.xin;
  return 301    https://$host$request_uri;
}
           

更多精彩内容,請關注作者部落格,https://studytime.xin