使用certbot爲你的網站免費上https

什麼是https

引自維基百科
超文本傳輸安全協議(英語:Hypertext Transfer Protocol Secure,縮寫:HTTPS)是一種網絡安全傳輸協議。在計算機網絡上,HTTPS經由超文本傳輸協議進行通信,但利用SSL/TLS來對數據包進行加密。HTTPS開發的主要目的,是提供對網絡服務器的身份認證,保護交換數據的隱私與完整性。
HTTPS的主要思想是在不安全的網絡上創建一安全信道,並可在使用適當的加密包和服務器證書可被驗證且可被信任時,對竊聽和中間人攻擊提供合理的防護。

HTTPS的信任繼承基於預先安裝在瀏覽器中的證書頒發機構(如VeriSign、Microsoft等)(意即“我信任證書頒發機構告訴我應該信任的”)。因此,一個到某網站的HTTPS連接可被信任,當且僅當:
用戶相信他們的瀏覽器正確實現了HTTPS且安裝了正確的證書頒發機構;
用戶相信證書頒發機構僅信任合法的網站;
被訪問的網站提供了一個有效的證書,意即,它是由一個被信任的證書頒發機構簽發的(大部分瀏覽器會對無效的證書發出警告);
該證書正確地驗證了被訪問的網站(如,訪問https://example時收到了給“Example Inc.”而不是其它組織的證書);
或者互聯網上相關的節點是值得信任的,或者用戶相信本協議的加密層(TLS或SSL)不能被竊聽者破壞。
HTTPS不應與在 RFC 2660 中定義的安全超文本傳輸協議(S-HTTP)相混淆。

http和https去區別

HTTP協議傳輸的數據都是未加密的,也就是明文的,因此使用HTTP協議傳輸隱私信息非常不安全,爲了保證這些隱私數據能加密傳輸,於是網景公司設計了SSL(Secure Sockets Layer)協議用於對HTTP協議傳輸的數據進行加密,從而就誕生了HTTPS。簡單來說,HTTPS協議是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議,要比http協議安全。
HTTPS和HTTP的區別主要如下:

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

https工作原理

客戶端在使用HTTPS方式與Web服務器通信時有以下幾個步驟,如圖所示。

  • 客戶使用https的URL訪問Web服務器,要求與Web服務器建立SSL連接。

  • Web服務器收到客戶端請求後,會將網站的證書信息(證書中包含公鑰)傳送一份給客戶端。

  • 客戶端的瀏覽器與Web服務器開始協商SSL連接的安全等級,也就是信息加密的等級。

  • 客戶端的瀏覽器根據雙方同意的安全等級,建立會話密鑰,然後利用網站的公鑰將會話密鑰加密,並傳送給網站。

  • Web服務器利用自己的私鑰解密出會話密鑰。

  • Web服務器利用會話密鑰加密與客戶端之間的通信。

關於TLS/SSL

傳輸層安全協議(英語:Transport Layer Security,縮寫:TLS),及其前身安全套接層(Secure Sockets Layer,縮寫:SSL)是一種安全協議,目的是爲互聯網通信,提供安全及數據完整性保障

爲什麼要部署https

說到底,就是 https 更安全。甚至爲了安全,一個專業可靠的網站, https 是必須的。 Firefox 和 Chrome 都計劃將沒有配置 SSL 加密的 http 網站標記爲不安全(貌似 Firefox 50 已經這麼幹了),目前它們也正在聯合其他相關的基金會與公司推動整個互聯網 https 化,現在大家訪問的一些主要的網站。如 Google 多年前就已經全部啓用 https ,國內的淘寶、搜狗、知乎、百度等等也全面 https 了。甚至 Google 的搜索結果也正在給予 https 的網站更高的排名和優先收錄權。

怎麼部署 https 呢

你只需要有一張被信任的 CA ( Certificate Authority )也就是證書授權中心頒發的 SSL 安全證書,並且將它部署到你的網站服務器上。一旦部署成功後,當用戶訪問你的網站時,瀏覽器會在顯示的網址前加一把小綠鎖,表明這個網站是安全的,當然同時你也會看到網址前的前綴變成了 https ,不再是 http 了。

怎麼獲得 SSL 安全證書

理論上,我們自己也可以簽發 SSL 安全證書,但是我們自己簽發的安全證書不會被主流的瀏覽器信任,所以我們需要被信任的證書授權中心( CA )簽發的安全證書。而一般的 SSL 安全證書籤發服務都比較貴,比如 Godaddy 、 GlobalSign 等機構簽發的證書一般都需要20美金一年甚至更貴,不過爲了加快推廣 https 的普及, EEF 電子前哨基金會、 Mozilla 基金會和美國密歇根大學成立了一個公益組織叫 ISRG ( Internet Security Research Group ),這個組織從 2015 年開始推出了 Let’s Encrypt 免費證書。這個免費證書不僅免費,而且還相當好用,所以我們就可以利用 Let’s Encrypt 提供的免費證書部署 https 了

Let’s Encrypt 及 Certbot 簡介

Let’s Encrypt 是 一個叫 ISRG ( Internet Security Research Group ,互聯網安全研究小組)的組織推出的免費安全證書計劃。參與這個計劃的組織和公司可以說是互聯網頂頂重要的先驅,除了前文提到的三個牛氣哄哄的發起單位外,後來又有思科(全球網絡設備製造商執牛耳者)、 Akamai 加入,甚至連 Linux 基金會也加入了合作,這些大牌組織的加入保證了這個項目的可信度和可持續性。

Certbot 使用方法

Certbot 的官方網站是 https://certbot.eff.org/ ,打開這個鏈接選擇自己使用的 web server 和操作系統,EFF 官方會給出詳細的使用方法,如下圖

 

開始安裝https

假設運行環境爲centos7.1,Web 服務器是 Nginx 1.12.0(因爲我的生產環境是),當前工作目錄爲 /root

  1. 獲取certbot客戶端
wget https://dl.eff.org/certbot-auto
chmod a+x certbot-auto
  1. 停止nginxyunx
service nginx stop
  1. 生成證書
./certbot-auto certonly --standalone --email `你的郵箱地址` -d `你的域名地址`

當前網站有多個域名時需在後面增加,例如

./certbot-auto certonly --standalone --email `你的郵箱地址` -d `你的域名1` -d `你的域名2`
  1. 查看生產的證書
tree /etc/letsencrypt/live/
  1. 將證書用於nginx

在nginx網站配置文件中增加

 # TLS 基本設置
ssl_certificate /etc/letsencrypt/live/www.just4fun.site/fullchain.pem;#證書位置
ssl_certificate_key /etc/letsencrypt/live/www.just4fun.site/privkey.pem;# 證書位置

啓動nginx

service nginx start

至此https配置完成

證書續簽

Let’s Encrypt 生成的免費證書爲3個月時間,但是我們可以無限次續簽證書

./certbot-auto renew 

鏈接:https://www.jianshu.com/p/fb3733cd0d3b

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章