在 OpenResty Edge 中上傳 SSL 證書,只需進入 Admin Web 控制檯裡應用的 SSL 頁面,貼上或上傳 PEM 格式的私鑰和證書,儲存後釋出一次配置,新證書就會到達每一臺閘道器伺服器,不需要伺服器過載、重啟或二進位制升級。

下面我們用 test-edge.com 這個示例應用完整走一遍手動上傳,再用 curl --resolve 驗證閘道器實際提供的是哪一張證書。

在 Edge 控制檯上傳 SSL 證書和私鑰

OpenResty Edge 管理控制檯中的 SSL 證書上傳頁面

像往常一樣,讓我們進入 OpenResty Edge 的 Admin Web 控制檯。這是我們控制檯的樣本部署。每個使用者都有自己的本地部署。

這一次,我們繼續使用 test-edge.com 域名的應用作為例子。

OpenResty Edge 應用列表中按 test-edge.com 域名篩選

我們可以看到它已經為 SSL 在 443 埠上進行監聽了。

test-edge.com 應用同時監聽 HTTP 80 埠和 HTTPS 443 埠

讓我們進入這個應用。

在 OpenResty Edge 控制檯中進入 test-edge.com 應用

進入 SSL 頁面。

OpenResty Edge 應用側邊欄中的 SSL 頁面入口

目前還沒有新增 SSL 證書。

test-edge.com 應用下還沒有任何 SSL 證書

讓我們新增一個新的證書。

SSL 頁面上的新增證書按鈕

我們支援各種新增新 SSL 證書的方式,包括 Let’s Encrypt,以及透過 ACME 協議實現 SSL 證書自動化管理

OpenResty Edge 中新增 SSL 證書的多種方式,包括 Let’s Encrypt 和手動上傳

這裡我們只演示手動上傳的方式。

OpenResty Edge 中手動上傳 SSL 證書的表單

我們可以在這裡複製和貼上 PEM 格式的 SSL 私鑰。

把 PEM 格式的 SSL 私鑰貼上到上傳表單中

也直接瀏覽本地檔案系統並選擇一個本地檔案進行上傳。

從本地檔案系統上傳 SSL 私鑰檔案

並同時貼上對應的 PEM 格式的 SSL 證書。

把 PEM 格式的 SSL 證書貼上到上傳表單中

同樣,也可以直接瀏覽並上傳一個本地證書檔案。

從本地檔案系統上傳 SSL 證書檔案

有時,CA 可能會提供一個單獨的檔案,其中包含中間信任的 CA 證書鏈。

填寫中間信任 CA 證書鏈的輸入框

但更多的時候,證書鏈已經包含在這裡的伺服器證書檔案中。

伺服器證書輸入框,證書鏈通常已經包含在其中

在這個例子中,我們把它留空,因為我們沒有這個單獨的檔案。

中間 CA 證書鏈輸入框留空

儲存我們的證書和金鑰對。

儲存上傳的 SSL 證書和私鑰對

可以看到新建立的證書和配對金鑰的記錄了。

SSL 頁面上列出新建立的證書和金鑰對記錄

證書來源是手動上傳。

證書來源顯示為手動上傳

證書是對應這個單一的域名的,test-edge.com。

上傳的證書只對應 test-edge.com 這一個域名

它將在大約一年後到期。

SSL 證書顯示將在大約一年後到期

我們可以透過將滑鼠懸停在上面看到確切的過期時間。

滑鼠懸停後顯示 SSL 證書的確切過期時間

現有的證書是可以編輯的。

在 OpenResty Edge 中編輯已有的 SSL 證書

我們在這裡不做任何修改。

未做任何修改就關閉 SSL 證書編輯表單

這個證書也是可以刪除的。

OpenResty Edge 中刪除 SSL 證書的操作

現在我們還不想刪除它。

取消刪除該 SSL 證書

但可以禁用它。

不刪除證書,只是將其禁用

無需 reload 或重啟伺服器即可推送新證書

證書已經儲存,但還沒有生效。和 OpenResty Edge 裡其他所有配置變更一樣,它要透過一次釋出才會生效。

像往常一樣,我們需要釋出新的配置來推送我們的新證書。

需要釋出一次配置才能把 SSL 證書推送到閘道器

點選這個按鈕。

OpenResty Edge 控制檯中的釋出按鈕

釋出!

確認釋出剛上傳的 SSL 證書

完成了!

新 SSL 證書釋出完成

現在,新的證書已經被推送到所有的閘道器叢集和伺服器上。

新 SSL 證書已推送到所有閘道器叢集和伺服器

我們的配置變化不需要伺服器過載、重啟或二進位制升級。所以它是非常有效和可擴充套件的。

OpenResty Edge 無需 reload 或重啟即可將配置變更同步到閘道器的示意圖

用 curl –resolve 測試上傳的證書

然後,我們可以用一個閘道器叢集伺服器來測試我們的新證書。

