外銷英文關鍵字研究的桌面情境示意圖

SSL憑證是什麼?公鑰私鑰、握手過程與憑證鏈的加密原理完整解析

Posted by:

|

On:

|

每次瀏覽器網址列出現那個小鎖頭圖示,很多人直覺想到的問題都是「SSL憑證是什麼」,然後找到的答案大多在講免費憑證跟付費憑證差在哪、憑證分成哪些驗證等級比較好、或是網站從HTTP換成HTTPS對排名有沒有幫助。這些當然都是實際會遇到的問題,但它們其實是「怎麼挑、怎麼換」的商業面問題,跟SSL憑證真正在做的事情——也就是底層的加密技術——是兩件事。這篇文章刻意不談免費付費、不談驗證等級、也不談HTTP轉HTTPS的操作細節,而是把鏡頭拉近,帶你搞懂一張SSL憑證背後,公鑰私鑰怎麼合作、瀏覽器跟伺服器握手時到底在交換什麼、還有瀏覽器憑什麼相信一張陌生的憑證。搞懂這層原理之後,再回頭看免費付費、驗證等級這些選擇題,會清楚很多,因為你知道每一個選項在保護的到底是什麼。

加密到底在防什麼:沒有SSL憑證時資料是怎麼被看光的

在理解SSL憑證的加密原理之前,先想像一個沒有加密的情境。當你在一個只有HTTP、沒有SSL憑證的網站上輸入帳號密碼並按下送出,這串資料會經過你的裝置、你所在的Wi-Fi路由器、電信商的基地台、還有一連串你完全不認識的網路設備,才會抵達目的地的伺服器。如果這段過程沒有加密,資料就是用「明文」在這些節點之間傳遞,任何一個能夠攔截封包的人,都能直接讀到你輸入的內容,這種手法一般稱為中間人攻擊。特別是在公共無線網路環境(例如咖啡廳、機場、車站),未加密的連線幾乎等於把資料攤開來給旁人看。SSL憑證要解決的第一個問題,就是把這段明文對話變成即使被攔截、對方也看不懂的加密內容,這也是為什麼「加密」是理解SSL憑證的第一把鑰匙。

非對稱加密是核心:公鑰與私鑰各自扮演什麼角色

SSL憑證能做到加密,背後靠的是一套叫做非對稱加密的數學機制。所謂非對稱,指的是加密跟解密用的不是同一把鑰匙,而是一組互相配對、但長得完全不一樣的兩把鑰匙:公鑰與私鑰。公鑰可以公開給任何人,甚至直接放在憑證裡讓全世界下載都沒關係;私鑰則必須牢牢鎖在伺服器上,絕對不能外流。這組鑰匙有一個很關鍵的數學特性:用公鑰加密過的內容,只有對應的私鑰才能解開;反過來,用私鑰簽署過的內容,任何人都可以用對應的公鑰驗證這個簽署確實出自私鑰的持有者。可以把它想像成一個特殊的信箱,任何人都能把信投進信箱的投遞口(相當於公鑰加密),但只有拿著鑰匙的人才能打開信箱取信(相當於私鑰解密)。反過來,如果伺服器用私鑰在文件上蓋一個只有它做得出來的印章,任何人拿著公開的印章範本(公鑰)都能確認這個印章是真的,這就是數位簽章的概念,也是憑證機制信任鏈的基礎。

SSL握手:瀏覽器與伺服器打招呼的那幾毫秒發生了什麼事

每次瀏覽器連上一個HTTPS網站,在畫面真正開始載入之前,背後其實已經跑完一段稱為握手的對話流程,整個過程通常只需要幾十到幾百毫秒。簡化來看大概是這樣:瀏覽器先傳一句「我要建立安全連線,這是我支援的加密方式清單」;伺服器回應「好,我們用這一種加密方式,這是我的SSL憑證,裡面附上公鑰」;瀏覽器收到憑證後,會先去驗證這張憑證是不是可信任的(下一節會詳細說明怎麼驗證),確認沒問題之後,瀏覽器會產生一把只用這一次連線的臨時金鑰,用剛剛拿到的公鑰把這把臨時金鑰加密後送給伺服器;伺服器收到後,用只有自己擁有的私鑰把它解密出來。走完這一輪,瀏覽器與伺服器手上就各自擁有同一把只有雙方知道的臨時金鑰,接下來的資料傳輸就不再使用運算成本較高的公鑰私鑰機制,而是改用這把共享金鑰進行加密,這就是下一節要談的對稱加密。

對稱加密才是傳輸主力:為什麼握手之後要換一把鑰匙

這裡常常有一個誤會,以為SSL憑證全程都是用公鑰私鑰在加密所有網頁內容,其實不是。非對稱加密運算過程比較複雜,如果拿來加密整個網頁瀏覽過程中大量往返的資料,速度會慢得無法接受。所以整套機制的設計是讓非對稱加密只負責握手階段,用來安全地交換出一把共享金鑰,握手一結束,真正大量的網頁資料傳輸,改用速度快很多的對稱加密,也就是雙方用同一把剛剛交換好的金鑰同時加密與解密。這就像是先用一套複雜但安全的方式,把當天要用的鑰匙交給對方,之後兩人就一直用同一把鑰匙開關同一道門,不用每次都重新走一遍複雜的驗證流程。這種「非對稱加密交換金鑰、對稱加密處理實際資料」的混合式設計,是目前SSL協定能同時兼顧安全性與傳輸效率的關鍵。

