名詞解釋

什麼是 OpenSSL?負責 HTTPS 加密的函式庫,以及如何保持它的安全

OpenSSL 是支撐 HTTPS(TLS/SSL)與加密的開源函式庫,多數伺服器經由 Web 伺服器或 OS 間接使用,一個瑕疵就會波及全球(Heartbleed)。說明如何掌握版本、避開 EOL、監控 CVE 並迅速修補。

發布於 2026-06-29 更新於 2026-10-06 閱讀時間 3 分鐘
本頁內容

只要你在提供 HTTPS,你的伺服器底下幾乎可以肯定正執行著 OpenSSL(或相容的實作)。你從不直接碰它,但一旦發現瑕疵,就會有大量伺服器受到影響。以下說明這個函式庫做什麼,以及如何防禦它。

它在哪裡被使用

OpenSSL 棘手之處在於,你明明從未選擇它,卻一直在使用它。你的應用程式把 TLS 委派給 Web 伺服器,Web 伺服器把加密委派給 OpenSSL,而那個 OpenSSL 又是由作業系統所附帶,層層堆疊。

你的應用程式
↓ 委派 TLS
Web 伺服器(Nginx / Apache)· 語言執行階段
↓ 委派加密
OpenSSL(由作業系統附帶)
OpenSSL 位於最底層。它上面的每一層都把加密委派給它,所以一個漏洞就會影響所有層級。

通常這很方便:加密被交給由專家撰寫的共用實作。但當那個共用函式庫出現漏洞時,使用它的每一個人都會同時受到影響。這正是「底層函式庫的瑕疵影響廣泛」的含意。

OpenSSL、SSL/TLS 與憑證的區別

這幾個名稱聽起來很像,所以常被混在一起,但它們各自扮演不同的角色。

用語是什麼例子
SSL / TLS加密連線的規則(協定)。SSL 是舊版本;現在使用的是 TLS 1.2 / 1.3HTTPS 就是用 TLS 包起來的 HTTP
OpenSSL實際執行 TLS 與加密運算的程式(函式庫),另附命令列工具Nginx 與 Apache 會在內部呼叫它
憑證由憑證頒發機構擔保你擁有某個網域的資料,其中含有公鑰Let's Encrypt 免費簽發

也就是說,OpenSSL 是實作 TLS 規則的工具之一,而憑證是這個工具在連線時使用的資料。實作 TLS 的函式庫還有其他(LibreSSL、BoringSSL、Windows Schannel 等),使用哪一個取決於作業系統與軟體。

為何影響如此廣泛:一個 bug 讓大量伺服器的金鑰暴露於風險

2014 年的 Heartbleed(CVE-2014-0160)源自 OpenSSL 一個小小的實作失誤(沒有驗證就信任了對方申報的長度),它讓外部人士能一點一點地讀取伺服器的記憶體——其中可能包含私鑰與工作階段資料。由於 OpenSSL 被廣泛使用,全球大量伺服器同時成為了攻擊目標(完整來龍去脈 → Heartbleed)。

教訓很清楚:相依套件在技術棧中越底層,影響就越廣。 所以需要重視的不只是你的應用程式直接引用的相依套件——像 OpenSSL 這樣在底下執行的底層函式庫,在監控與修補上同樣值得認真對待。

如何防禦:避開 EOL、監控底層函式庫

1

掌握你的技術棧使用的是哪個 OpenSSL

你無法防禦你看不見的東西。請盤點你的伺服器、容器基礎映像與語言執行階段,各自依賴的是哪個 OpenSSL(版本線與版本)。

2

不要執行已終止支援(EOL)的版本

一旦某個版本線過了支援期,它新發現的漏洞就會沒有修正。繼續執行 EOL 版本,漏洞即使被發現也會一直沒有修正。請規劃升級到受支援的版本線。

3

把底層函式庫也納入 CVE 監控

應用程式的相依套件用 osv-scanner 之類的工具就很容易追蹤,但作業系統所附帶的 OpenSSL 卻很容易被忽略。請確保底層函式庫的新 CVE 也能浮上檯面(→ CVE 應對劇本)。

4

情況嚴重時及時修補

Heartbleed 等級的 bug,往往在揭露的那一刻就遭到攻擊。請讓你的更新路徑保持輕量,好讓底層修補在嚴重程度有需要時能當天上線——而不是「等下一次排程更新」。

受支援的版本(截至 2026 年 10 月)

OpenSSL 專案會在奇數年的 4 月發布長期支援(LTS)版本,並提供至少五年的支援。3.5 之後發布的非 LTS 版本,自發布起支援 13 個月。

版本線類型支援結束
4.0一般2027 年 5 月 14 日
3.6一般2026 年 11 月 1 日
3.5LTS2030 年 4 月 8 日
3.4一般2026 年 10 月 22 日
3.0 / 1.1.1 / 1.0.2—已結束(僅 OpenSSL Corporation 的付費延長支援)

作業系統附帶的 OpenSSL 則是另一回事。許多 Linux 發行版(包括 Red Hat 系)會在不提高版本號碼的情況下納入修正(backport)。在作業系統的支援期間內,顯示為 3.0 的套件仍可能持續從作業系統廠商收到修正。不要只看號碼就判斷「舊的就有漏洞」或「新的就安全」,請確認作業系統廠商的安全公告。