用於測試新證書的閘道器叢集伺服器列表

在舊金山附近選擇一個閘道器伺服器。

選中舊金山附近的一臺閘道器伺服器用於測試

複製它的公共 IP 地址,以 133 結尾。

複製閘道器伺服器以 133 結尾的公網 IP 地址

在終端上,我們可以向這個閘道器伺服器傳送一個 HTTPS 請求。

curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/

--resolve 選項只為這一次請求把 test-edge.com 這個域名釘到指定的閘道器 IP 上,這樣我們可以自己決定由哪一臺閘道器伺服器來應答,而請求本身依然帶著真實的域名。

curl –resolve 向閘道器伺服器傳送 HTTPS 請求的輸出

成功了!

還可以使用 -v 選項檢查更多細節,比如證書資訊。

curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ -v 2>&1 | less -n

確實可以看到我們的伺服器證書。

curl -v 輸出中顯示 test-edge.com 正在提供剛上傳的伺服器證書

對其餘的閘道器伺服器重複同一條命令,就能確認每一臺都在提供新證書。

SSL 證書的上傳也可以透過 OpenResty Edge 的 Python SDK 自動進行。我們將在另一個影片中演示。

用於自動上傳 SSL 證書的 OpenResty Edge Python SDK

證書生效之後,你可能還想把所有 HTTP 請求重定向到 HTTPS,讓訪客始終使用它。

常見問題

在 OpenResty Edge 中更新 SSL 證書後需要 reload 或重啟 nginx 嗎?

不需要。在 OpenResty Edge 中,你在 Admin 控制檯上傳證書併發布一次配置,變更就會被推送到所有的閘道器叢集和伺服器。包括證書在內的配置變更,都不需要伺服器過載、重啟或二進位制升級。

如何只在某一臺指定的閘道器伺服器上測試新的 SSL 證書?

使用帶 --resolve 選項的 curl,例如 curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/。它只為這一次請求把域名釘到該閘道器的公網 IP 上,這樣你可以自己決定由哪一臺閘道器來應答,而請求依然帶著真實的域名。加上 -v 還能列印出證書的詳細資訊。

中間 CA 證書鏈需要單獨上傳嗎?

是否需要單獨上傳,取決於伺服器證書檔案中是否已包含完整的中間證書鏈。如果已經包含,可以把證書鏈一欄留空;如果只包含伺服器證書,則必須在專門的輸入框中補充中間證書鏈,否則部分客戶端可能無法建立 HTTPS 連線。

不透過 Web 控制檯可以上傳 SSL 證書嗎?

可以。證書上傳能夠透過 OpenResty Edge 的 Python SDK 自動完成。如果你根本不想接觸證書檔案,Edge 也可以透過 Let’s EncryptACME 協議替你簽發和續期證書。

可以只停用證書而不刪除它嗎?

可以。每一條證書記錄都可以編輯、刪除,也可以只是禁用,這樣在保留證書和金鑰對的同時讓它不再生效。

關於 OpenResty Edge

OpenResty Edge 是一款專為微服務和分散式流量架構設計的全能型閘道器軟體,由我們自主研發。它集流量管理、私有 CDN 構建、API 閘道器、安全防護等功能於一體,幫助您輕鬆構建、管理和保護現代應用程式。OpenResty Edge 擁有業界領先的效能和可擴充套件性,能夠滿足高併發、高負載場景下的苛刻需求。它支援排程 K8s 等容器應用流量,並可管理海量域名,輕鬆滿足大型網站和複雜應用的需求。

如果你喜歡這個教程,請訂閱這個部落格網站和我們的 YouTube 頻道B 站頻道。謝謝!

關於作者

章亦春是開源 OpenResty® 專案創始人兼 OpenResty Inc. 公司 CEO 和創始人。

章亦春(Github ID: agentzh),生於中國江蘇,現定居美國灣區。他是中國早期開源技術和文化的倡導者和領軍人物,曾供職於多家國際知名的高科技企業,如 Cloudflare、雅虎、阿里巴巴, 是 “邊緣計算“、”動態追蹤 “和 “機器程式設計 “的先驅,擁有超過 22 年的程式設計及 16 年的開源經驗。作為擁有超過 4000 萬全球域名使用者的開源專案的領導者。他基於其 OpenResty® 開源專案打造的高科技企業 OpenResty Inc. 位於美國矽谷中心。其主打的兩個產品 OpenResty XRay(利用動態追蹤技術的非侵入式的故障剖析和排除工具)和 OpenResty Edge(最適合微服務和分散式流量的全能型閘道器軟體),廣受全球眾多上市及大型企業青睞。在 OpenResty 以外,章亦春為多個開源專案貢獻了累計超過百萬行程式碼,其中包括,Linux 核心、Nginx、LuaJITGDBSystemTapLLVM、Perl 等,並編寫過 60 多個開源軟體庫。

關注我們

如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

我們提供了英文版原文和中譯版(本文) 。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!