什麼是 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 加密憑證之前我們要選好發證機構。

假設我們今天要找一家叫做 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 服務

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

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

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

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

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

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 這類的網站,使用的憑證多半為付費 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 憑證加密方式,資料萬一中途被攔截,別人解不開你在傳什麼資料。

Photo by Markus Spiske on Pexels.com

真的是這樣嗎?

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

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


© 2023