在 OpenResty Edge 中為 HTTPS 網站上傳 SSL 證書
在 OpenResty Edge 中上傳 SSL 證書,只需進入 Admin Web 控制檯裡應用的 SSL 頁面,貼上或上傳 PEM 格式的私鑰和證書,儲存後釋出一次配置,新證書就會到達每一臺閘道器伺服器,不需要伺服器過載、重啟或二進位制升級。
下面我們用 test-edge.com 這個示例應用完整走一遍手動上傳,再用 curl --resolve 驗證閘道器實際提供的是哪一張證書。
在 Edge 控制檯上傳 SSL 證書和私鑰
像往常一樣,讓我們進入 OpenResty Edge 的 Admin Web 控制檯。這是我們控制檯的樣本部署。每個使用者都有自己的本地部署。
這一次,我們繼續使用 test-edge.com 域名的應用作為例子。
我們可以看到它已經為 SSL 在 443 埠上進行監聽了。
讓我們進入這個應用。
進入 SSL 頁面。
目前還沒有新增 SSL 證書。
讓我們新增一個新的證書。
我們支援各種新增新 SSL 證書的方式,包括 Let’s Encrypt,以及透過 ACME 協議實現 SSL 證書自動化管理。
這裡我們只演示手動上傳的方式。
我們可以在這裡複製和貼上 PEM 格式的 SSL 私鑰。
也直接瀏覽本地檔案系統並選擇一個本地檔案進行上傳。
並同時貼上對應的 PEM 格式的 SSL 證書。
同樣,也可以直接瀏覽並上傳一個本地證書檔案。
有時,CA 可能會提供一個單獨的檔案,其中包含中間信任的 CA 證書鏈。
但更多的時候,證書鏈已經包含在這裡的伺服器證書檔案中。
在這個例子中,我們把它留空,因為我們沒有這個單獨的檔案。
儲存我們的證書和金鑰對。
可以看到新建立的證書和配對金鑰的記錄了。
證書來源是手動上傳。
證書是對應這個單一的域名的,test-edge.com。
它將在大約一年後到期。
我們可以透過將滑鼠懸停在上面看到確切的過期時間。
現有的證書是可以編輯的。
我們在這裡不做任何修改。
這個證書也是可以刪除的。
現在我們還不想刪除它。
但可以禁用它。
無需 reload 或重啟伺服器即可推送新證書
證書已經儲存,但還沒有生效。和 OpenResty Edge 裡其他所有配置變更一樣,它要透過一次釋出才會生效。
像往常一樣,我們需要釋出新的配置來推送我們的新證書。
點選這個按鈕。
釋出!
完成了!
現在,新的證書已經被推送到所有的閘道器叢集和伺服器上。
我們的配置變化不需要伺服器過載、重啟或二進位制升級。所以它是非常有效和可擴充套件的。
用 curl –resolve 測試上傳的證書
然後,我們可以用一個閘道器叢集伺服器來測試我們的新證書。
在舊金山附近選擇一個閘道器伺服器。
複製它的公共 IP 地址,以 133 結尾。
在終端上,我們可以向這個閘道器伺服器傳送一個 HTTPS 請求。
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/
--resolve 選項只為這一次請求把 test-edge.com 這個域名釘到指定的閘道器 IP 上,這樣我們可以自己決定由哪一臺閘道器伺服器來應答,而請求本身依然帶著真實的域名。
成功了!
還可以使用 -v 選項檢查更多細節,比如證書資訊。
curl -I --resolve 'test-edge.com:443:138.68.231.133' https://test-edge.com/ -v 2>&1 | less -n
確實可以看到我們的伺服器證書。
對其餘的閘道器伺服器重複同一條命令,就能確認每一臺都在提供新證書。
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 Encrypt 或 ACME 協議替你簽發和續期證書。
可以只停用證書而不刪除它嗎?
可以。每一條證書記錄都可以編輯、刪除,也可以只是禁用,這樣在保留證書和金鑰對的同時讓它不再生效。
關於 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、LuaJIT、GDB、SystemTap、LLVM、Perl 等,並編寫過 60 多個開源軟體庫。
關注我們
如果您喜歡本文,歡迎關注我們 OpenResty Inc. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:
翻譯
我們提供了英文版原文和中譯版(本文) 。我們也歡迎讀者提供其他語言的翻譯版本,只要是全文翻譯不帶省略,我們都將會考慮採用,非常感謝!


























































