今天我想展示如何在 OpenResty Edge 中透過 Let’s Encrypt 自動簽發免費 SSL 證書。

嵌入圖片

為應用新增萬用字元域名

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

這一次我們繼續使用 test-edge.com 域名的樣本應用。

螢幕截圖

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

螢幕截圖

進入這個應用。

螢幕截圖

這裡我們想要用子域名來做演示,所以需要先調整應用的設定。

螢幕截圖

讓我們為這個應用新增一個新的萬用字元域名。

螢幕截圖

螢幕截圖

儲存。

螢幕截圖

然後推送給我們的閘道器伺服器。因為 Let’s Encrypt 伺服器將會需要驗證我們的域名所有權。

螢幕截圖

釋出更改。

螢幕截圖

釋出!

螢幕截圖

新增 SSL 證書

轉到 SSL 頁面。

螢幕截圖

我們可以看到,目前還沒有定義 SSL 證書。

螢幕截圖

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

螢幕截圖

我們支援各種不同的方式來頒發新的 SSL 證書。

螢幕截圖

這裡就只演示 Let’s Encrypt 的方式。

螢幕截圖

將頂級域名 test-edge.com 新增到該證書中。

螢幕截圖

新增更多的子域名稱。

螢幕截圖

輸入我們的 api 子域。它可以是任何東西。

螢幕截圖

也可以新增更多子域名。

螢幕截圖

如果有很多域名,還可以使用批次輸入模式。

螢幕截圖

可以在這裡逐行輸入所需要的域名。

螢幕截圖

先退出批次輸入模式。

螢幕截圖

這裡的所有域名必須被解析到這個 OpenResty Edge 部署的閘道器伺服器上。

螢幕截圖

這個要求也在這裡提到了。

螢幕截圖

在終端上,我們可以使用 dig 命令來測試域名是否已經解析到我們的閘道器伺服器。

dig test-edge.com

可以看到有效的 DNS 答案。

截圖 1

也可以測試一下 api 子域。

dig api.test-edge.com

同樣也得到了有效的 DNS 答案。

截圖 3

Let’s Encrypt 伺服器需要透過這些域名訪問我們的閘道器伺服器。這是因為他們必須確保我們確實擁有這些域名。

嵌入圖片

對於萬用字元域名,你還必須使用 OpenResty Edge 作為域名的權威性 DNS 名稱伺服器。

嵌入圖片

同意 Lets' Encrypt 訂閱者協議。

螢幕截圖

儲存。

螢幕截圖

就可以看到新的 Let’s Encrypt 證書了。

螢幕截圖

證書來源是 Let’s Encrypt。

螢幕截圖

它有兩個域名,正如預期的那樣。

螢幕截圖

我們可以在這裡檢視實時狀態。

螢幕截圖

透過點選這個狀態圖示來檢視詳細的進度。

還可以在這裡觀察有關 Let’s Encrypt 證書籤發過程的詳細日誌。

螢幕截圖

現在可以看到證書已經被簽發。

螢幕截圖

讓我們先退出這個狀態頁面。

螢幕截圖

可以在這一欄中檢視新證書的到期時間。

螢幕截圖

該證書將在 3 個月後過期。

螢幕截圖

OpenResty Edge 會在將來證書即將過期時自動更新。

螢幕截圖

我們可以看到預定的下次更新時間將在 2 個月後。也就是說,在過期前一個月。

螢幕截圖

現有的 Let’s Encrypt 證書也是可以編輯的。

螢幕截圖

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

螢幕截圖

或者也可以刪除這個證書。

螢幕截圖

我們現在不想刪除它。

螢幕截圖

但可以在不刪除的情況下禁用它。

螢幕截圖

然後,它也可以被重新啟用。

螢幕截圖

我們需要釋出一個新版本來推送我們的新證書,就像往常一樣。

螢幕截圖

點選這個按鈕。

螢幕截圖

釋出!

螢幕截圖

現在已經完成了!

截圖

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

螢幕截圖

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

嵌入圖片

然後,OpenResty Edge 將在這些證書過期前再次自動更新來自 Let’s Encrypt 的證書。

嵌入圖片

如果由於某些原因,一些證書未能更新,使用者會收到類似這樣的全域性通知。

嵌入圖片

測試

讓我們開啟一個新的瀏覽器標籤,透過 https 訪問 test-edge.com 網站。

螢幕截圖

它成功了!

同時測試 api 子域。

螢幕截圖

它也能工作!

我們也可以用一個閘道器叢集伺服器,在終端上測試我們的新證書。

螢幕截圖

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

螢幕截圖

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

螢幕截圖

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

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

螢幕截圖 3

成功了!

我們也可以使用 -v 選項獲取更多細節資訊。

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

執行這個命令。

螢幕截圖 4

我們確實可以在這裡看到我們的伺服器證書。還可以看到該證書確實是由 Let’s Encrypt 頒發的。

截圖 4

這就是我今天想介紹的內容。

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

關於本文和關聯影片

本文和相關聯的影片都是完全由我們的 OpenResty Showman 產品從一個簡單的劇本檔案自動生成的。

關於作者

章亦春是開源 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. 公司的部落格網站 。也歡迎掃碼關注我們的微信公眾號:

我們的微信公眾號

翻譯

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