SSL文章配圖

什麼是SSL?SSL和HTTPS網頁傳輸加密是什麼關係?

WordPress 架站必備知識 – SSL 與 HTTPS 網頁傳輸加密

在正式說明之前,要先分辨一下什麼是 SSL 加密與 SSL 憑證,兩個是不同的東西。

SSL 憑證加密,一言以蔽之,就是第三方網站替你的加密進行背書。

SSL 加密是什麼

SSL 加密是一個協定名稱,什麼是協定呢?就像是我們之間說好使用摩斯電碼的規則來傳遞訊息,就是一種協定。

只是 SSL 這個協定後來被 Google 發現有缺陷,於是呼籲禁止使用,改用安全性較高的 TLS(Transport Layer Security) 協定,而協定中每個版本都有它所支援的演算法。

好像有點複雜?

沒關係簡單來說,協定就像我們有英文語系國家、中文語系國家、阿拉伯語系國家,每個語系又有分地方的方言,像是中文語系就有廣東語、台語、北京話、上海話..等,大家在溝通時會先說好要用哪種語系、哪種方言來溝通,最不容易被其他人給聽懂在說什麼的概念。

SSL 憑證是什麼

憑證其實就像開公司,需要到政府機構登記公司行號,接著你會拿到許可,證明你擁有這家公司,而實際上,SSL 憑證在取得上,也是類似這樣的作法。

SSL 憑證主要證明的點,是誰擁有這網站,就像今天連到一個不知名的線上購物網站,買東西時要留下個人資料與信用卡號,你真的安心付錢給一家沒聽過、不知名的線上購物網嗎?還是會去知名、有政府認證的網站線上購物?

要怎麼看這網站有沒有使用 SSL 憑證加密呢?

在 Chrome 瀏覽器上方,會有一個像鎖頭的符號出現,點下去會說”以建立安全連線”,就表示有在使用 SSL 憑證加密的功能,你連到這個網站的資料傳輸,在路人看起來都是一串亂碼,必須解密才能看見內容在傳什麼。

SSL 憑證加密確認示意圖
SSL 憑證加密確認

SSL 憑證加密原理

首先,就跟成立公司一樣,我們要找政府立案或背書,我們在買 SSL 加密憑證之前我們要選好發證機構。

假設我們今天要找一家叫做 GoDaddy 的公司做簽發機構,請他簽發一張 SSL 憑證給我們要怎麼做呢?

簽發 SSL 憑證要完成以下步驟:

  1. 產生一組私鑰(Private Key)
  2. 用私鑰產生一組憑證簽署請求(CSR – Certificate Signing Request)
  3. 把產生的 CSR 給簽發憑證的機構(如:GoDaddy)
  4. 簽發憑證機構會給你一個公鑰(Public Key)
簽發 SSL 憑證的流程

上面動作都完成後,下面是 SSL 憑證加密的原理:

  1. 把私鑰、公鑰安裝到網站伺服器上
  2. 使用者到你的網站瀏覽時,你會把公鑰給他
  3. 傳輸的時候,使用者傳給伺服器的資料,都用你給他的公鑰加密
  4. 伺服器收到資料後,再用私鑰解密
SSL 憑證加解密流程

看起來好像很複雜,不過簡單的來說,簽發 SSL 憑證的過程,就是請第三方單位幫我們背書,背書標的為你的網域名稱,例如:asper.tw。

但私鑰就像你家鑰匙,怎可能隨便給人家,所以鑰產生一個 CSR 的中介,把你的鑰匙特徵碼傳給第三方單位,第三方單位會簽發一個公鑰給你,公鑰的作用是我想跟你說悄悄話的時候,就用他來加密,因為這組公鑰是你的私鑰產生的,因此只有你的私鑰可以解開我說的悄悄話。

反過來說,如果我用私鑰加密的悄悄話,只有我的公鑰能解開,而私鑰全世界又只有我有,可藉此證明這是我發出的言論,別無分號。