如何檢查自己的環境

1

確認作業系統的 OpenSSL

執行 openssl version -a 查看版本。套件版本在 Debian/Ubuntu 上用 dpkg -l 'libssl*' openssl,在 Red Hat 系上用 rpm -q openssl。把該套件版本與作業系統廠商的安全公告比對,確認是否已包含修正。
2

確認應用程式實際使用的是什麼

有些軟體會內附自己的 OpenSSL,與作業系統的分開。Nginx 用 nginx -V、Python 用 python3 -c "import ssl; print(ssl.OPENSSL_VERSION)"、Node.js 用 node -p process.versions.openssl,可以顯示內建的版本。
3

也要確認容器映像

容器內的 OpenSSL,不會因為更新主機作業系統而改變。請定期重建基礎映像,並對每個映像做漏洞掃描。
4

訂閱 OpenSSL 的安全公告

對於含有重大修正的版本,openssl-announce 郵件清單會在大約一週前公布日期與嚴重程度(不含細節)。有了這個預告,你就能事先空出時間進行更新。

如何解讀漏洞的嚴重程度

OpenSSL 專案以四個等級評定自己的漏洞,並依此改變修正的發布方式。

嚴重程度大致的意思修正的發布方式
Critical影響常見的設定且容易被利用(伺服器記憶體大量外洩、私鑰被竊等)立即為所有受支援的版本發布修正
High風險低於 Critical,但仍然嚴重(較少見的設定、僅限用戶端等)私下準備,再為所有受支援的版本發布
Moderate僅限阻斷服務、不常見的協定等併入下一次排定的發布
Low僅限命令列工具、不太可能成立的條件組合等併入下一次排定的發布

像 Heartbleed 這種可以從外部讀取伺服器記憶體的瑕疵,符合 Critical 的定義。遇到 Critical 與 High,看到預告就請開始準備更新。

本站觀點:用機器監控底層函式庫

你無法靠人腦記憶去追蹤底層函式庫的瑕疵。本站把自己的相依套件與根基都納入了機器化的 CVE 監控。你透過 Let's Encrypt 所提供的憑證,底下仍然是透過 OpenSSL 家族的實作來執行加密,所以列出你平常不會想到的底層函式庫並加以監控,正是防止影響廣泛的事件最直接的方法。

接下來閱讀

出處(一手資料)

  • OpenSSL Library「Release Strategy」— openssl-library.org(LTS 方針、各版本線的支援結束日)
  • OpenSSL Library「Security Policy」— openssl-library.org(四個嚴重程度、事前預告)
  • Red Hat「Backporting Security Fixes」— access.redhat.com(為什麼光看版本號碼無法判斷是否有漏洞)
  • NIST NVD「CVE-2014-0160」— nvd.nist.gov(Heartbleed)

FAQ

Q我從沒安裝過 OpenSSL——還是有可能在使用它嗎?
A

幾乎可以肯定是的。OpenSSL 是一個底層函式庫,被 Web 伺服器(Nginx/Apache)、作業系統與語言執行階段在內部使用。即便你的程式碼從未引用它,只要你在提供 HTTPS,那麼底下極有可能正在執行 OpenSSL(或相容的實作)。認為『我沒有用它』,正是底層漏洞被漏掉的典型原因。

Q它和 LibreSSL 或 BoringSSL 有何不同?
A

兩者都是 OpenSSL 的分支(fork)。LibreSSL 是 OpenBSD 專案在 Heartbleed 之後為了整理程式碼而建立的;BoringSSL 則是 Google 為自家用途打造的版本。多數使用者並不需要在它們之間做選擇——更重要的是,讓你的平台所附帶的那個實作,維持在受支援且最新的版本。

Q我該如何檢查版本或更新它?
A

在許多系統上 `openssl version` 會顯示版本,而你可以透過作業系統的套件管理員、或重建容器的基礎映像來更新它。關鍵在於別繼續執行已終止支援(EOL)的版本:一旦某個版本線進入 EOL,它新發現的漏洞就不會再有修正。請用追蹤應用程式相依套件的同樣方式,去追蹤你的底層相依套件。

QOpenSSL 和 SSL 有什麼不同?
A

SSL(現在是其後繼的 TLS)是加密連線的規則(協定)的名稱。OpenSSL 則是實際執行那些規則的程式(函式庫)的名稱。當你透過 HTTPS 連線時,Web 伺服器會使用 OpenSSL 之類的函式庫來處理 TLS。

QOpenSSL 3.0 還能用嗎?
A

OpenSSL 專案對 3.0 的支援已經結束(付費的延長支援除外)。不過,Linux 發行版附帶的 3.0 套件,在該作業系統的支援期間內可能會持續收到移植過來的修正(backport)。自己建置的 3.0,或內建在應用程式中的 3.0 則不會收到修正,請轉移到 3.5(LTS,支援至 2030 年 4 月)等受支援的版本線。

QOpenSSL 剛公布了一個漏洞,我應該先做什麼?
A

先確認嚴重程度。如果是 Critical 或 High,請確認你的伺服器、容器與應用程式是否使用受影響的 OpenSSL 版本線,並在作業系統廠商或映像發布者推出修正後盡快更新。更新後,請重新啟動會載入 OpenSSL 的處理程序(例如 Web 伺服器);否則舊的函式庫會一直留在記憶體中。