SaaS 服務如何為擁有“個性化”域的人提供 SSL?
因此,我正在與一位朋友討論 SaaS 網站和 SSL 證書,我們都無法解釋電子商務或任何允許客戶擁有自己的域的服務如何具有啟用 SSL 的服務。
我已經搜尋過 UCC 和 Wildcard Certificates ,但似乎都不符合需求,因為在 UC 證書的情況下,您需要一個已經創建的域列表(在 SaaS 模型中不是這種情況)並且在在萬用字元證書的情況下,您必須將每個客戶端都設為子域,並且許多服務都提供了使用您自己的域的選項。
那麼 SaaS 服務如何為擁有“個性化”域的人提供 SSL 呢?
上面的答案可能有點過時了。想要為多個客戶域提供 SSL 的現代 SaaS 應用程序將使用 SNI。SNI 是“伺服器名稱指示”(RFC 6066;已過時的 RFC 4366、RFC 3546)是傳輸層安全性的擴展,它允許客戶端告訴伺服器它嘗試訪問的主機的名稱。
這比處理此問題的舊方法(如 UCC 或更糟糕的是,每個證書 1 個 IP)更有效。這也是為什麼傳統上,確保自定義域的安全將是轉嫁給客戶的成本。平台為自定義域收取 $X/mo 的費用作為一項附加功能曾經而且是相當普遍的。這是因為執行自定義域所涉及的成本。
如果您現在想要開發類似的東西,您將從 SNI 開始並以這種方式提供證書。根據您的堆棧,這可能非常容易(NodeJS)或非常難(傳統的基於 apache/nginx 的應用程序代理)。通常困難在於接收傳入的 SNI 請求並將其與您的數據庫或其他應用程序邏輯相匹配,以確保您為該請求提供正確的證書。
如前所述,如果您使用的是 Node.js,那麼您可能會很幸運。如果你想提供 Let’s Encrypt 提供的證書,並且你想根據傳入請求中的數據動態提供證書,那麼有一些很棒的庫可以幫助你解決這個問題。例如https://git.coolaj86.com/coolaj86/greenlock.js是一個可以幫助您解決其中一些問題的庫。
最後,如果您正在尋找第三方解決方案,這裡有https://clearalias.com,如果您不是特別熱衷於管理,它基本上可以讓您繞過提供 SNI SSL 證書的困難,將其作為服務提供並維護您自己的 SNI 層。