當然有人會說,如果不經過第三方單位背書是不是就不能加密了?

答案是可以加密的,可以自己背書,只是你的瀏覽器會判定為不安全,他不認你自行背書的憑證,因為憑證都是相互勾稽,一環扣一環,如下圖所示:

憑證的勾稽

可以看到 asper.tw 的憑證簽發者為”Go Daddy Secure Certificate Authority – G2″,而上面還有一層”Go Daddy Root Certificate Authority – G2″,而每個憑證都有到期日,時間到了就要重新簽發一張,確保資訊安全。

就像萬一家鑰匙掉了,沒有定期換鎖,小偷可以隨時光顧而不自知。

SSL 憑證要花錢嗎?要怎麼買?

嚴格說,現在憑證可以不花錢買。

不過如果使用如:Bluehost、GoDaddy 的 Web hosting 服務,憑證費用、或管理費用通常都已經包含進去了。

現在有免費的憑證服務,最有名的莫過於 Let’s Encrypt 了,Let’s Encrypt 旨在推動免費的網路加密,因此提供了免費憑證的簽發服務,不過因為是免費的,在憑證的有效期上相對較短,雖然有自動更新的做法,不過還是得花一點力氣處理就是了,幸好這段工程有的 Web hosting 服務提通商,如:Bluehost 就已經都處理好,我們只要負責使用即可,不用太過擔心。

下面是 asperlab.club 的憑證,使用 Bluehost 的憑證服務,就是使用 Let’s Encrypt 所簽發的憑證,可以看出他的有效期比較短,約莫只有三個月。

Bluehost 的 Let's Encrypt 服務示意圖
Bluehost 的 Let’s Encrypt 服務

不過一般而言,個人網站使用免費的 Let’s Encrypt 憑證就很夠了,若為公司行號網站,或對資安有比較在乎的,則推薦付費購買 SSL 憑證服務,常見的簽發網站有 GoDaddyDigicertComodo、國內TWCA…等都可以選擇。

原則上一個網域買一個憑證,如:blog.asper.tw 就要買一張,不可與 www.asper.tw 混用。

費用方面,則可一次付一年至三年不等,有的可每月支付,當然一次付越多,折扣相對會好一點。

購買方式很簡單,就是產生好一組私鑰,再產生好一組 CSR 提供給憑證簽發機構,填妥資料、準備好錢,再取回公鑰安裝到主機上即可。

如果使用 Web hosting 服務,一般也都有加購服務,如下圖為 Bluehost 的加購頁面,也有不同種類任君挑選,滑鼠點一點就會自動幫你都安裝完畢,完全不用擔心技術問題。

Bluehost 購買 SSL 憑證示意圖
Bluehost 購買 SSL 憑證

我該買萬用字元(Wildcard) SSL 憑證嗎?

首先要說明,什麼叫做萬用字元 Wildcard SSL 憑證

常見 SSL 憑證有三種:

  • 單一子網域 SSL 憑證
  • 多網域 SSL 憑證(通常都是同主網域)
  • 萬用字元 SSL 憑證

SSL 憑證在購買的時候,單位都以一個網域為單位,如果要一次買三五個子網域,價格上也會有優惠,但管理上會稍微麻煩一點,若更多,有十幾個網域以上,就會建議使用萬用字元 SSL 憑證了。

單一子網域 SSL 憑證

主要以個人使用居多,一般常人使用到萬用 SSL 憑證的機率不高,畢竟經營好一個網站已十分不易,何況更多,當然有其他用途則不在此限。

下圖為單一 SSL 憑證,僅適用於 asper.tw 與 www.asper.tw,一般會除了購買的子網域名稱外,還會包含主網域名稱。

單一憑證示意圖
單一憑證
多網域 SSL 憑證

