我的網站升級http爲https

針對網站升級https,整理了下http和https的一些分析,以及配置方法整理html

目錄

HTTP與HTTPS是什麼?

HTTP協議(超文本傳輸協議)是互聯網上應用最爲普遍的一種網絡協議,常被用於在web瀏覽器和網站服務器之間傳遞信息,http協議傳輸數據是以明文方式進行傳送,若是中途被截獲,就能夠讀取其中的信息。還記得以前公司某一臺醫療設備的登陸界面被截獲,頁面上都是廣告的狀況。nginx

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

HTTPS協議的主要做用分爲兩種:web

  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 分鐘左右,申請的證書就會審覈經過。centos

image

證書申請是須要驗證域名的,阿里雲ssl證書的認證提供了三種瀏覽器

  • 自動 DNS 驗證,此時你須要在域名解析記錄中,增長一條TXT記錄,證實域名是你的,阿里雲的域名的話就是自動增長一條認證記錄
  • 手工DNS驗證,須要自行在域名解析記錄中,增長一條TXT記錄,進行域名認證
  • 文件認證,按照說明下載認證文件傳入服務器中,域名指向目錄下,進行訪問便可。

證書申請須要填寫的信息:安全

image

在域名的管理裏,由於我用了阿里雲的 DNS 解析服務,因此會自動添加一條 CNAME 記錄,這條記錄就是驗證域名全部權用的:服務器

image

下載證書

在阿里雲證書管理目錄中,若是申請的證書經過審覈後,就能夠進行下載。能夠選擇下載不一樣的類型,常見的有nginx,以及apach等服務器。根據本身網站的類型,選擇下載對應的證書。上傳到服務器目錄中,解壓後會獲取到兩個文件,文件後綴分別是 .key,和 .pem。網絡

image

配置 NGINX 的 HTTPS

證書上傳服務器後,就須要去配置服務器。不一樣的服務器配置不同。由於個人項目運行環境是lnmp環境下。個人配置方法就是用的是nginx類型的。個人域名是 www.studytime.xin.session

下載並上傳證書實例

登陸服務器ssh AliCloudssh

建立一個存儲證書的目錄:
sudo mkdir -p /usr/local/nginx/ssl/studytime

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

scp local_path root@ip:/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

相關文章
相關標籤/搜索