憑證鏈與根憑證:瀏覽器怎麼知道該不該信任這張憑證

握手過程裡有一個步驟被跳過了沒細講:瀏覽器收到伺服器的SSL憑證之後,怎麼確認這張憑證是真的、不是偽造的?答案是一套稱為憑證鏈的信任機制。一張網站的SSL憑證,通常不是憑空發出的,而是由某個憑證授權單位簽署核發,這個憑證授權單位自己的身分,又是由更上層的中繼憑證或根憑證來擔保,一路往上追,最後會追到少數幾個根憑證,這些根憑證的公鑰早就內建在作業系統或瀏覽器裡,被視為預設信任的起點。瀏覽器驗證的邏輯,其實就是沿著這條鏈往上一路檢查數位簽章:網站憑證是不是真的由它宣稱的憑證授權單位簽發、中繼憑證是不是真的由根憑證擔保、根憑證本身在不在瀏覽器內建的信任清單裡。只要這條鏈上任何一環對不上,瀏覽器就會判定這張憑證不可信任,跳出警告畫面。這也是為什麼自己隨便產生一張憑證,在瀏覽器上一定會被擋下來,因為它沒有辦法接上這條信任鏈。

打開一張SSL憑證,裡面到底寫了什麼資訊

如果實際點開瀏覽器的憑證詳細資訊,會看到一張SSL憑證其實是一份結構化的資料,主要包含幾類欄位:

  • 主體資訊:這張憑證是核發給哪一個網域名稱,也就是憑證真正保護的對象。
  • 公鑰:也就是前面提到、可以公開讓大家用來加密資料的那把鑰匙。
  • 簽發者資訊:核發這張憑證的憑證授權單位是誰。
  • 有效期限:憑證從什麼時候開始生效、到什麼時候過期。
  • 數位簽章:由簽發者用自己的私鑰對整張憑證內容計算出的簽章,讓任何人都能用簽發者的公鑰驗證這張憑證的內容沒有被竄改過。
  • 序號與延伸資訊:用來識別這張憑證、以及一些額外的技術參數。

理解這些欄位在做什麼,會幫助你看懂瀏覽器憑證詳情頁面到底在告訴你什麼,也能更清楚為什麼憑證過期、網域不符會被瀏覽器視為兩種不同性質的錯誤——前者是有效期限欄位過了,後者是主體資訊裡的網域跟你實際造訪的網址對不上。

私鑰外流會發生什麼事:為什麼保護私鑰比什麼都重要

整套加密機制的安全性,幾乎全部建立在一個前提上:私鑰只有伺服器自己知道,沒有任何其他人拿得到。一旦私鑰外流,等於前面提到的整個信任鏈跟加密機制都會被繞過,攻擊者拿著外流的私鑰,可以偽裝成合法伺服器解開原本應該只有伺服器才能解開的加密資料,甚至可以冒充這個網域去跟其他人的瀏覽器建立看起來完全正常、實際上被竊聽的連線。這就是為什麼私鑰的保管在技術上被視為僅次於加密演算法本身的重要環節,一般會建議私鑰檔案的存取權限要嚴格限制、不能透過不安全的管道傳輸、伺服器一旦懷疑私鑰外洩就要盡快撤銷舊憑證並重新申請新的金鑰對。這也解釋了為什麼憑證管理不只是裝上去就好,背後牽涉到金鑰保護的整套流程。

常見問題

SSL跟TLS是同一個東西嗎?
嚴格來說TLS是SSL的後續版本,技術上已經全面取代了舊版SSL協定,但因為「SSL憑證」這個說法已經沿用多年,業界跟一般使用者習慣上還是統稱為SSL或SSL憑證,實際運作的協定多半是TLS。

公鑰可以公開給所有人,會不會有風險?
不會,這正是非對稱加密設計的巧妙之處。公鑰本身無法反推出私鑰,就算全世界都知道你的公鑰,只要私鑰沒有外流,資料的機密性與簽章的可信度都不受影響。

為什麼握手過程不是全程都用非對稱加密就好?
非對稱加密的運算成本遠高於對稱加密,如果整個網站瀏覽過程都靠公鑰私鑰處理,伺服器效能負擔會非常大,速度也會明顯變慢,所以才設計成握手階段用非對稱加密安全交換金鑰,之後改用效率高很多的對稱加密處理實際資料傳輸。

憑證鏈斷掉會發生什麼事?
如果伺服器沒有正確設定中繼憑證,導致瀏覽器找不到完整的信任路徑,就算網站真的裝了合法憑證,部分瀏覽器或裝置仍然可能顯示不安全的警告,這也是實務上常見的設定失誤之一。

如果你看完這些原理,開始好奇自己網站目前用的憑證有沒有正確設定、憑證鏈是不是完整、私鑰保存方式是否足夠安全,這些偏技術面的檢查其實不需要自己從頭摸索。創昇SEO提供免費的網站健檢,也提供全台免費到府解說,有需要的話可以直接請我們的團隊到現場,把你網站目前的SSL設定狀況、還有其他跟SEO與網站體質相關的項目,一次講清楚。

Posted by

in