一次擁有多個網域,想一次購足的作法就是多網域 SSL 憑證,當然常見以同一主網域的子網域們為主,如下圖為 asperlab.club 多子網域的 SSL 憑證範例,可以發現主體別名中有許多子網域都在範圍內,如此一來也比較不會搞混:

多子網域憑證範例示意圖
多子網域憑證範例
萬用字元 SSL 憑證

看到上面這個例子,就能想像假設有十多個甚至數十個 SSL 憑證要管理,就得付出不少費用與管理成本,反而不見得划算。

萬用 SSL 憑證的標示如下圖的 Bluehost 為例,前面會加上一個”*”表示,只要是 bluehost.com 的子網域都一體適用:

Bluehost 萬用憑證示意圖
Bluehost 萬用憑證

像 Bluehost 這類的網站,使用的憑證多半為付費 SSL 憑證,在子網域眾多的情況下,使用萬用 SSL 憑證會是一個節省費用的作法。

SSL 憑證怎麼有的貴有的便宜

眼尖的人一定會發現,SSL 憑證居然從免費到一年上萬塊的等級都有,到底差別在哪邊呢?其實每個憑證上都有保險的理賠上限,理賠越高,價格相對也越高,除此之外,也有以驗證種類做區分。

SSL 憑證除了分成單一、多重、萬用買法外,也分成三個驗證種類:

  • 網域等級驗證 DV (Domain validated)
  • 組織等級驗證 OV (Organization validated)
  • 延伸等級驗證 EV (Extended validation)
網域等級驗證 DV (Domain validated)

適用於個人網站,為最初階的驗證,只要能夠證明你是這個網域的擁有者,就能取得憑證,還記得前面所說 DNS 的 TXT 紀錄嗎?可以在裡面填入指定的字串,並通過網域電子信箱認證,就可快速取得 SSL 憑證,當然也有其他網域驗證方式,證明你是這個網域的擁有者,對於消費者的保障,相對會比較少。

組織等級驗證 OV (Organization validated)

適用於公司行號,相對 DV 的驗證會比較繁瑣一點,主要是驗證真的有這個組織(公司)存在,除了信箱驗證以外,還會通過電話進行確認,驗證時間相對長,需要3-5個工作天的時間進行確認,但對於消費者而言,有一定程度的保障。

延伸等級驗證 EV (Extended validation)

適用於電子商務網站,除了OV 的驗證外,還會進行實際經營的審查,對於消費者保障最高,確保不是空殼公司,而是有實際在經營的公司,當然價格也最貴,驗證時間也最久,大約需要7個工作日,且不能用在萬用字元憑證。

以上三種等級,我們通常選用網域等級驗證即可,一般常見的 Web Hosting 提供商,如:Bluehost 都有提供一件安裝的服務,所以不用想太多,直接使用即可。

HTTPS 是什麼?

如果說資料是客人,SSL 憑證加密是一輛車子,那麼 HTTPS 可以想成是車道的存在。

HTTPS 是一種通信協定的名稱,而 HTTP 也是,那這兩者有什麼差異呢?

HTTP 沒加密,資料傳輸時在裸奔,只要被中途攔截下來,路人甲都可以看光光你在傳什麼。

HTTPS 有加密,資料傳輸時,使用 SSL 憑證加密方式,資料萬一中途被攔截,別人解不開你在傳什麼資料。

working pattern internet abstract
Photo by Markus Spiske on Pexels.com

真的是這樣嗎?

當然這是只是一個慣例,就像我們知道,人行道只能走路,不能在上面騎車,但硬要在上面騎車也不是不行,只是大家會覺得很怪,最終引來警察開單而已, HTTPS 按照慣例,大家都會使用 SSL 憑證來加密後傳輸資料,就像全世界說好的一樣,這條路就是給 SSL 憑證加密後的資料走。

而網頁伺服器也是針對這樣而設計的,所以常理,SSL 憑證加密的資料都會使用 HTTPS 這個協定來傳輸。

Leave a Comment

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *