Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

TLS/SSL 憑證

前言

通常會希望使用 TLS 連線 (也稱為 SSL 連線) 以避免「中間人」攻擊。Godot 有一個連線封裝器 StreamPeerTLS,它可以接受一個常規連線並為其增加安全層。HTTPClientHTTPRequest 類別也支援使用同一個封裝器的 HTTPS。

Godot 會優先使用作業系統提供的 TLS 憑證包,若無則會使用內建的 Mozilla TLS 憑證(<https://github.com/godotengine/godot/blob/master/thirdparty/certs/ca-certificates.crt>)。

你也可以在專案設定裡強制指定自己的憑證包:

設定 TLS 憑證包覆蓋專案選項

設定 TLS 憑證包覆蓋專案選項

設定此選項時,會*覆蓋*作業系統的預設憑證包。此檔案需包含任意數量的公開憑證,格式為 PEM

獲取憑證有兩種方式:

向憑證授權機構(CA)申請憑證

最常見的做法是透過憑證授權機構(CA),如 Let's Encrypt 申請憑證。這比自簽憑證麻煩,但更「正式」,可清楚證明身份。這類憑證會被主流瀏覽器等應用信任,而自簽憑證則需額外設定才會被接受。

這類憑證在 Godot 及其匯出專案中無需用戶端設定,因為 Godot 已內建 Mozilla 憑證包。

產生自簽名憑證

大多數情境建議直接用 CA(如 Let's Encrypt),因為免費又簡單。但若無法用 CA,可自行產生自簽名憑證,並在用戶端信任該憑證。

建立自簽名憑證時,請產生一組私鑰/公鑰,將公鑰(PEM 格式)加入專案設定中的 CRT 檔。

警告

私鑰必須**僅存放於伺服器**,切勿放入用戶端,否則憑證安全性會被破壞。

警告

當你把自簽名憑證指定為 TLS 憑證包後,Godot 仍會檢查憑證的 CN(通用名稱) 與替代名稱以驗證網域。詳見 TLSOptions 可自訂驗證規則。

開發階段可用 Crypto.generate_self_signed_certificate 讓 Godot 直接產生自簽名憑證。

另外也可以參考 OpenSSL 的官方文件,如 產生金鑰產生憑證